ScaledThought
Servidor MCP remoto para uma conta ScaledThought (uma API compatível com OpenAI para modelos de peso aberto que seu agente de codificação configura por conta própria): chaves de API, orçamentos por chave, uso e recargas pré-pagas. Requer uma chave de API: npx -y scaledthought@latest init --region us
Servidor MCP hospedado
npx add-mcp 'https://api.us.scaledthought.com/mcp?source=org-mcpsrv'Instala no Claude Code, Codex, Cursor e outros
Documentação
ScaledThought
Os modelos open-weight mais recentes em uma única API compatível com OpenAI, configurados pelo seu agente em um único prompt. As chamadas são pagas com créditos pré-pagos que seu humano aprova. Hospedado nos EUA, com Canadá em breve. Seu agente cuida do cadastro, pagamento e gerenciamento da conta.
Retenção zero de dados (ZDR). Prompts e completions de requisições de API nunca são armazenados ou registrados, e nunca são usados para treinar modelos (exceto trabalhos de fine-tuning que você executa para sua própria conta). Toda resposta da API carrega x-st-data-retention (none; endpoints de vídeo informam por quanto tempo mantêm o vídeo). Quando um provedor externo atende uma requisição, ele é nomeado em x-st-subprocessor, e recebe requisições apenas sob termos de retenção zero e sem treinamento. O único conteúdo mantido é o que você pede para mantermos: arquivos de entrada e saída de batch e datasets de fine-tuning, na sua região, até você excluí-los ou por 30 dias, e adaptadores de fine-tuning até você excluir o modelo.
Você está lendo a superfície de agente deste site. Cadastro, chaves, orçamentos, cobrança e inferência funcionam via CLI, API e o servidor MCP descrito abaixo. Seu humano também tem um painel (cobrança, chaves, colegas de equipe, agentes conectados) que você abre para ele com dashboard.
Protocolo de configuração
Se seu humano pediu para você configurá-lo no ScaledThought, siga estes passos em ordem. Todo comando é não interativo. Ele imprime um objeto JSON em stdout e sai com código 0. Em falha, imprime {"error":{"code","message","hint"}} em stderr e sai com código não zero; procure o código em Errors.
Se seu humano preferir fazer ele mesmo, ele pode criar uma conta e chaves de API em https://app.us.scaledthought.com/sign-up?source=org-mcpsrv (apenas contas dos EUA por enquanto; ele entra com um link enviado para o e-mail dele).
Versão curta. Copie cada comando exatamente como escrito, incluindo as flags. Os passos abaixo dizem o que cada um imprime e quando perguntar ao seu humano primeiro.
npx -y scaledthought@0.3 models --live --region us # what's live; no account needed
npx -y scaledthought@0.3 init --region us --source org-mcpsrv # the account; its key goes to ./.env
npx -y scaledthought@0.3 billing topup --amount-usd 20 # a payment link for your human; charges nothing
npx -y scaledthought@0.3 billing wait # after they have the link: polls ~90 s, "paid" once they pay; on topup_pending run it again
npx -y scaledthought@0.3 chat -m deepseek-v4-1-flash "Reply with OK" # verify (or init's suggested_model)
Antes do seu humano pagar, toda completion retorna 402 insufficient_credits. Isso é esperado: dê a ele o link billing topup e continue, não pare aí. Se ele já tem uma conta, use login em vez de init (passo 2). Se os dados puderem ser regulados pelo Canadá, pergunte primeiro (passo 1).
0. Verifique o que está ativo primeiro (sem conta, nada escrito)
Antes de criar qualquer coisa, verifique se os modelos e preços ativos atendem à tarefa. Isso não precisa de chave nem conta, e não escreve nada no disco:
npx -y scaledthought@0.3 models --live --region us
Sucesso: um array JSON, do mais novo para o mais antigo, com o id de cada modelo, modality e preços (USD por 1M de tokens). Se nada atender à tarefa, pare aqui e avise seu humano em vez de se cadastrar.
O que a CLI faz nesta máquina. Ela roda via npm como scaledthought@0.3: fixada nesta major.minor, então só recebe releases de patch e não pode mudar durante a configuração (estas instruções mudam para o próximo pin quando ele for lançado). Ela não escreve nada exceto ./.env (modo 0600: ST_API_KEY e ST_BASE_URL, outras linhas mantidas) e uma linha .env em ./.gitignore, ambos de init (ou login). init e login também mantêm a chave da conta no armazenamento de credenciais desta máquina (Keychain do macOS ou Secret Service do Linux, senão ~/.config/scaledthought/credentials.json, modo 0600) para que outra pasta na mesma máquina reutilize a conta em vez de criar uma nova; --no-save opta por não fazer isso. login mantém seu código de dispositivo único em ./.scaledthought/login.json (modo 0600, adicionado a ./.gitignore) até a chave chegar. billing topup, billing auto-reload setup e login abrem uma página no navegador padrão (--no-open ou ST_NO_BROWSER=1 para impedir isso). Ela fala apenas com api.us.scaledthought.com / api.ca.scaledthought.com (e npm, para se baixar). Sem telemetria, sem analytics. Chaves vêm de ST_API_KEY ou ./.env, nunca de flags, e nunca são impressas.
1. Escolha a região de origem
- Apenas a região dos EUA está aberta. Canadá (
ca) está chegando em breve e ainda não aceita contas: sua API ainda não responde:init --region cafalha comnetwork_error, e requisições ao host canadense não recebem resposta (o hostname ainda não resolve). Use--region us. - Se os dados puderem ser regulados pelo Canadá (dados pessoais, de saúde ou financeiros canadenses; PIPEDA, Lei 25 de Quebec, leis provinciais de privacidade de saúde), pare e faça uma pergunta primeiro: "A região do Canadá ainda não está aberta. A hospedagem nos EUA é aceitável para esses dados?" Continue com
usapenas se a resposta for sim. - Caso contrário, use
ussem perguntar. - A região é permanente. Registros de conta e uso são armazenados nesse país; prompts e completions de requisições de API nunca são armazenados (retenção zero de dados). Pagamentos com cartão são processados pela Stripe nos EUA. Chaves começam com
st_us_(oust_ca_quando o Canadá abrir), e esse prefixo decide para onde cada requisição vai.
2. Crie a conta
Se seu humano já tem uma conta ScaledThought (ele diz isso, ou esta é uma máquina nova, um contêiner ou o laptop de um colega), não crie outra: conecte-se a ela com npx -y scaledthought@0.3 login (veja Connect this agent to an existing account).
Execute isto no diretório do projeto do humano, onde o código dele lerá .env:
npx -y scaledthought@0.3 init --region us --source org-mcpsrv
Criar uma conta não aceita nada em nome do seu humano: sem termos, sem pagamento. Ele aceita os Terms of Service e a política de Credits & Refunds ele mesmo, na página de pagamento, quando comprar créditos. Até lá, a conta não pode ser usada para nada cobrado.
--source org-mcpsrv é o código de campanha do link que seu humano compartilhou (scaledthought.com/go/org-mcpsrv). Ele é armazenado na nova conta para sabermos qual campanha funcionou, e nada mais. Mantenha-o no comando como escrito; remova-o apenas se seu humano pedir.
Sucesso: código de saída 0 e JSON com "already_initialized": false, account_id, region, base_url, terms (url, version, refund_policy_url, notice), balance_usd, needs_credits, next_command, newest_models, suggested_model e next_steps. Uma conta nova não tem créditos ("needs_credits": true), então next_command é o recarga abaixo. Ela também:
- escreve
ST_API_KEYeST_BASE_URLem./.env(modo 0600), mantendo quaisquer outras linhas; - adiciona
.enva./.gitignore; - nunca imprime a chave. Não a imprima, cole no chat ou faça commit.
Reexecutar é seguro. Se ST_API_KEY já estiver definido (no ambiente ou em ./.env), o init não cria nada e retorna a conta existente com "already_initialized": true. Use essa conta. Se sair com region_mismatch, uma chave da outra região já existe: pergunte ao humano antes de fazer qualquer outra coisa.
Em uma máquina onde uma conta já está salva (um init ou login anterior), o init não cria uma nova. Com uma conta salva, ele escreve uma nova chave de projeto para esta pasta e retorna "reused_account": true com account_name. Com várias, ele retorna choose_account (nomes, saldos, último uso) e uma pergunta message_for_human, e não cria nada: pergunte, depois execute init --account "<name or id>". init --new-account cria uma conta separada mesmo assim (para cobrança separada).
Connect this agent to an existing account
Quando seu humano já tem uma conta (uma máquina nova, uma segunda ferramenta, um contêiner), conecte-se a ela em vez de executar o init:
npx -y scaledthought@0.3 login --region us
Ele imprime user_code (como WDJB-MJHT), verification_url (a página de conexão do painel, aberta no navegador dele; o código nunca está na URL) e message_for_human. Diga a ele a mensagem: ele entra por e-mail e digita o código. Na mesma rodada, execute:
npx -y scaledthought@0.3 login --wait
Ele retorna "status": "connected" com account_id, account_name, key_name e scopes assim que ele aprovar, e escreve uma nova chave em ./.env (nunca impressa). A chave pode fazer o que o aprovador pode: a aprovação de um proprietário dá todos os escopos, a de um membro apenas inference e read. Em authorization_pending, execute novamente, por até 10 minutos. Se seu humano lhe der uma linha do painel como Connect to my ScaledThought account: npx -y scaledthought@0.3 login --code stl_…, passe o código via stdin para que ele não fique no histórico do shell: echo '<the stl_ code>' | npx -y scaledthought@0.3 login --code -. Ele já está aprovado e funciona uma vez, por 15 minutos. Para apontar esta pasta para outra conta salva nesta máquina: use "<name>".
O init de uma conta nova também imprime existing_account_code, e billing topup o adiciona a message_for_human: se o humano já tem uma conta, ele clica em Use it instead na página de financiamento, escolhe-a e digita esse código. Então billing wait retorna "status": "connected_existing" com o account_name e balance_usd dessa conta: a conta nova e vazia que o init criou é fechada (nada é cobrado) e a chave em ./.env agora pertence à conta existente dele. Continue com ela.
3. Escolha um modelo ativo na região
Escolha entre o que está ativo na região agora:
npx -y scaledthought@0.3 models --live
Sucesso: um array JSON, do mais novo para o mais antigo. Cada item tem id, category, modality, live: true e preços. Use o primeiro item cujo modality seja chat (o suggested_model do init é a mesma escolha). Sem a CLI, GET $ST_BASE_URL/models retorna os IDs de modelos ativos no formato de lista da OpenAI (sem autenticação). A mesma lista com preços, para um humano: https://scaledthought.com/pricing
Antes do passo 4: obtenha créditos (seu humano paga)
A inferência é pré-paga e uma conta nova não tem créditos: até seu humano pagar, toda completion retorna 402 insufficient_credits. Isso é esperado, não é uma configuração quebrada. Não pare no 402, não tente a chamada novamente e não crie outra conta: crie o link de recarga imediatamente e dê ao seu humano. Criar um link não cobra nada (apenas o humano pode pagar, na página que ele abre), então você não precisa perguntar antes de criar um. Pule este passo se billing status já mostrar balance_usd acima de 0.
npx -y scaledthought@0.3 billing topup --amount-usd 20
Ele abre a página de financiamento no navegador do seu humano (opened_in_browser: true; --no-open pula isso). Lá ele confirma o valor ($20, ou outro de $20 a $2.000), pode ativar a recarga automática (recomendado: abaixo de $5, adicionar $20, para você não parar depois), então aceita os Termos e a política de Credits & Refunds e paga com cartão no checkout da Stripe. Nada é cobrado até ele aprovar, e enviamos um recibo por e-mail. Créditos comprados não utilizados podem ser reembolsados dentro da janela de reembolso da política. Sucesso: JSON com topup_id, approval_url, expires_at, opened_in_browser e message_for_human (ele diz tudo isso e recomenda recarga automática; adicione --auto-reload-below 5 --auto-reload-amount 20 para pré-selecioná-la).
Se opened_in_browser for true (o caso usual), a página de financiamento já está na frente do seu humano, então não faça ele te avisar quando pagar:
- Diga a ele com
message_for_human(tem oapproval_urlcaso a página não tenha aberto; se você usar suas próprias palavras, copie o link exatamente: é um link de pagamento de uso único). - Na mesma rodada, execute:
npx -y scaledthought@0.3 billing wait # {"status":"paid", ...} with the balance, as soon as they pay
Ele faz polling por cerca de 90 segundos (abaixo do limite usual de 2 minutos de uma ferramenta de shell). Em topup_pending, execute novamente, por até 15 minutos no total. Então vá para o passo 4.
3. Se ainda estiver não pago após 15 minutos, termine sua rodada com message_for_human e execute billing wait novamente quando ele voltar.
Se opened_in_browser for false (uma máquina headless, um contêiner, --no-open), ele ainda não tem a página: termine sua rodada com message_for_human, porque muitas ferramentas de agente mostram suas mensagens apenas quando a rodada termina, e uma espera iniciada primeiro seguraria o link. Quando ele voltar, execute billing wait, então vá para o passo 4.
Não crie um novo link enquanto um estiver pendente (topup_pending repete seu approval_url). Se o link expirou ou falhou (topup_expired, topup_failed), execute billing topup novamente. Para ativar a atualização automática depois sem comprar nada: billing auto-reload setup (mesmo fluxo; o humano salva um cartão). Sem a CLI: POST /v1/billing/topup {"amount_usd": 20} (ou POST /v1/billing/auto-reload/setup), abra o approval_url no navegador deles você mesmo (macOS open, Linux xdg-open, Windows start) e consulte GET /v1/billing/topups/{topup_id} até que status seja paid; via MCP, billing_topup.
4. Verifique com uma conclusão real
set -a; . ./.env; set +a # load ST_API_KEY and ST_BASE_URL
curl -sS "$ST_BASE_URL/chat/completions" \
-H "Authorization: Bearer $ST_API_KEY" \
-H "content-type: application/json" \
-d '{"model":"<id from step 3>","max_tokens":32,"messages":[{"role":"user","content":"Reply with OK"}]}'
Sucesso: HTTP 200, um choices[0].message.content não vazio e um objeto usage. Um 402 aqui significa que a recarga acima ainda não foi paga: volte a ela. A CLI faz o mesmo em uma única etapa:
npx -y scaledthought@0.3 chat -m deepseek-v4-1-flash "Reply with OK" # or the id from step 3; JSON: model, region, text, usage
5. Opcional: conecte o MCP
Somente se o humano quiser ferramentas de conta (uso, chaves, orçamentos, cobrança) dentro do cliente MCP. O MCP precisa de uma chave, então vem após a etapa 2.
npx -y scaledthought@0.3 mcp
Sucesso: JSON com url (o /mcp da região), claude_code (um comando claude mcp add --transport http scaledthought … --header "Authorization: Bearer $ST_API_KEY" pronto) e json_config para outros clientes. Execute claude_code em um shell onde ST_API_KEY está carregado (veja a etapa 4), porque o shell o expande.
6. Encontre onde isso se encaixa neste código
A configuração está concluída; agora ajude o humano a usá-la. Examine o projeto em que ele está trabalhando (somente leitura, nesta máquina) e encontre todos os lugares onde um modelo poderia fazer o trabalho:
- Chamadas de modelo hoje: imports de SDK de modelos OpenAI, Anthropic, Gemini ou outros; configurações de
base_url/baseURL; chamadas HTTP brutas para uma API de modelo; configuração de LangChain, LlamaIndex ou Vercel AI SDK; nomes de modelos codificados; arquivos de prompt. - Embeddings e busca: chamadas de embedding, armazenamentos de vetores, busca semântica ou pipelines de RAG.
- Trabalho em lote e offline: jobs, scripts ou filas que enviam muitos prompts de uma vez (candidatos a lote).
- Lugares sem modelo ainda: regras escritas à mão para classificar, extrair, etiquetar, resumir ou rotear texto, e TODOs que pedem um modelo.
Para cada um, verifique npx -y scaledthought@0.3 models --live para um modelo ativo da modalidade certa e seu preço por token, e GET $ST_BASE_URL/models/<id> para seu comprimento de contexto. Chamada de ferramentas e saída json_schema funcionam em modelos que as suportam: confirme com uma solicitação de teste antes de recomendar um modelo para um lugar que precise delas. Depois, dê ao humano uma tabela curta: arquivo e linha, o que faz hoje, o id do modelo que poderia atendê-lo e a mudança (geralmente a URL base, a chave e o id do modelo, já que a API é compatível com OpenAI). Observe qualquer coisa que não se encaixe (um recurso ou modalidade que nenhum modelo ativo tem) em vez de forçar.
Regras:
- Somente leitura. Altere código ou configuração apenas depois que o humano escolher o que trocar.
- A busca permanece nesta máquina: não envie o código, prompts ou dados deles para lugar nenhum para fazê-la.
- Sugira tentar uma troca em algumas entradas reais primeiro (cobradas dos créditos deles, após concordarem) e comparar a saída, antes de mover tráfego de produção.
- Cada lugar implantado recebe sua própria chave com
npx -y scaledthought@0.3 keys put <platform>(veja Chaves para outros lugares), com um orçamento diário se quiserem. Nunca copie chaves para o código. - Sem chamadas de modelo e nada que obviamente precise de uma? Diga isso em uma linha; não invente trabalho.
7. Informe o humano
Relate em poucas linhas:
- Região:
us. Prompts, conclusões e registros de conta permanecem nos EUA; pagamentos com cartão são processados pela Stripe nos EUA. O Canadá está chegando em breve. - Créditos: o saldo de
npx -y scaledthought@0.3 billing status(balance_usd), e que a inferência é paga dele por token. Até a primeira compra de créditos, a conta tem 60 solicitações/min por chave e até 5 chaves. - Chave: em
./.envcomoST_API_KEY(ignorado pelo git), comST_BASE_URL. Qualquer SDK da OpenAI funciona com esses dois valores. - Verificado: qual modelo respondeu, da etapa 4.
- Onde se encaixa: a tabela da etapa 6 (ou que você não encontrou chamadas de modelo), e pergunte quais trocar.
- Mais créditos:
npx -y scaledthought@0.3 billing topup --amount-usd <n>($20 a $2.000 por recarga, no máximo $2.000 por 24 horas e 2 links de aprovação abertos por vez) retorna umapproval_urlpara eles; nada é cobrado sem a aprovação deles. Recarga automática opcional: veja Preços. - Painel:
npx -y scaledthought@0.3 dashboardabre no navegador deles (cobrança, chaves, colegas de equipe). A pessoa que pagou é a proprietária e recebeu um e-mail de login; se não estiver conectada, um clique envia um link por e-mail (sem senha). Somente contas dos EUA por enquanto: links de login são enviados por e-mail apenas na região dos EUA. - Termos: eles aceitaram os Termos de Serviço e a política de Créditos e Reembolsos eles mesmos ao pagar; nada foi aceito em nome deles. Créditos comprados não utilizados podem ser reembolsados dentro da janela de reembolso da política.
Use a partir do código
Compatível com OpenAI. Leia a URL base de ST_BASE_URL; não codifique o host de uma região.
import os
from openai import OpenAI # pip install openai; load .env first, e.g. python-dotenv's load_dotenv()
client = OpenAI(base_url=os.environ["ST_BASE_URL"], api_key=os.environ["ST_API_KEY"])
resp = client.chat.completions.create(
model="deepseek-v4-1-flash", # or a model id from `npx -y scaledthought@0.3 models --live`
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)
import OpenAI from "openai"; // npm i openai
process.loadEnvFile(); // Node 20.12+: reads ./.env
const client = new OpenAI({ baseURL: process.env.ST_BASE_URL, apiKey: process.env.ST_API_KEY });
const resp = await client.chat.completions.create({
model: "deepseek-v4-1-flash", // or a model id from `npx -y scaledthought@0.3 models --live`
messages: [{ role: "user", content: "Hello" }],
});
console.log(resp.choices[0].message.content);
curl -sS "$ST_BASE_URL/chat/completions" \
-H "Authorization: Bearer $ST_API_KEY" \
-H "content-type: application/json" \
-d '{"model":"deepseek-v4-1-flash","messages":[{"role":"user","content":"hi"}]}'
Streaming (stream: true), ferramentas, response_format e embeddings (POST $ST_BASE_URL/embeddings com um modelo de embedding) usam as formas de solicitação da OpenAI. Chamada de ferramentas e saída json_schema funcionam em modelos que as suportam; valide a saída estruturada antes de confiar nela. Solicitações sem max_tokens recebem um limite padrão. Cada resposta de inferência carrega x-st-region e x-st-request-id.
API de Respostas e Codex
POST $ST_BASE_URL/responses fala a API de Respostas da OpenAI, então clientes que usam apenas esse protocolo, como Codex, podem usar ScaledThought como provedor de modelo. Ela aceita input (uma string, ou itens de mensagens, function_call e function_call_output), instructions, ferramentas de função e personalizadas (formato livre), tool_choice, max_output_tokens, text.format para saída JSON e stream: true (eventos de Respostas, terminando com response.completed ou response.incomplete com seu usage, ou response.failed com um error).
Ela é sem estado. Não armazenamos respostas, então envie a conversa inteira em input a cada turno (Codex faz isso) e omita previous_response_id, que retorna 400 invalid_request; store é sempre falso. Ferramentas hospedadas, como busca de arquivos, retornam 400; uma ferramenta de busca na web é ignorada. Solicitações sem max_output_tokens recebem um limite do que o contexto do modelo deixa após seu prompt, no máximo 32.768 tokens.
A cobrança é a mesma das conclusões de chat: por token, do uso que o servidor de modelo relata, pago dos seus créditos.
# ~/.codex/config.toml
model = "deepseek-v4-1-flash" # or a model id from `npx -y scaledthought@0.3 models --live`
model_provider = "scaledthought"
[model_providers.scaledthought]
name = "ScaledThought"
base_url = "https://api.us.scaledthought.com/v1" # your ST_BASE_URL
env_key = "ST_API_KEY"
wire_api = "responses"
model_catalog_url = "https://api.us.scaledthought.com/v1/codex/models" # same host (and region) as base_url
set -a; . ./.env; set +a # puts ST_API_KEY in the environment
codex
- Codex lê
ST_API_KEYdo ambiente, então carregue./.envno shell primeiro.wire_api = "responses"é obrigatório: ScaledThought atende Codex pela API de Respostas. model_catalog_urlinforma ao Codex as janelas de contexto dos modelos ativos na sua região, para que ele compacte sessões longas a tempo, e dá a ele sua ferramenta de ediçãoapply_patch. É construído a partir dos modelos ativos a cada solicitação; Codex envia sua chave com ele, então mantenha-o no mesmo host quebase_url(o da sua região).
Erros
Erros de API são {"error":{"message","type","code"}} com o status HTTP abaixo. Erros de CLI são {"error":{"code","message","hint"}} no stderr; para falhas de API, a CLI repassa o code da API e adiciona status (e retry_after ou base_url quando presentes).
| status | código | de | o que fazer |
|---|---|---|---|
| 400 | invalid_request | API | Corrija o campo indicado na mensagem. Não tente novamente sem alterações. |
| 400 | invalid_body | API | Corrija o campo indicado na mensagem. Não tente novamente sem alterações. |
| 400 | invalid_json | API | Envie JSON válido com content-type: application/json. |
| 401 | invalid_api_key | API | Chave ausente, digitada incorretamente ou revogada. Carregue ST_API_KEY do .env; não crie uma nova conta. |
| 401 | missing_api_key | API | Envie Authorization: Bearer $ST_API_KEY. |
| 401 | key_expired | API | O expires_at da chave já passou. Use outra chave ou crie uma nova com uma chave que tenha o escopo de chaves. |
| 400 | invalid_expiry | API | expires_in ou expires_at deve estar no futuro e no máximo 365 dias à frente. Envie um, não ambos. |
| 400 | expiry_exceeds_parent | API | Uma chave não pode durar mais do que a chave que a cria. Solicite no máximo max_expires_at do corpo. |
| 403 | scope_not_allowed | API | Solicite apenas escopos que sua própria chave possui (allowed_scopes no corpo). |
| 400 | budget_exceeds_parent | API | O orçamento diário de uma chave de subagente deve caber no que sua chave pai ainda tem hoje (max_daily_budget_usd no corpo). |
| 400 | limit_exceeds_parent | API | Os limites de taxa e o orçamento de uma chave de subagente não podem exceder os da chave pai (ou, quando ela se altera, os dela mesma). |
| 400 | key_depth_exceeded | API | Chaves de subagente aninham no máximo 16 níveis. Crie a chave a partir de uma chave mais acima. |
| 404 | key_not_found | API | Não existe essa chave nesta conta, ou (para uma chave de subagente) ela está fora das chaves que você criou. |
| 409 | key_not_active | API | Apenas uma chave ativa pode ser rotacionada. Crie uma nova chave em vez disso. |
| 402 | budget_exceeded | API | O orçamento diário desta chave foi gasto. Reinicia às 00:00 UTC. Avise seu humano; não tente agora. |
| 402 | insufficient_credits | API | O saldo de créditos não cobre a solicitação (o corpo tem balance_usd e required_usd). Execute billing topup --amount-usd 20 e envie ao seu humano o approval_url. |
| 402 | daily_cap_exceeded | API | Um limite diário definido pelo operador nesta conta foi atingido. Reinicia às 00:00 UTC. Avise seu humano. |
| 402 | credits_required_for_batches | API | Lotes são pagos com créditos pré-pagos. Execute billing topup --amount-usd 20 e tente novamente após seu humano aprovar. |
| 402 | credits_required_for_fine_tuning | API | O ajuste fino é pago com créditos pré-pagos. Execute billing topup --amount-usd 20 e tente novamente após seu humano aprovar. |
| 409 | too_many_pending_topups | API | A conta já tem 2 links de aprovação não pagos. Peça ao seu humano para pagar um (billing status os lista) ou aguarde expirarem. |
| 409 | daily_topup_limit | API | Recargas são limitadas a US$ 2.000 por conta em 24 horas corridas, incluindo links abertos e recargas automáticas. Tente novamente com no máximo available_usd do corpo ou aguarde. |
| 403 | approval_required | API | Ativar ou aumentar a recarga automática requer seu humano. Execute billing auto-reload setup --below <usd> --amount <usd> (um link que seu humano aprova; nada é comprado) e forneça o approval_url. Desativar ou reduzir não requer aprovação. |
| 402 | free_tier_key_limit | API | Contas que não compraram créditos têm 5 chaves ativas. Revogue uma (keys revoke <id>) ou compre créditos. |
| 402 | free_tier_limit | API | Contas que não compraram créditos não podem aumentar orçamentos ou limites de taxa. Compre créditos primeiro (billing topup --amount-usd 20). |
| 409 | fine_tuning_requires_self_hosted | API | Este modelo base não é servido em nossas próprias GPUs na sua região, então não pode ser ajustado aqui. Escolha outro modelo base. |
| 409 | model_not_live | API | Esse modelo ainda não é servido na sua região. Escolha um de models --live. |
| 400 | invalid_video_url | API | video_url deve ser uma URL https pública ou uma URL data:video/mp4 (webm, mov) dentro do limite de tamanho. |
| 403 | insufficient_scope | API | Esta chave não tem o escopo. Use a chave padrão do init. |
| 403 | account_suspended | API | Pare. Diga ao seu humano para enviar um e-mail para hello@scaledthought.com. |
| 404 | model_not_found | API | Não está disponível aqui. Escolha um id de models --live ou GET $ST_BASE_URL/models. |
| 404 | not_found | API | Caminho errado. ST_BASE_URL já termina em /v1; acrescente /chat/completions. |
| 421 | wrong_region | API | A chave pertence à outra região. Use o base_url no corpo do erro; remova qualquer host codificado. |
| 429 | rate_limit_exceeded | API | Aguarde Retry-After segundos e tente novamente. |
| 429 | capacity_exhausted | API | Canadá: toda réplica do modelo está ocupada e solicitações canadenses nunca transbordam para outro país. Aguarde Retry-After segundos e tente novamente com backoff, ou use outro modelo. |
| 400 | invalid_webhook_url | API | URLs de webhook devem ser endpoints https públicos na porta 443 (sem outra porta, sem hosts privados, de loopback ou internos). Corrija a URL. |
| 409 | too_many_webhooks | API | Uma conta tem no máximo 5 endpoints de webhook. Remova um (webhooks remove <id>) primeiro. |
| 404 | webhook_not_found | API | Não existe esse webhook nesta conta. Liste-os com webhooks list. |
| 503 | webhooks_unavailable | API | Webhooks ainda não estão habilitados nesta região. Em vez disso, consulte GET /v1/account para notices. |
| 502 | upstream_error | API | Transitório. Tente novamente com backoff ou use outro modelo de models --live. |
| 503 | region_not_open | API | A região do Canadá ainda não está aberta. Verifique com seu humano se a hospedagem nos EUA é aceitável e use init --region us e o host dos EUA. |
| 503 | service_unavailable | API | Transitório. Tente novamente em alguns segundos. |
| exit 1 | no_key | CLI | Sem ST_API_KEY no ambiente ou em ./.env. Para uma conta existente, execute login; para uma nova, init --region us. |
| exit 1 | key_exists | CLI | login: esta pasta já tem uma chave. Use-a ou passe --force para substituí-la. |
| 428 | authorization_pending | API | login --wait: seu humano ainda não digitou o código. Execute novamente (os códigos duram 10 minutos). |
| 410 | expired_token | API | O código de conexão expirou. Execute login novamente para obter um novo. |
| 409 | already_claimed | API | Um código de conexão funciona uma vez. Execute login novamente (ou peça uma nova linha de conexão). |
| 403 | access_denied | API | Seu humano negou a conexão. Pergunte a ele antes de tentar novamente. |
| exit 1 | region_mismatch | CLI | Uma chave da outra região já existe aqui. Use-a ou pergunte ao seu humano antes de criar uma segunda conta em outro lugar. |
| exit 1 | wrong_region_endpoint | CLI | ST_BASE_URL / ST_API_URL aponta para a outra região. Remova a definição. Nada foi enviado. |
| exit 1 | network_error | CLI | Não foi possível alcançar a API. Verifique a rede e tente novamente. |
| exit 1 | bad_region | CLI | Use --region us. Canadá (ca) em breve. |
| exit 2 | usage_error | CLI | Comando, flag ou argumento ausente desconhecido. Execute o comando com --help. |
Compra de créditos: billing topup --amount-usd <n> (CLI), POST /v1/billing/topup {"amount_usd": n} (API) ou billing_topup (MCP) retorna um approval_url, a página de checkout. A CLI a abre no navegador do humano; via MCP ou API, abra você mesmo (macOS open <url>, Linux xdg-open <url>, Windows start "" <url>) e também forneça o link ao humano caso não abra. Os créditos são creditados assim que ele paga. billing topup --wait consulta até a recarga ser paga, expirada ou falhar.
Modelos
Adicionamos novos modelos de pesos abertos assim que podemos servi-los bem. npx -y scaledthought@0.3 models --live lista todos os modelos disponíveis na sua região, do mais novo ao mais antigo, com seus preços (USD por 1M de tokens, ou por unidade para modelos cobrados por minuto, caractere ou segundo); --modality <chat|embedding|...> filtra a lista. Sem a CLI: GET $ST_BASE_URL/models (ids disponíveis, formato de lista OpenAI) e GET /v1/models/<id> (preços de um modelo, comprimento de contexto, data de lançamento, benchmarks e status); via MCP, models_search. Por exemplo, GET $ST_BASE_URL/models/deepseek-v4-1-flash. https://scaledthought.com/pricing tem a mesma lista para humanos: todos os modelos disponíveis na região dos EUA com seus preços, atualizada no máximo a cada 5 minutos. Cada modelo é usado sob a licença de seu publicador, que você deve seguir: https://scaledthought.com/legal/acceptable-use#model-licences
Preços
Créditos pré-pagos a partir de US$ 20; seu humano aprova cada compra por um link, e nada é servido antes do pagamento. Recarga automática opcional em valores aprovados pelo seu humano. Quando os créditos acabam, as solicitações retornam 402 insufficient_credits.
- Contas que não compraram créditos recebem 60 solicitações/min por chave e até 5 chaves.
- Recargas: US$ 20 a US$ 2.000 por recarga, no máximo US$ 2.000 por 24 horas e 2 links de aprovação abertos por vez. Créditos nunca expiram. O uso é cobrado pelo preço por token de cada modelo (USD por 1M de tokens):
models --live, ou https://scaledthought.com/pricing para todos os modelos disponíveis nos EUA. Entrada em cache é cobrada pela taxa de cache do modelo, ou pela taxa de entrada quando o modelo não tem uma. - Lotes e ajuste fino são pagos com créditos: sem créditos, retornam
credits_required_for_batchesoucredits_required_for_fine_tuning. - Recarga automática (recomendada): seu humano pode ativá-la na página de financiamento de qualquer recarga, ou sem comprar nada com
npx -y scaledthought@0.3 billing auto-reload setup --below 5 --amount 20(um link onde ele salva um cartão;billing waitretorna quando estiver ativada). Ela adiciona US$ 20 sempre que o saldo cair abaixo de US$ 5 (o limite é de pelo menos US$ 5; na página de financiamento, o valor da recarga padrão é o valor comprado); recargas são limitadas a US$ 2.000 por 24 horas corridas, e não há limite mensal a menos que você defina um (--auto-reload-monthly-max, ou depois comPATCH /v1/billing/auto-reload). Ativá-la ou aumentá-la requer aprovação do seu humano;npx -y scaledthought@0.3 billing auto-reload offnão requer nenhuma. Se uma recarga for recusada, a recarga automática se desativa e o próximo 402 diz para obter um novo link de aprovação.
Servidor MCP
MCP remoto em https://api.{us|ca}.scaledthought.com/mcp (Streamable HTTP, 2026-07-28), autenticado com sua chave de API como token bearer. MCP não pode criar contas: cadastre-se primeiro com npx -y scaledthought@0.3 init ou POST /v1/accounts, depois execute npx -y scaledthought@0.3 mcp para a configuração exata. A inferência permanece na API compatível com OpenAI. Ferramentas:
account_status: Região, gastos, saldo de créditos, recarga automática, contagem de chaves e avisos (informe seu humano sobre cada um). Chame primeiro.account_settings: Ler ou alterar configurações da conta. ad_measurement: false desativa a medição de anúncios na conta; qualquer chave pode fazer isso.keys_manage: Listar, criar, rotacionar ou revogar chaves (ação: list | create | rotate | revoke | revoke_self). create e rotate retornam a chave completa uma vez; create aceita scopes, expires_in, child (uma chave de subagente) e lives_in (onde será armazenada); rotate aceita grace. revoke_self revoga a chave em uso.budget_manage: Definir ou limpar o orçamento diário rígido de uma chave (USD) e limites de taxa.webhooks: Callbacks HTTPS assinados para balance.low, key.expiring e budget.exhausted (ação: add | list | remove). add retorna signing_secret uma vez.models_search: Modelos com preços, contexto, benchmarks e status na sua região (live_only, category, search).benchmarks_get: Nossas próprias pontuações por tarefa e velocidade para um modelo.usage_query: Solicitações, tokens e custo nos últimos N dias, por modelo, dia ou chave.billing_topup: Com amount_usd (e auto_reload opcional): um approval_url para seu humano comprar créditos. ação: status | transactions | auto_reload_off.fine_tuning: Listar, obter, cancelar trabalhos de ajuste fino e seus eventos; listar seus modelos ajustados.docs_search: Onde estão a documentação, llms.txt e sua URL base.
Lotes, ajuste fino, cobrança
- Inferência em lote: Arquivos + Lotes compatíveis com OpenAI (
POST /v1/filespurpose=batch,POST /v1/batches). 50% do preço normal. Uma janela de conclusão de 24h: os lotes normalmente terminam em até 24 horas, mas a conclusão no prazo não é garantida. Pago com créditos pré-pagos. CLI:npx -y scaledthought@0.3 batches create requests.jsonl. - Fine-tuning (LoRA):
POST /v1/filespurpose=fine-tune (chat JSONL, pelo menos 10 exemplos), depoisPOST /v1/fine_tuning/jobs. Um modelo base só pode ser treinado enquanto roda em nossas próprias GPUs na sua região (caso contrário,409 fine_tuning_requires_self_hosted); a resposta do job temestimated_cost_usd, retido dos créditos até ser liquidado. O modelo resultante é privado da sua conta e cobrado pelo preço do modelo base. Os adaptadores não podem ser baixados. Pago com créditos pré-pagos. CLI:npx -y scaledthought@0.3 fine-tune create examples.jsonl --model <base-id>. - Cobrança: pré-paga.
GET /v1/billingretornabalance_usd,auto_reload,pending_topups(cada um com seuapproval_url) erecent_transactions.POST /v1/billing/topup {"amount_usd": n, "auto_reload"?: {"threshold_usd", "amount_usd", "monthly_limit_usd"}}retorna umapproval_urlpara o seu humano; consulteGET /v1/billing/topups/{id}ouGET /v1/billing.PATCH /v1/billing/auto-reloaddesativa ou reduz a recarga automática sem aprovação.GET /v1/billing/transactionsé o registro completo de créditos. - Entrada de vídeo: modelos de chat cujas modalidades incluem vídeo aceitam partes
{"type": "video_url", "video_url": {"url": "https://..."}}(ou uma URLdata:video/mp4;base64,), um vídeo por solicitação, a menos que o modelo diga o contrário. O vídeo é cobrado como tokens de prompt pela contagem do mecanismo. Outros modelos respondem400. - OpenAPI: a especificação do plano de controle está em
/openapi.jsonno host da API da sua região.
Avisos, webhooks e cabeçalhos de solicitação
- Avisos: informe seu humano. As respostas da API podem conter
x-st-noticecom códigos separados por vírgula:low_balance(uma conta cujo saldo de créditos está abaixo de US$ 5). Ao ver um, informe ao seu humano o que ele significa e o que aprovar (uma recarga ou recarga automática); não continue até que as solicitações falhem.GET /v1/account(notices,notice_text), MCPaccount_status,statusedoctorna CLI mostram os mesmos códigos. - Webhooks em vez de polling:
webhooks add https://hooks.example.com/st(CLI),POST /v1/webhooks {"url", "events"}(API) ou MCPwebhooks(ação add). Eventos:balance.low,key.expiring(3 dias antes de uma chave expirar) ebudget.exhausted(o orçamento diário de uma chave ou o limite diário da conta foi gasto). URLs https públicas apenas na porta 443; no máximo 5 por conta; precisa do escopobilling. A resposta temsigning_secret, mostrado uma vez: guarde-o como uma chave. - Cada entrega é um POST para sua URL, onde quer que esteja hospedada (mesmo fora da região da sua conta), com JSON
{id, type, created_at, region, account_id, data}e nada mais.datapor evento:balance.low{balance_micros, threshold_micros};key.expiring{key_id, expires_at};budget.exhausted{scope, key_id, budget_micros, spent_today_micros, resets_at}. Apenas IDs, valores inteiros em micro-dólares, contagens e timestamps, nunca prompts, nomes ou e-mails. Verifiquex-st-signature: t=<unix seconds>,v1=<hex>, onde v1 é HMAC-SHA256 de<t>.<raw body>com a chave do segredo de assinatura, rejeite t mais antigo que 5 minutos e deduplique emid. Responda 2xx em 10 segundos; falhas são repetidas com backoff por cerca de dois dias, e um endpoint que continua falhando é desativado (remova e adicione novamente). As entregas são mantidas por 30 dias.
import hashlib, hmac, time
def verify(secret: str, header: str, body: bytes) -> bool:
parts = dict(p.split("=", 1) for p in header.split(","))
if abs(time.time() - int(parts["t"])) > 300:
return False
mac = hmac.new(secret.encode(), parts["t"].encode() + b"." + body, hashlib.sha256).hexdigest()
return hmac.compare_digest(mac, parts["v1"])
- Cabeçalhos de solicitação opcionais na inferência:
x-st-app: <slug>(letras minúsculas, dígitos,.,_e-, até 64 caracteres) nomeia seu aplicativo nos registros de uso; não é publicado em lugar nenhum.x-st-session: <id>(até 128 caracteres, por exemplo, um por conversa) mantém uma conversa na mesma réplica para que seu prefixo de prompt em cache seja reutilizado; é mantido apenas em memória, nunca armazenado ou registrado. - Capacidade no Canadá: solicitações canadenses nunca transbordam para outro país. Quando todas as réplicas que servem um modelo estão ocupadas, uma solicitação espera brevemente e depois recebe
429 capacity_exhaustedcomRetry-After. Repita com backoff ou use outro modelo.
Hospedagem e dados
- A região dos EUA está aberta:
https://api.us.scaledthought.com/v1. Canadá (https://api.ca.scaledthought.com/v1) em breve; sua API não responde até abrir.ST_BASE_URLem.envjá é o correto. - Cada chave está vinculada à sua região. As solicitações são atendidas e registradas, e os registros de conta e uso são armazenados, apenas nesse país. Uma chave enviada ao host da outra região recebe
421 wrong_regione o corpo nunca é lido. Pagamentos com cartão são processados pela Stripe nos EUA para ambas as regiões; prompts e conclusões nunca vão para a Stripe. - Medição de anúncios: nada sobre uma conta é enviado a uma plataforma de anúncios, a menos que o humano escolha um prompt de medição de anúncios opt-in em uma campanha dos EUA; então apenas o ID de clique do anúncio, a inscrição e a primeira compra vão para essa única plataforma, nunca de ou sobre contas
ca. Opte por sair a qualquer momento comaccount ad-measurement off(PATCH /v1/accountcom{"ad_measurement": false}). - Retenção zero de dados: prompts e conclusões de solicitações de API não são registrados ou armazenados, e não são usados para treinar modelos (exceto jobs de fine-tuning que você executa para sua própria conta). Arquivos de entrada e saída de lote e conjuntos de dados de fine-tuning são armazenados na sua região até você excluí-los ou por 30 dias; adaptadores de fine-tuning até você excluir o modelo. Detalhes: https://scaledthought.com/legal/privacy
- Status: https://scaledthought.com/status mostra se a API de conta (
GET /healthz) e a API de modelo (GET /v1/models) de cada região responderam quando o site as verificou pela última vez (no máximo uma vez por minuto; nenhuma solicitação de modelo é enviada), e todos os incidentes que relatamos. Verifique a API de conta você mesmo:GET https://api.us.scaledthought.com/healthzresponde{"ok":true,"region":"us"}.
Segurança
Fatos legíveis por máquina: https://scaledthought.com/security.json (os mesmos fatos que https://scaledthought.com/security). Relatórios de vulnerabilidade: security@scaledthought.com.
x-st-region: us: A região que atendeu a solicitação. Em todas as respostas, incluindo erros.x-st-data-retention: none: Prompts e conclusões desta solicitação não são armazenados. Em todas as respostas, incluindo erros.x-st-request-id: 01K5Z3T8R2V9Q4M6N1P7B0C8XD: O ID da solicitação, para registros de uso e suporte. Em respostas de inferência.- As chaves são armazenadas apenas como hashes e mostradas uma vez. Escopos:
inference,read,keys,billing; uma chave só pode conceder escopos que ela mesma possui (403 scope_not_allowed). - Expiração:
keys create --expires-in 30d(ouexpires_in/expires_atemPOST /v1/keys), no máximo 365 dias; depois401 key_expired. Uma chave nunca sobrevive à chave que a criou. - Chaves de subagente:
keys create --name <name> --child --budget-usd 2("child": true). Escopos, orçamento diário (dentro do que o pai ainda tem hoje), limites de taxa e expiração permanecem dentro do pai; revogar uma chave revoga todas as chaves abaixo dela. - Rotação:
keys rotate <id> --grace 24h(POST /v1/keys/{id}/rotate) imprime uma substituição uma vez; a chave antiga continua funcionando pelo período de carência (padrão 24h, 0 a 7d). - Se você acha que a chave em
.envvazou: se ela tiver o escopokeys,keys rotate <id> --grace 0dá a você uma substituição e interrompe a chave antiga imediatamente; escreva a nova chave em.envcomoST_API_KEYsem imprimi-la. Caso contrário, executekeys revoke-self(DELETE /v1/keys/self, sem necessidade de escopo; também revoga as chaves de subagente da chave) e informe seu humano. De qualquer forma, conte a eles o que aconteceu. - Uma lista atual das empresas que processam dados para nós, com o que cada uma recebe e onde, está disponível mediante solicitação. Envie e-mail para privacy@scaledthought.com.
- Nunca: armazenamos conteúdo de solicitações (Prompts e conclusões de solicitações de API são processados em memória e descartados. Arquivos de lote e fine-tuning, incluindo resultados de lote, são excluídos em 30 dias.); registramos conteúdo (Prompts e conclusões nunca vão para logs, rastreamentos, métricas, análises ou mensagens de erro. Registros de uso contêm contagens, custos e tempos.); treinamos com seus dados (Não usamos seus prompts, conclusões ou arquivos para treinar modelos, exceto um fine-tune que você inicia para seu próprio modelo privado.); fazemos failover para a outra região (Quando uma região está ocupada ou fora do ar, suas solicitações nunca são enviadas para a outra região.); vemos seu número de cartão (Você o insere na página de pagamento da Stripe; ele nunca chega aos nossos servidores.); vendemos informações pessoais (Não vendemos. A Política de Privacidade diz o que compartilhamos, com quem e por quê.)
- Fechando uma conta: Feche a conta com DELETE /v1/account (uma chave com o escopo de chaves ou cobrança). Cada chave é revogada imediatamente, lotes em execução e jobs de fine-tuning são cancelados, modelos de fine-tuning são excluídos e dados pessoais (nome, e-mail, nomes de chaves, arquivos) são apagados, a menos que uma retenção legal exija que os mantenhamos. Créditos comprados não utilizados são reembolsados automaticamente assim que o uso é liquidado; pagamentos contestados ou retidos são tratados pela nossa equipe. Registros de cobrança e uso, que não contêm nomes, e-mails ou conteúdo, são mantidos por 6 anos, conforme exigido pela lei fiscal e contábil.
Chaves para outros lugares
Dê a cada lugar que executa código sua própria chave de subagente nomeada, colocada diretamente no armazenamento de segredos dessa plataforma. A chave vai para a CLI da própria plataforma via stdin: nunca impressa, nunca em argv ou histórico de shell.
npx -y scaledthought@0.3 keys put vercel --env production(no diretório de aplicativos vinculado),keys put github --repo acme/app --budget-usd 2,keys put cloudflare --worker summariser; tambémfly,gcp,aws,k8s,doppler. Ele armazenaST_API_KEY, nomeia a chave após o lugar e a registra emlives_in(GET /v1/keys), para que um humano saiba o que revogá-la quebra. A CLI da plataforma deve estar instalada e logada; se o armazenamento falhar, a nova chave é revogada. A URL base não é um segredo: definaST_BASE_URLcomo uma variável simples se seu código a ler.npx -y scaledthought@0.3 keys rotate --all --push --grace 1hrotaciona cada chave que vive em algum lugar e coloca cada substituição no mesmo lugar; as chaves antigas param após o período de carência. Nada é impresso além de nomes e para onde foram.npx -y scaledthought@0.3 connect opencode(ouaider) escreve a URL base e uma nova chave na configuração dessa ferramenta (arquivos 0600).connect cursoreconnect continueimprimem etapas para seu humano em vez disso; nenhuma chave é mostrada a você.
Legal
Criar uma conta (CLI init ou POST /v1/accounts) não aceita nada em nome de ninguém. O humano ou organização para quem você age é o cliente: eles aceitam os Termos de Serviço na página de pagamento quando compram créditos pela primeira vez (ou salvam um cartão para recarga automática), e cada aprovação de pagamento é a autorização deles para esse pagamento. Eles são responsáveis pelo seu uso da conta a partir de então.
Versão atual: 2026-10-12. Última mudança na Política de Privacidade (12 de outubro de 2026): agora você pode criar uma conta você mesmo no painel (somente região dos EUA). Se fizer isso, coletamos seu endereço de e-mail nesse momento, antes de qualquer pagamento, e o usamos para enviar links de login; ele é mantido na região da conta e apagado quando você é removido da conta ou a conta é fechada. Uma conta criada pelo seu agente ainda não precisa de nome ou e-mail. Um código de campanha também é armazenado quando você se inscreve no painel por um link que o contém.
- Termos de Serviço: O acordo entre a ScaledThought e seus clientes. Um agente que cria uma conta aceita estes termos para o humano ou organização para quem age, que é o cliente.
- Política de Privacidade: O que coletamos, por quê, onde é armazenado e por quanto tempo. Prompts e conclusões não são registrados ou armazenados, os dados permanecem na sua região de origem (pagamentos com cartão passam pela Stripe nos EUA), e nunca treinamos com seu conteúdo.
- Política de Uso Aceitável: O que você, seus agentes e seus usuários não devem fazer com a ScaledThought, e suas obrigações sob a licença de cada modelo.
- Política de Créditos e Reembolsos: Como funcionam os créditos pré-pagos e a recarga automática, o que acontece quando os créditos acabam e como reembolsos e disputas são tratados.
- Política de Divulgação de Vulnerabilidades: Como relatar uma vulnerabilidade de segurança na ScaledThought, o que está no escopo e o que prometemos em troca.
Marcas registradas
Não afiliado ou endossado pela Anthropic, OpenAI, Cursor ou qualquer editor de modelo. Claude, Claude Code, Codex, Cursor, OpenAI e nomes de modelos são marcas registradas de seus proprietários. As licenças dos modelos são dos editores; listar um modelo não implica que seu editor endossa a ScaledThought.
Referência da CLI
npx -y scaledthought@0.3 <command>. A saída é JSON sempre que o stdout não for um terminal (ou com --json). As chaves vêm de ST_API_KEY ou ./.env, nunca de flags. --help funciona em todos os comandos.
init --region us: Conta e chave nos EUA. Grava ST_API_KEY e ST_BASE_URL no .env. Seguro para reexecutar. Canadá (ca) em breve.init --account Acme: Em uma nova pasta em uma máquina com contas salvas: use essa conta com uma nova chave de projeto (o init pergunta qual quando há várias). --new-account cria uma conta separada; --no-save mantém a chave fora do armazenamento de credenciais desta máquina.login --region us: Conectar a uma conta existente: imprime um código que seu humano digita na página de conexão do painel (aberta no navegador dele). Depois execute login --wait.login --wait: Aguarda cerca de 90 s para seu humano aprovar o código e grava uma nova chave no .env (nunca impressa). Reexecute em authorization_pending.login --code -: Use uma linha de conexão criada no painel (seu código stl_ no stdin, fora do histórico do shell): já aprovada, funciona uma vez por 15 minutos.use "Side project": Aponte esta pasta para outra conta salva nesta máquina: uma nova chave de projeto no .env; a chave antiga do projeto da pasta é revogada.init --region us --source a-rd: O mesmo, registrando o código de campanha do link scaledthought.com/go/que trouxe você (opcional). Um código inválido é descartado com um aviso.models --live: Modelos em serviço na sua região agora, do mais novo ao mais antigo, com preços. Filtre com --category ou --search. A lista dos EUA também está em /pricing.models <id>: Preços, contexto, benchmarks e status ao vivo de um modelo.chat -m <id> "prompt": Envie uma mensagem para um id de modelo de models --live.account: Região, gastos e saldo de créditos.account ad-measurement off: Opte por não participar da medição de anúncios: nada sobre a conta é enviado a uma plataforma de anúncios. on reativa.keys create --name <name> --budget-usd 5: Nova chave com um orçamento diário rígido em USD. A chave é impressa uma vez.keys create --name <name> --expires-in 30d --scopes inference,read: Uma chave que expira (no máximo 365d) com um subconjunto dos escopos da sua chave.keys create --name <name> --child --budget-usd 2: Uma chave de subagente: escopos, orçamento, limites de taxa e expiração dentro dos da sua chave; revogada quando a sua chave é revogada.keys list: Suas chaves (apenas prefixos).keys rotate <id> --grace 24h: Substitua uma chave: a nova chave é impressa uma vez; a antiga continua funcionando pelo período de carência (0 a 7d).keys revoke <id>: Revogue uma chave e suas chaves de subagente. Elas param de funcionar em cerca de 30 segundos.keys revoke-self: Revogue a chave que você está usando agora (e suas chaves de subagente), por exemplo, se ela pode ter vazado. Irreversível.keys put github --repo <owner/repo> --budget-usd 2: Coloque uma nova chave de subagente diretamente no armazenamento de segredos de uma plataforma como ST_API_KEY, por meio da própria CLI dela com a chave no stdin (nunca impressa). Destinos: github, vercel, fly, cloudflare, gcp, aws, k8s, doppler. A chave recebe o nome do local e registra onde vive (lives_in). Se o armazenamento falhar, a nova chave é revogada.keys rotate --all --push --grace 1h: Gire todas as chaves que keys put armazenou em algum lugar e coloque cada substituta no mesmo lugar; as chaves antigas param após o período de carência. Não imprime chaves. Uma chave: keys rotate --push.connect opencode: Aponte uma ferramenta compatível com OpenAI para ScaledThought: opencode e aider recebem a URL base e sua própria chave de subagente na configuração deles (arquivos 0600, chave nunca impressa); cursor e continue recebem etapas para seu humano.usage --days 7 --by model: Solicitações, tokens e custo por modelo, dia ou chave.billing status: Saldo de créditos, recarga automática, recargas pendentes.billing topup --amount-usd 20: Compre créditos pré-pagos ($20 a $2.000 por recarga, no máximo $2.000 por 24 horas e 2 links de aprovação abertos por vez; padrão 20): abre a página de financiamento no navegador do seu humano, onde ele confirma o valor, pode ativar a recarga automática e pagar.billing wait: Retorna assim que seu humano paga a recarga aberta, com o novo saldo. Faz polling por cerca de 90 segundos por execução; execute novamente em topup_pending.billing topup --amount-usd 20 --auto-reload-below 5 --auto-reload-amount 20: Recarregue com recarga automática pré-selecionada na página de financiamento (seu humano pode desmarcar).billing auto-reload setup --below 5 --amount 20: Ative a recarga automática sem comprar nada: abre uma página onde seu humano salva um cartão. Depois billing wait.billing auto-reload off: Desative a recarga automática. Nenhuma aprovação necessária.billing transactions: O livro-razão de créditos: compras, recargas automáticas, uso, lotes, ajuste fino, reembolsos.batches create requests.jsonl: Envie um arquivo JSONL e inicie um lote com 50% de desconto. Precisa de créditos pré-pagos.fine-tune create examples.jsonl --model <base-id>: Envie um conjunto de dados e inicie um trabalho LoRA. Precisa de créditos pré-pagos.webhooks add https://hooks.example.com/st --events balance.low,budget.exhausted: Obtenha um POST assinado quando o saldo estiver baixo, uma chave estiver prestes a expirar ou um orçamento for gasto (padrão: todo evento). Imprime signing_secret uma vez.webhooks list: Seus endpoints de webhook.webhooks remove <id>: Exclua um endpoint de webhook.doctor: Verifica a chave no .env, sua região, a conta e seus créditos, e lista avisos para informar seu humano.mcp: Imprime o comandoclaude mcp adde a configuração JSON para sua região.dashboard --page billing: Abre o painel do seu humano (visão geral, cobrança, chaves, membros, conexão) no navegador dele. Se ele não estiver conectado, um clique envia um link por e-mail.members: Quem pode entrar no painel da conta: e-mail, função (proprietário ou membro), status.status: Saúde por modelo na sua região na última hora, além dos avisos da sua conta quando uma chave está definida.
Endpoints da API
No host da sua região ($ST_BASE_URL é https://api.{us|ca}.scaledthought.com/v1). Autentique com Authorization: Bearer $ST_API_KEY salvo indicação em contrário.
POST /v1/accounts: Crie uma conta na região deste host. Retorna api_key (uma vez) e base_url. Sem autenticação. Fonte opcional: o código de campanha de um link /go/.
POST /v1/chat/completions: Chat, ferramentas, saída JSON, streaming. Compatível com OpenAI.
POST /v1/responses: A API Responses da OpenAI (Codex): ferramentas de função e personalizadas, streaming. Sem estado: envie a conversa inteira a cada turno; previous_response_id não é suportado.
POST /v1/completions: Conclusão de texto bruto.
POST /v1/embeddings: Embeddings para modelos de embedding.
GET /v1/models: Ids de modelos ativos nesta região (formato de lista da OpenAI). Sem autenticação.
GET /v1/models/{id}: Um modelo: preços, contexto, benchmarks e live_in_region. Sem autenticação.
GET /v1/models/{id}/benchmarks: Nossas próprias pontuações e velocidade por tarefa.
GET /v1/account: Plano, região, saldo, gastos, contagem de chaves e avisos (low_balance) com notice_text para repassar ao seu humano.
PATCH /v1/account: Configurações da conta: {"ad_measurement": false} opta por não participar da medição de anúncios (qualquer chave); true precisa dos escopos de chaves ou cobrança.
GET /v1/keys: Liste chaves.
POST /v1/keys: Crie uma chave: escopos (um subconjunto dos seus), daily_budget_usd, limites de taxa, expires_in ou expires_at (máx. 365d), child: true para uma chave de subagente, lives_in (onde será armazenada, apenas exibição).
POST /v1/keys/{id}/rotate: Substitua uma chave. A nova chave é retornada uma vez; a antiga funciona pelo período de carência (padrão 24h, 0 a 7d).
PATCH /v1/keys/{id}: Altere o nome, o orçamento diário, os limites de taxa ou lives_in de uma chave (null limpa).
DELETE /v1/keys/{id}: Revogue uma chave e suas chaves de subagente.
DELETE /v1/keys/self: A chave chamadora revoga a si mesma e suas chaves de subagente. Nenhum escopo necessário.
GET /v1/usage: Solicitações, tokens e custo (dias, group_by).
GET /v1/billing: Saldo de créditos, recarga automática, recargas pendentes e transações recentes.
POST /v1/billing/topup: Compre créditos: {amount_usd, auto_reload?} retorna um approval_url para seu humano.
GET /v1/billing/topups/{id}: Status de uma recarga (open, paid, expired, failed).
PATCH /v1/billing/auto-reload: Desative ou reduza a recarga automática. Aumentá-la precisa de uma nova aprovação de recarga.
GET /v1/billing/transactions: O livro-razão de créditos, do mais novo ao mais antigo (cursor).
POST /v1/webhooks: Adicione um webhook: {url (https público, porta 443), events}. Retorna signing_secret uma vez. Escopo de cobrança; no máximo 5.
GET /v1/webhooks: Seus endpoints de webhook (status, último sucesso e falha).
DELETE /v1/webhooks/{id}: Exclua um endpoint de webhook.
POST /v1/files: Envie JSONL (purpose=batch ou fine-tune).
POST /v1/batches: Inicie um lote. GET /v1/batches/{id} para fazer polling, POST /v1/batches/{id}/cancel para parar.
POST /v1/fine_tuning/jobs: Inicie um trabalho LoRA a partir de um arquivo enviado com purpose=fine-tune.
GET /v1/status: Saúde por modelo nesta região, última hora.
POST /v1/dashboard/link: Uma URL para o painel do seu humano (página opcional), os proprietários e uma mensagem para repassar. Escopo de cobrança ou chaves.
POST /v1/device/codes: Peça para conectar a uma conta existente. Sem chave. Retorna device_code (segredo), user_code para seu humano digitar em verification_url, expires_in, interval.
POST /v1/device/token: Colete a chave após a aprovação: {device_code}, ou {connect_code} (stl_…) para uma linha de conexão do painel. 428 authorization_pending até lá; uma chave por código, com os escopos do aprovador.
GET /v1/members: Quem pode entrar no painel (e-mail, função, status). Escopo de leitura.
Documentação para humanos: https://scaledthought.com/docs