Documentation

Servidor MCP (Strategy)

Conecte um agente de IA diretamente à API de Armazenamento de Estratégia via Model Context Protocol — salve, busque e gerencie objetos de Strategy DSL como ativos independentes, sem depender de nenhum backtest ou subscription ao vivo.

#Visão geral

O emidlabs-strategy-mcp é um servidor Model Context Protocol (MCP) hospedado que expõe a API de Armazenamento de Estratégia como tools chamáveis por agente — uma estratégia salva aqui ganha um id estável que você pode referenciar depois, ou pode passar sua definição direto pro submit_backtest do emidlabs-backtest-mcp ou pro create_subscription do emidlabs-live-mcp.

Endpoint: https://mcp.strategy.emidlabs.com/mcp (transporte Streamable HTTP).

Esse servidor é armazenamento puro — ele nunca roda uma estratégia, e nunca interpreta a DSL além de checar se é um JSON bem formado. O que os campos de uma estratégia realmente significam em tempo de execução (se riskManagement fecha uma posição, se entryFeePct se aplica) depende inteiramente de pra onde você submeter depois — submit_backtest ou create_subscription, não este servidor.

#Conectando um agente

Funciona comClaudeChatGPTCursor+ any MCP client
1

Escolha seu cliente

Claude e ChatGPT descobrem esse servidor automaticamente via OAuth. Cursor e a maioria dos coding agents preferem o bloco JSON cru abaixo.

2

Adicione o conector

Adicione o servidor na configuração do seu cliente MCP. O arquivo exato varia por cliente, mas o formato é o mesmo em todo lugar — um nome e uma URL:

mcp config (ex: claude_desktop_config.json)
{
  "mcpServers": {
    "emidlabs-strategy": {
      "url": "https://mcp.strategy.emidlabs.com/mcp"
    }
  }
}
Alguns clientes (ex: o diálogo "Add custom connector" do Claude) pedem uma URL simples em vez desse bloco JSON. Cole o endereço completo incluindo o caminho /mcp https://mcp.strategy.emidlabs.com/mcp, não só mcp.strategy.emidlabs.com. Esquecer o caminho é o motivo mais comum de um conector falhar ao registrar, e o erro resultante raramente deixa a causa real óbvia.
3

Autentique

Três formas de autenticar, e você pode combinar mais de uma — o conector tenta na ordem abaixo:

MétodoComoMelhor para
Login via OAuth (recomendado)Só adicione o conector sem configuração extra. Claude/ChatGPT descobrem o fluxo de login automaticamente e pedem pra você entrar com sua conta EmidLabs — uma API key dedicada é criada pra sua conta na primeira vez e reutilizada depois disso.Conectores pessoais no Claude.ai / ChatGPT. Nada pra copiar, colar ou digitar — nunca.
Header x-api-keyConfigure uma API key específica da EmidLabs uma vez ao adicionar o conector (ex: a opção "custom header" / static_headers do Claude) — anexada automaticamente em toda requisição a partir daí.Conectores gerenciados por organização, onde um admin quer que todo membro compartilhe uma key específica em vez de logins OAuth individuais.
Argumento na toolPasse uma API key como strategyApiKey em cada chamada — o agente recebe a key diretamente (ex: na conversa).Coding agents, uso local/CLI, ou qualquer cliente sem suporte a autenticação no nível do conector.
Precedência quando mais de um está presente: header, depois OAuth, depois o argumento — se nenhum se aplica, toda chamada de tool falha rápido com um erro claro nomeando as três opções, nunca uma falha de autenticação silenciosa ou ambígua. Entrar via OAuth concede automaticamente a mesma key que os servidores MCP de Backtest e Live já usam (ou cria uma, na primeira vez) — um login cobre os três conectores, sem etapa de registro separada.

#Tools

save_strategy

Salva um objeto de Strategy DSL como um ativo independente de primeira classe — sem depender de nenhum backtest ou subscription ao vivo. Retorna um id estável.

ArgumentoTipoDescrição
strategyApiKeystring (opcional)Desnecessário se você conectou via login OAuth ou o header x-api-key está configurado nesse conector.
namestringNome legível pra essa estratégia.
descriptionstring (opcional)Notas em texto livre sobre essa estratégia.
definitionobjectO objeto de Strategy DSL — veja o resource strategy-dsl-spec abaixo.
tagsstring[] (opcional)Rótulos livres pra filtrar depois via list_strategies.
strategyBaseUrlstring (opcional)Usa a API pública de produção por padrão.

get_strategy

Busca uma estratégia salva pelo id, incluindo sua definição completa.

ArgumentoTipoDescrição
strategyApiKeystring (opcional)Desnecessário se você conectou via login OAuth ou o header x-api-key está configurado nesse conector.
idstringO id retornado por save_strategy.
strategyBaseUrlstring (opcional)Usa a API pública de produção por padrão.

list_strategies

Lista as estratégias salvas dessa conta, paginado, opcionalmente filtrado por tag e/ou status. Cada item inclui a definition completa — sem precisar de uma busca separada só pra navegar.

ArgumentoTipoDescrição
strategyApiKeystring (opcional)Desnecessário se você conectou via login OAuth ou o header x-api-key está configurado nesse conector.
tagstring (opcional)Filtra pras estratégias que carregam essa tag.
statusstring (opcional)"Active" ou "Archived". Usa Active-only por padrão quando omitido.
pageinteger (opcional)Número da página, começando em 1. Padrão 1.
pageSizeinteger (opcional)Resultados por página, 1-100. Padrão 20.
strategyBaseUrlstring (opcional)Usa a API pública de produção por padrão.

Omitir status retorna só estratégias Active — passe status: "Archived" explicitamente pra ver as que você arquivou.

update_strategy

Atualiza os campos de uma estratégia salva. Passe só os campos que quer mudar — campos omitidos mantêm o valor atual. Sobrescreve no lugar; ainda não há histórico de versões.

ArgumentoTipoDescrição
strategyApiKeystring (opcional)Desnecessário se você conectou via login OAuth ou o header x-api-key está configurado nesse conector.
idstringO id retornado por save_strategy.
namestring (opcional)Novo nome. Omita pra manter inalterado.
descriptionstring (opcional)Nova descrição. Omita pra manter inalterado.
definitionobject (opcional)Novo objeto de Strategy DSL. Omita pra manter inalterado.
tagsstring[] (opcional)Nova lista de tags — substitui as tags existentes por completo. Omita pra manter inalterado.
strategyBaseUrlstring (opcional)Usa a API pública de produção por padrão.

archive_strategy

Arquiva uma estratégia salva — soft-delete, muda o status pra Archived, nunca apaga de verdade. Estratégias arquivadas continuam existindo e continuam buscáveis via get_strategy, elas só ficam de fora da listagem padrão de list_strategies.

ArgumentoTipoDescrição
strategyApiKeystring (opcional)Desnecessário se você conectou via login OAuth ou o header x-api-key está configurado nesse conector.
idstringO id retornado por save_strategy.
strategyBaseUrlstring (opcional)Usa a API pública de produção por padrão.

#Resources

strategy-dsl-spec

Uma referência condensada, em markdown, pro formato JSON exato de Strategy DSL esperado pelo campo definition de save_strategy (emidlabs://strategy-dsl-spec) — essa é a cópia canônica: emidlabs-strategy-api é o dono do domínio do que é uma Strategy, então esse servidor é a fonte de verdade de como construir uma.

A seção de inputs/conditions/score — a parte que é genuinamente idêntica não importa onde a estratégia acabe rodando — é buscada em tempo real do próprio GET /dsl-core-reference do strategy-api e cacheada por alguns minutos, em vez de copiada à mão. Os três servidores MCP (backtest, live, e este) buscam esse mesmo núcleo e o encaixam no próprio conteúdo local, então essa parte não consegue dessincronizar entre eles.

Ler esse resource primeiro é opcional, não obrigatório — todo campo no próprio schema da tool save_strategy já documenta seu formato exato diretamente, já que clientes MCP não buscam de forma confiável um resource separado antes de gerar uma chamada.

#Limites de taxa

Dois limites independentes se aplicam, e eles aparecem de forma diferente de propósito pra nunca serem confundidos entre si:

LimiteEscopoO que protegeO que você vê
Cota do strategy-apiPor API keyO limite real de uso/faturamento da sua contaUm 4xx do strategy-api, repassado como erro de tool do MCP.
Guarda de infra do MCPPor IP/conexãoO processo do MCP em si, contra loops descontrolados ou enxurradas malformadasUm 429 com uma mensagem identificando explicitamente que é a guarda da própria camada MCP, não a cota da sua conta.

#Escopo

Esse servidor só expõe armazenamento de estratégia — salvar, buscar, listar, atualizar e arquivar definições de estratégia. Ele nunca submete um backtest nem cria uma subscription ao vivo por conta própria (use o emidlabs-backtest-mcp ou o emidlabs-live-mcp pra isso), e não expõe nenhuma ação do Console (criar ou rotacionar API keys, mudar planos de cobrança, gestão de conta).