NegativeEV bet checker
Avalie qualquer aposta contra milhares de simulações de jogo jogada a jogada — probabilidade real de vitória, odds implícitas e vantagem para cada perna.
Documentação
NegativeEV auth.md
NegativeEV (https://negativeev.com) é um verificador de apostas. Visitantes anônimos recebem 10 verificações gratuitas por dia; ao fazer login, as verificações se tornam ilimitadas (limitadas por um teto por hora). Não há uma API de agente separada — agentes usam os mesmos endpoints HTTP do aplicativo web, sob as mesmas cotas e limites de taxa. O servidor MCP é a única exceção: ele é medido em seu próprio contador, de forma mais generosa (veja abaixo).
Como a autenticação funciona
- O servidor de autorização é o Supabase, não esta origem. Seus metadados de descoberta OIDC estão em https://bnmlyacvflqcwslhcxua.supabase.co/auth/v1/.well-known/openid-configuration e são espelhados nesta origem para descoberta: https://negativeev.com/.well-known/openid-configuration e https://negativeev.com/.well-known/oauth-authorization-server
- negativeev.com é o recurso protegido: ele verifica JWTs emitidos pelo Supabase
enviados como
Authorization: Bearer <access token>. Metadados de recurso legíveis por máquina (RFC 9728): https://negativeev.com/.well-known/oauth-protected-resource - Humanos fazem login com um código único por e-mail em https://negativeev.com/
O que o servidor de autorização suporta
Leia o documento de descoberta do próprio Supabase, que é a autoridade; esta lista é uma conveniência, não uma segunda fonte de verdade.
- Concessões:
authorization_codeerefresh_token. Não há concessãoclient_credentials— veja a próxima seção para entender o que isso significa. - PKCE é suportado com
S256. Use-o: um agente controlando um navegador não tem onde guardar um segredo de cliente. - Escopos:
openid,profile,email,phone,offline_access. Esta origem precisa apenas deopenid profile emailpara identificar quem está por trás de uma verificação; peçaoffline_accesssomente se você realmente precisar atualizar sem supervisão. - Tokens são JWTs RS256/HS256/ES256, enviados a esta origem como
Authorization: Bearer. Um endpoint protegido recusa um token inválido ou expirado com 401 e um cabeçalhoWWW-Authenticate: Bearernomeando os metadados de recurso acima — reautentique em vez de tentar novamente anonimamente.
O que isso significa para agentes
- Um agente age EM NOME DE um usuário conectado, sempre. Não há
concessão
client_credentials: nada aqui emite um token para um programa agindo como ele mesmo. A única credencial que um programa pode ter é uma chave de agente que um membro criou para ele (próxima seção), e essa chave carrega as próprias permissões do membro, não uma identidade separada. - O registro dinâmico de cliente (RFC 7591) é suportado, então um host MCP pode
se registrar sem que ninguém crie um cliente manualmente. O registro sozinho
não concede nada — toda autorização é decidida pelo usuário conectado em
https://negativeev.com/oauth/consent,, que nomeia o cliente e os escopos
que ele solicitou. O
registration_endpointestá nos metadados do servidor de autorização vinculados acima. - O caminho mais simples ainda funciona e não requer registro: envie o
token de acesso Supabase de um usuário conectado como
Authorization: Bearernas requisições (incluindo chamadas de ferramentas MCP), ou use o site na sessão do navegador do usuário. - O acesso anônimo também funciona; a cota diária gratuita é medida por dispositivo.
Chaves de agente (opcional, somente para membros)
Um membro conectado pode criar uma chave que carrega as mesmas permissões que sua sessão web — a mesma cota por hora, o mesmo acesso ao simulador — para que um agente, um script ou um cliente MCP possa agir como ele sem manter uma sessão Supabase. O acesso anônimo permanece sem chave; uma chave nunca é obrigatória.
- Criar:
POST https://negativeev.com/keyscom um token de acesso Supabase comoAuthorization: Bearere o corpo{"name": "<a label>"}. Responde{"id", "name", "prefix", "key", "created_at"}. Okey(nev_seguido por 43 caracteres) é mostrado apenas uma vez; apenas seu SHA-256 é armazenado. - Usar: envie-o como
Authorization: Bearer nev_…em qualquer requisição coberta por este documento, incluindo chamadas de ferramentas MCP. Uma vez revogada, ela não autentica nada: as rotas medidas tratam a chamada como anônima, o endpoint MCP a recusa com 401, e as rotas exclusivas para membros respondem 401. - Listar:
GET https://negativeev.com/keys— ids, nomes, prefixos e datas, nunca um texto simples ou um hash. - Revogar:
POST https://negativeev.com/keys/revokecom{"id": "<key id>"}. - Uma chave não pode criar, listar ou revogar chaves: essas três rotas aceitam apenas um token de acesso Supabase e respondem 403 a uma chave.
Servidor MCP
Um servidor MCP sem estado (transporte HTTP Streamable) está disponível em
POST https://negativeev.com/mcp — cartão do servidor em
https://negativeev.com/.well-known/mcp/server-card.json
Ferramentas: check_bet (avaliar uma aposta a partir de texto — gasta uma das verificações de quem chama
quando avalia completamente), get_slate (existe um quadro verificável agora —
gratuita), get_usage (verificações restantes — gratuita). Chamadas de ferramentas anônimas têm sua própria
cota por dispositivo de 100 verificações por dia — um contador separado dos 10 do
aplicativo web, então o tráfego de agentes nunca consome as verificações gratuitas de um navegador. Envie um token de acesso
Supabase como Authorization: Bearer no POST para verificações ilimitadas (limitadas a 1000
por hora).
Exemplos de prompts
Prompts que um usuário pode dar a qualquer assistente conectado a MCP para exercitar as ferramentas:
- "Shohei Ohtani acima de 1,5 bases totais a -120 é uma boa aposta hoje à noite?" —
check_betavalia contra milhares de jogos simulados e retorna a probabilidade real, a probabilidade implícita do preço e a vantagem. - "Existe um quadro verificável de MLB hoje à noite?" —
get_slateresponde por esporte ao vivo, gratuitamente, antes de qualquer verificação ser gasta. - "Quantas verificações de apostas me restam hoje?" —
get_usageinforma a cota restante e quando a próxima verificação será liberada. - "Aqui está minha aposta múltipla: Ohtani acima de 0,5 home runs +280 e moneyline dos Dodgers
-150. Vale a pena?" —
check_betprecifica cada perna e a múltipla combinada.
Endpoints que agentes podem chamar
JSON de mesma origem, com cota e limite de taxa, ainda não documentado como uma API pública estável (formatos podem mudar sem aviso):
GET /slate— existe um quadro verificável agora?POST /extract— analisar uma aposta a partir de texto:{"text": "<bet text>"}POST /check— avaliar as pernas analisadas (envie os campos/extractretornados)GET /usage— verificações restantes para quem chama
Uma requisição recusada (cota, limite de taxa, jogo iniciado) retorna um erro JSON explicativo. Descoberta: /.well-known/api-catalog, /sitemap.xml, e o índice de habilidades de agente em /.well-known/agent-skills/index.json