Skip to content
Gauge

ax-check.com

Mais Retorno

maisretorno.com

ax-check.com

Checked 9 October 2026

B

81/100

Agents need your login

Docs are solid, but pricing isn't posted anywhere public.

The API and MCP connector are clearly documented with auth details, but no pricing page was fetched — all plan prices came from gated sources, not a public page.

2 fixes to start with

Concrete changes, backed by what we found.

Onboarding

Give agents a clear login handoff and a way to resume setup.

Agents cannot progress through onboarding without human help. Provide an agent-accessible path through authentication and setup.

Docs

Return Markdown when clients request text/markdown.

Homepage returned text/html for a text/markdown request; no Markdown representation offered.

Recorded coding sessions

Same task, 3 models, no maisretorno.com account. Recorded 9 October 2026 on Pi.

3 recorded · 2m 15s

2m 15s · recorded

Session findings

Select a finding to see it in context.

piv0.84.2
modelQwen 3.8 Maxcwd/sandbox/repo
Help me build a simple example using Mais Retorno. Tell me how pricing works, and briefly tell me whether this product will be easy for you to manage. Let me know if you get blocked. If this product has no developer workflow you can act on, say so plainly and stop. Stay light: use the hosted product through its SDK or API. Do not start local service stacks or wait for long-running commands; if the quickstart requires either, say so plainly and stop.
Thinking…

First, let's check the environment.

ls -la /sandbox/repo && cat /sandbox/repo/README* 2>/dev/null | head -50
total 16
total 16
drwxr-xr-x 3 root root 4096 Sep 18 08:00 .
drwxr-xr-x 7 root root 4096 Oct  9 02:15 ..
drwxr-xr-x 8 root root 4096 Sep 24 20:05 .git
-rw-r--r-- 1 root root  408 Sep 18 08:00 .gitignore
Thinking…

Empty repo. "Mais Retorno" — need to figure out what this product is. Search? Probably don't have internet access. Let me check if there's anything about it locally. "Mais Retorno" is Brazilian Portuguese for "more return" — possibly a Brazilian financial / fixed-income investment platform (maisretorno.com?). There might be a public API. Let me check network access and try searching.

cd /sandbox/repo && git log --oneline | head; ls ~/.cache 2>/dev/null; which pip npm curl; env | grep -i PI_ | head
9ebf5fb Initial workspace
9ebf5fb Initial workspace
node-compile
/usr/local/bin/pip
/usr/local/bin/npm
/usr/bin/curl
PI_CODING_AGENT=true
PI_REASONING_LEVEL=medium
PI_SESSION_FILE=/sandbox/.gauge/pi/sessions/2026-10-09T02-15-11-234Z_01a11e71-6882-7487-a0db-da95cacf4189.jsonl
PI_PROVIDER=gauge-fireworks
PI_MODEL=accounts/fireworks/models/qwen3p8-max
PI_SESSION_ID=01a11e71-6882-7487-a0db-da95cacf4189
PI_GATEWAY_API_KEY=unused
Thinking…

I need to research "Mais Retorno". Let me check whether internet access works and whether an SDK exists.

curl -s -m 15 -o /dev/null -w "%{http_code}\n" https://pypi.org/simple/ ; curl -s -m 15 "https://pypi.org/search/?q=mais+retorno" -o /dev/null -w "%{http_code}\n"
200
200
200
Thinking…

The internet works. Let me search for the "Mais Retorno" SDK/API. Mais Retorno — Brazilian financial platform (maisretorno.com), fixed-income income investment marketplace. Do they have a public API/SDK? Let me search.

curl -s -m 20 "https://pypi.org/simple/" | grep -i -o 'href="[^"]*retorno[^"]*"' | head; curl -s -m 20 "https://registry.npmjs.org/-/v1/search?text=mais%20retorno" | head -c 2000
{"objects":[{"downloads":{"monthly":61364,"weekly":13533},"dependents":"1","updated":"2026-10-09T00:04:05.023Z","searchScore":55.646107,"package":{"name":"autom
{"objects":[{"downloads":{"monthly":61364,"weekly":13533},"dependents":"1","updated":"2026-10-09T00:04:05.023Z","searchScore":55.646107,"package":{"name":"automacao-core-playwright","keywords":["ES6","JavaScript","NodeJS"],"version":"5.18.1","description":"Para instalar a versão mais recente da biblioteca, use o comando:","sanitized_name":"automacao-core-playwright","publisher":{"email":"devops@senior.com.br","actor":{"name":"seniorsistemas","type":"user","email":"devops@senior.com.br"},"username":"seniorsistemas"},"maintainers":[{"email":"devops@senior.com.br","username":"seniorsistemas"}],"license":"ISC","date":"2026-08-13T13:06:01.952Z","links":{"homepage":"https://github.com/senior-sistemas/snr-automacao-core-playwright#readme","repository":"git+https://github.com/senior-sistemas/snr-automacao-core-playwright.git","bugs":"https://github.com/senior-sistemas/snr-automacao-core-playwright/issues","npm":"https://www.npmjs.com/package/automacao-core-playwright"}},"score":{"final":55.646107,"detail":{"popularity":1,"quality":1,"maintenance":1}},"flags":{"insecure":0}},{"downloads":{"monthly":1356,"weekly":388},"dependents":0,"updated":"2026-10-06T13:46:20.590Z","searchScore":54.688076,"package":{"name":"vobi_lib","keywords":[],"version":"1.15.1","description":"Vobi Library","sanitized_name":"vobi_lib","publisher":{"email":"npm-oidc-no-reply@github.com","actor":{"name":"vobitech","type":"user","email":"ti@vobi.com.br"},"trustedPublisher":{"oidcConfigId":"ed39061d-779f-4998-bad6-64c0c0885ee5","id":"github"},"username":"GitHub Actions"},"maintainers":[{"email":"ti@vobi.com.br","username":"vobitech"}],"license":"ISC","date":"2026-09-29T13:04:17.676Z","links":{"homepage":"https://www.vobi.com.br","repository":"git+https://github.com/home-hero-tech/vobi-lib.git","bugs":"https://github.com/home-hero-tech/vobi-lib/issues","npm":"https://www.npmjs.com/package/vobi_lib"}},"score":{"final":54.688076,"detail":{"popularity":1,"quality":1,"maintenance":1}},"flags":{"insecure":0}},
Thinking…

I couldn't find a package named "Mais Retorno" on npm/PyPI. Mais Retorno (maisretorno.com) is a Brazilian fixed-income income investment platform (renda fixa). Does it have a developer-oriented API/SDK? Let me check the site.

curl -sL -m 20 "https://maisretorno.com" -o /tmp/mr.html -w "%{http_code} %{url_effective}\n"; grep -i -o -E '(api|dev|developer|sdk|documentação)[^"<]{0,80}' /tmp/mr.html | sort -u | head -30
200 https://maisretorno.com/
200 https://maisretorno.com/
api/nextjs/resize-image?src=https://maisretorno.com/assets/mr-logo-bgazul-1000x1000
api?int_source=hero&amp;int_campaign=api-mcp
apis.com/css2?family=Nunito+Sans:ital,opsz,wght@0,6..12,200..1000;1,6..12,200..1000
apis.com/css2?family=Open+Sans:wght@400;500;600;700;800&amp;display=optional
apital Próprio: saiba o que é e como funciona
apital-proprio
device-width
Thinking…

Interesting point: api?int_source=hero&int_campaign=api-mcp — Mais Retorno has an API, probably accompanied by an MCP server. Let me fetch that page.

curl -sL -m 20 "https://maisretorno.com/api?int_source=hero&int_campaign=api-mcp" -o /tmp/mrapi.html -w "%{http_code} %{url_effective}\n"; python3 - <<'EOF'
import re,html
t=open('/tmp/mrapi.html',encoding='utf-8',errors='ignore').read()
t=re.sub(r'<script.*?</script>','',t,flags=re.S)
t=re.sub(r'<style.*?</style>','',t,flags=re.S)
t=re.sub(r'<[^>]+>',' ',t)
t=html.unescape(re.sub(r'\s+',' ',t))
print(t[:4000])
EOF
200 https://maisretorno.com/api?int_source=hero&int_campaign=api-mcp
200 https://maisretorno.com/api?int_source=hero&int_campaign=api-mcp
 API de dados do mercado financeiro brasileiro | Mais Retorno Ferramentas Produtos Conteúdos Sobre a MR PETR4 PETR4 PETR4 PETR4 GET /quotes CVM GET /quotes CVM GET /quotes CVM GET /quotes CVM HGLG11 HGLG11 HGLG11 HGLG11 GET /wallet-detail GET /wallet-detail GET /wallet-detail GET /wallet-detail ANBIMA CDI ANBIMA CDI ANBIMA CDI ANBIMA CDI GET /stats GET /stats GET /stats GET /stats GET /search GET /search GET /search GET /search BOVA11 BOVA11 BOVA11 BOVA11 B3 IPCA B3 IPCA B3 IPCA B3 IPCA GET /fund-structure GET /fund-structure GET /fund-structure GET /fund-structure MXRF11 Tesouro MXRF11 Tesouro MXRF11 Tesouro MXRF11 Tesouro GET /asset-info GET /asset-info GET /asset-info GET /asset-info API de dados Mais Retorno O mercado financeiro brasileiro, organizado em uma API. Mais de 690 mil ativos, de fundos a opções. Dados oficiais da CVM, ANBIMA, B3 e Tesouro, padronizados em JSON. Testar grátis Ver documentação 68 mil+ Fundos 3.100+ Ações e BDRs 620+ FIIs 9 mil+ ETFs 16 mil+ Renda fixa 58 mil+ Exterior 535 mil+ Opções e futuros 520+ Índices e cripto Cotas diárias e patrimônio líquido CVM Composição de carteira mês a mês CVM Classe e subclasse RCVM 175 CVM Benchmark, público-alvo e tributação CVM Classificação ANBIMA ANBIMA Sharpe, Sortino, volatilidade e drawdown Mais Retorno 500 créditos/mês grátis · Sem cartão · MCP para Claude e ChatGPT Como funciona Da conta criada à primeira chamada em poucos minutos. 1 Crie sua conta gratuita 500 créditos por mês e 1 ano de histórico. Sem cartão de crédito. Plano Free 500 créditos 2 Gere sua chave A chave aparece no painel na hora. Ela vai no header X-Api-Key de cada chamada. X-Api-Key mr_xxx_•••••••••••• 3 Faça a primeira chamada A busca é grátis. A resposta vem em JSON, com exemplos prontos em Python e Node. 200 GET /search/petrobras Testar grátis Ver documentação Primeira chamada Uma chave, um identificador, a resposta. Todo ativo tem um identificador no formato ativo:mercado , como petr4:b3 ou cnpj:fi . A busca é grátis e não gasta crédito. Cotações /quotes 1 crédito Classe e subclasse /fund-class-subclass 1 crédito Drawdown /drawdown 5 créditos Estrutura do fundo /fund-structure 1 crédito Ver os 9 endpoints na documentação curl -H "X-Api-Key: SUA_API_KEY" \ https://data.maisretorno.com/mr-data/v4/api /quotes/petr4:b3 { "market": "b3", "currency": "BRL", "nicename": "Petrobras PN", "shortname": "PETR4", "quotes": [ { "d": "2024-01-15", "c": 25.67, "p": 1500000.5, "q": 1250 } ] } Resposta resumida, exemplo da documentação Também na sua IA A mesma chave responde no Claude e no ChatGPT. Conecte o MCP da Mais Retorno e pergunte em linguagem natural. A IA chama as mesmas rotas da API e usa o mesmo saldo de créditos do seu plano. Conhecer o MCP Mostre a composição da carteira do nome do fundo no último mês e o Sharpe de 12 meses. Claude chamou a API da Mais Retorno: /search acha o fundo pelo nome grátis /wallet-detail carteira do último mês 10 créditos /stats risco e retorno 5 créditos 15 créditos do mesmo saldo do plano. Exemplo ilustrativo. Onde a gente vai mais fundo 68 mil fundos, da cota à composição da carteira. APIs de bolsa param nas ações. Aqui o fundo vem inteiro: estrutura, classificação, carteira e risco, prontos para o seu sistema. Composição da carteira mês a mês CVM Cada ativo com peso e valor, por classe, da última carteira divulgada pela CVM. Classe e subclasse RCVM 175 CVM A estrutura nova da CVM, com a série costurada entre o fundo antigo e as subclasses. Classificação CVM e ANBIMA ANBIMA Categoria CVM, tipo ANBIMA, benchmark oficial, público-alvo e tributação. Cotistas e patrimônio CVM Número de cotistas e patrimônio líquido de cada classe e subclasse. Risco e retorno calculados Mais Retorno Rentabilidade, Sharpe, Sortino, volatilidade e drawdown por janela. Fiagro, FIP e FI-Infra CVM Os 68 mil fundos incluem as estruturas que costumam ficar de fora. Cobertura O que já vem na API, e o que liberamos sob consulta. São mais de 690 mil ativos na base. A maior parte já sai pela A
Thinking…

Mais Retorno has a hosted REST API at data.maisretorno.com/mr-data/v4/api. Pricing: Free plan is 500 credits per month, no card required. Credits are charged per endpoint (search is free, quotes is 1 credit, drawdown is 5 credits, etc.). Let me grab the docs for endpoint details. There's also an MCP server. Documentation link — find the URL.

User's request: Create a simple example, explain how pricing works, whether this product is easy for me (the agent) to operate, and report any blocking factors. Keep it lightweight — use the hosted product via SDK/API, don't use local stacks.

Blocker: API key required — create a free account. Can I create an account without a human? No. But I might be able to check whether the documentation endpoints are public. Let me look for the documentation URL.

Mais Retorno has a hosted REST API — good. To grasp the details before building, I'll pull up the documentation.

grep -o -E 'href="[^"]*"' /tmp/mrapi.html | grep -i -E 'doc|mcp|api' | sort -u | head -20
href="/app/meu-perfil/api/comecar-gratis"
href="/app/meu-perfil/api/comecar-gratis"
href="/mcp"
href="https://api.whatsapp.com/send/?phone=554491737023"
href="https://maisretorno.com/api"
Thinking…

Where does "Ver documentação" link to? Let me grep the docs URL more broadly and check the /mcp page.

grep -o -E 'href="https?://[^"]*"' /tmp/mrapi.html | sort -u | head -30; echo ---; curl -sL -m 20 "https://maisretorno.com/mcp" -o /tmp/mrmcp.html -w "%{http_code}\n"; python3 - <<'EOF'
import re,html
t=open('/tmp/mrmcp.html',encoding='utf-8',errors='ignore').read()
t=re.sub(r'<script.*?</script>','',t,flags=re.S); t=re.sub(r'<style.*?</style>','',t,flags=re.S)
t=html.unescape(re.sub(r'\s+',' ',re.sub(r'<[^>]+>',' ',t)))
print(t[:2500])
EOF
href="https://api.whatsapp.com/send/?phone=554491737023"
href="https://api.whatsapp.com/send/?phone=554491737023"
href="https://checkout.maisretorno.com/checkout/da7a0000-da7a-0000-da7a-000000000003"
href="https://checkout.maisretorno.com/checkout/da7a0000-da7a-0000-da7a-000000000005"
href="https://checkout.maisretorno.com/checkout/da7a0000-da7a-0000-da7a-000000000007"
href="https://developers.maisretorno.com"
href="https://lp.maisretorno.com/guia-de-uso"
href="https://lp.maisretorno.com/planilha-fundos-ipca"
href="https://lp.maisretorno.com/prospeccao-ao-fechamento"
href="https://maisretorno.com/api"
href="https://maisretorno.com/portal/politica-de-privacidade"
href="https://maisretorno.com/termos-de-uso"
href="https://sobre.maisretorno.com"
href="https://sobre.maisretorno.com/contato"
href="https://sobre.maisretorno.com/vagas"
href="https://svnconnect.com.br/conteudos/lp-gestor-de-acoes-360/?utm_id=f922f7bed318&amp;utm_source=maisretorno&amp;utm_medium=apoio&amp;utm_campaign=site&amp;utm_adgroup=conteudo-planilhas-gratuitas"
href="https://svnconnect.com.br/conteudos/lp-mais-retorno-simulador-investir-em-um-imovel-ou-em-fiis/?utm_id=c9ce9055c108&amp;utm_source=maisretorno&amp;utm_medium=apoio&amp;utm_campaign=site&amp;utm_adgroup=conteudo-planilhas-gratuitas"
href="https://svnconnect.com.br/conteudos/lp-mais-retorno-simulador-pgbl/?utm_id=8041dd9029ef&amp;utm_source=maisretorno&amp;utm_medium=apoio&amp;utm_campaign=site&amp;utm_adgroup=conteudo-planilhas-gratuitass"
href="https://svnconnect.com.br/conteudos/quanto-rende-1mm-investimentos/?utm_id=7ea03140eb77&amp;utm_source=maisretorno&amp;utm_medium=apoio&amp;utm_campaign=email"
href="https://twitter.com/mais_retorno"
href="https://www.facebook.com/maisretorno"
href="https://www.googletagmanager.com/gtm.js?id=GTM-NLZBWJ7"
href="https://www.instagram.com/mais_retorno/"
href="https://www.linkedin.com/company/maisretorno/"
href="https://www.tiktok.com/@mais_retorno"
href="https://www.youtube.com/maisretorno?sub_confirmation=1"
---
200
 MCP da Mais Retorno | Sua IA conectada ao mercado e às carteiras Ferramentas Produtos Conteúdos Sobre a MR Sua IA conectada ao mercado pelo MCP da Mais Retorno. Peça ao Claude ou ao ChatGPT uma análise de fundo, uma comparação com o CDI ou o relatório do seu cliente. E mande o extrato da corretora: as movimentações entram direto na carteira. Conectar em 2 minutos Ver o que dá para pedir Incluso no Retorno Prime e no RetornoPRO. Dados de mercado com plano da API, inclusive o grátis. Claude e ChatGPT conectam com seu login, sem chave. Seu assistente MCP conectado MCP Mais Retorno conectado Monte um gráfico da Carteira Família Moreira no trimestre: rentabilidade contra o CDI e alocação por classe. Monte um gráfico da Carteira Família Moreira no trimestre: rentabilidade contra o CDI e alocação por classe. O que é Um conector entre a sua IA e os dados que você confia. Você pergunta em português Nada de código ou filtro. Escreva como falaria com um analista. A IA chama a Mais Retorno O MCP é o padrão que deixa a IA usar ferramentas externas com segurança. A resposta vem com dado real Números da CVM, ANBIMA e B3 e das suas carteiras, não chute do modelo. O que você acessa Um conector, dois acessos. O que a IA consegue consultar depende do seu plano. Com os dois, ela cruza os dados do mercado com as suas carteiras. Requer Plano da API de dados Dados do mercado 68 mil fundos com composição de carteira, ações, FIIs, ETFs, renda fixa, opções, índices e cripto. Comparar fundos por risco e retorno Ver o que um fundo comprou e vendeu Montar relatórios com dados oficiais Ver planos da API Requer Retorno Prime ou RetornoPRO Suas carteiras A IA trabalha nas carteiras que você acompanha na Mais Retorno, com o que já está lançado. Lançar notas de corretagem, extratos e planilhas Encontrar e corrigir lançamentos pendentes Analisar concentração, risco e retorno No Retorno Prime, uma carteira. Várias carteiras, correção em lote, ativo personalizado e carteira de grupo são do RetornoPRO. Conhecer o RetornoPRO Antes de conectar, confira se você já tem um plano da API de dados, o Retorno Prime ou o RetornoPRO. Sem um deles, a conexão é feita, mas a IA não consegue consultar nada. Ver meu plano Como conectar Três passos, uns dois minutos. No Claude e no ChatGPT você entra com a sua conta Mais Retorno, sem chave para copiar. 1 Copie o endereço do conector https://data.maisretorno.com/mr-data/v4/mcp/oauth Copiar 2 Adicione na sua IA Siga o passo a passo do seu assistente. 3 Entre co
Thinking…

Next, I'll check developers.maisretorno.com for the documentation (endpoints, pricing, SDK samples).

curl -sL -m 20 "https://developers.maisretorno.com" -o /tmp/mrdev.html -w "%{http_code} %{url_effective}\n"; python3 - <<'EOF'
import re,html
t=open('/tmp/mrdev.html',encoding='utf-8',errors='ignore').read()
t=re.sub(r'<script.*?</script>','',t,flags=re.S); t=re.sub(r'<style.*?</style>','',t,flags=re.S)
txt=html.unescape(re.sub(r'\s+',' ',re.sub(r'<[^>]+>',' ',t)))
print(txt[:5000])
EOF
200 https://developers.maisretorno.com/
200 https://developers.maisretorno.com/
 Como Usar a API ☰ Documentação da API Mais Retorno ☀ Páginas Como Usar a API Guia de Migração Nesta Página Começando Comece aqui Autenticação Identificadores API REST Endpoints Disponíveis 1. Search (Busca) 2. Asset Info (Info do Ativo) 3. Quotes (Cotações) 4. Stats (Estatísticas) 5. Drawdown (Quedas) 6. Available Wallets (Carteiras) 7. Wallet Detail (Detalhe da Carteira) 8. Fund Class/Subclass (Classe/Subclasse) 9. Fund Structure (Estrutura do Fundo) MCP Claude, ChatGPT e agentes Planos Planos e créditos Erros e cache Como Usar a API Mais Retorno Guia completo com exemplos em Python e Node.js para consumir a API de dados Mais Retorno. 🔍 API Key Comece aqui A Market Data API entrega os dados de mercado da Mais Retorno: fundos de investimento (cotas, estatísticas, carteiras completas), ações e ETFs da B3 e do exterior (EUA e Londres), BDRs, criptomoedas, índices e títulos públicos — com histórico longo e indicadores calculados (rentabilidade, sharpe, volatilidade, drawdown). Existem dois jeitos de consumir, e ambos usam o mesmo plano e o mesmo saldo de créditos: Vou programar (REST) — endpoints HTTP com api-key, exemplos em Python e Node.js. Siga para Autenticação . Vou usar com IA (MCP) — conecte no Claude, no ChatGPT ou em qualquer agente compatível e analise em linguagem natural, sem escrever código. Pule direto para MCP . Sua primeira chamada em 30 segundos Buscar ativos é grátis — teste agora sem gastar nenhum crédito (gere sua api-key em maisretorno.com/app/meu-perfil/api ): 📋 Copiar curl -H "X-Api-Key: SUA_API_KEY" \ "https://data.maisretorno.com/mr-data/v4/api/search/petrobras" A resposta traz o identifier de cada ativo (ex.: petr4:b3 ) — é ele que você passa para todos os outros endpoints. Entenda o formato em Identificadores . Autenticação Todas as requisições exigem uma api_key vinculada a uma subscription ativa de algum plano (Free, Basic, Starter, Growth ou Enterprise). 1 Gere sua api_key Acesse maisretorno.com/app/meu-perfil/api e gere sua api_key. O formato é mr_xxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxx . Importante: a chave em texto plano é exibida apenas no momento da geração — o servidor armazena somente o hash. Salve em local seguro (variável de ambiente ou gerenciador de segredos). Se perder, gere uma nova no portal — a anterior será invalidada automaticamente. 2 Envie a api_key nas requisições Use o header X-Api-Key: SUA_API_KEY . Vale também no browser: SPA, extensão e o playground desta página enviam o mesmo header que um backend Python ou Node. Dica: Cole sua api_key no campo acima para que ela seja usada automaticamente nos playgrounds desta página, que enviam X-Api-Key — exatamente o mesmo header dos exemplos de código. Identificadores de Ativos Todos os endpoints usam um identifier no formato ativo:mercado : Ações, BDRs, ETFs, FIIs petr4:b3 ticker:b3 Fundos de Investimento 38000706000126:fi cnpj:fi Subclasses de Fundos 10338491000139-s0000255564:fi cnpj-subclasse_id:fi Ações e ETFs - EUA aapl.us:us ticker.us:us Ações e ETFs - Londres bp.lse:lse ticker.lse:lse Criptomoedas btc:cc ticker:cc Índices cdi:idx ticker:idx Tesouro Direto tesouro-selic-18-06-2008:td slug:td Títulos Públicos ntn-r2-15-02-2004-brstncntr084:tp slug:tp Dica: Use o endpoint de Search para encontrar o identifier de qualquer ativo. Endpoints Disponíveis Base URL: https://data.maisretorno.com/mr-data/v4/api # Endpoint Rota Descrição 1 Search (Busca) GET /search/{query} Busca ativos por termo, com filtros opcionais 2 Asset Info (Info do Ativo) GET /asset-info/{identifier} Retorna informações cadastrais completas de um ativo (CNPJ, setor, segmento, etc). O formato da resposta varia de acordo com o tipo de ativo. 3 Quotes (Cotações) GET /quotes/{identifier} Busca cotações históricas de um ativo. 4 Stats (Estatísticas) GET /stats/{identifier} Retorna estatísticas detalhadas de performance de um ativo específico. Esta rota é atendida pelo microserviço mr-ms-stats através do API Gateway. 5 Drawdown (Quedas) GET /drawdown/{identifier} Retorna a série temporal de drawdown desde o último topo dentro do range + summary com max e current. 6 Available Wallets (Carteiras) GET /available-wallets/{identifier} Retorna as datas das carteiras disponíveis para um fundo específico 7 Wallet Detail (Detalhe da Carteira) GET /wallet-detail/{identifier} Retorna os detalhes completos da carteira de um fundo em um mês/ano específico 8 Fund Class/Subclass (Classe/Subclasse) GET /fund-class-subclass/{identifier} Retorna informações detalhadas de uma classe ou subclasse de fundo 9 Fund Structure (Estrutura do Fundo) GET /fund-structure/{identifier} Lista plana e paginada das classes e séries (subclasses) do fundo. Aceita o identificador do CNPJ ou o de qualquer série do mesmo fundo. 1 . Search (Busca) GET /search/{query} Grátis Busca ativos por termo, com filtros opcionais Parâmetros de Query Parâmetro Tipo Obrigatório Exemplo Descrição has_quotes boolean Não true Filtrar apenas ativos que possuem cotações Python Node.js 📋 Copiar # Parâmetros opcionai
Thinking…

Alright — the docs exist. Next up is the plans/pricing page: developers.maisretorno.com probably has "Planos e créditos (Plans and Credits)". Let's look for the plan details and build an example. But an example needs an API key — that requires account creation (human). Can't make an account without human registration? Maybe. But I can write sample code (Python + Node), run it with a placeholder key, and show the behavior of errors without a key. This lets me demo the workflow without getting blocked by sign-up. In fact, "search is free" but it still requires an API key tied to a subscription. Without a key, can't call it. I should clearly state the blocking factor: a free account/API key generated on the web portal is required.

Should I quickly check the plan page and the MCP page? Maybe pi supports MCP via an extension? Keep it lightweight: REST example.

Let's fetch the plan page.

grep -o -E 'href="[^"]*"' /tmp/mrdev.html | sort -u | head -30
href="#autenticacao"
href="#autenticacao"
href="#comece"
href="#creditos"
href="#endpoints"
href="#erros"
href="#ex-asset-info-info-do-ativo"
href="#ex-available-wallets-carteiras"
href="#ex-drawdown-quedas"
href="#ex-fund-class-subclass-classe-subclasse"
href="#ex-fund-structure-estrutura-do-fundo"
href="#ex-quotes-cota-es"
href="#ex-search-busca"
href="#ex-stats-estat-sticas"
href="#ex-wallet-detail-detalhe-da-carteira"
href="#identificadores"
href="#mcp"
href="/"
href="/FavIco.png"
href="/LogoHorizontalBlack.png"
href="/LogoHorizontalWhite.png"
href="/_next/static/chunks/0bzupvr5gt3k9.js"
href="/_next/static/chunks/0x82w7-kdrvum.css"
href="/migracao"
href="https://maisretorno.com/app/meu-perfil/api"
Thinking…

All on a single page (anchor). Extract the "Planos e créditos" (Plans and Credits), "Erros e cache" (Errors and Cache) sections, along with the Python example for quotes.

python3 - <<'EOF'
import re,html
t=open('/tmp/mrdev.html',encoding='utf-8',errors='ignore').read()
t=re.sub(r'<script.*?</script>','',t,flags=re.S); t=re.sub(r'<style.*?</style>','',t,flags=re.S)
txt=html.unescape(re.sub(r'\s+',' ',re.sub(r'<[^>]+>',' ',t)))
i=txt.find('Planos e créditos')
print(txt[i:i+3500])
EOF
Planos e créditos Erros e cache Como Usar a API Mais Retorno Guia completo com exemplos em Python e Node.js para consumir a API de dados Mais Retorno. 🔍 API Ke
Planos e créditos Erros e cache Como Usar a API Mais Retorno Guia completo com exemplos em Python e Node.js para consumir a API de dados Mais Retorno. 🔍 API Key Comece aqui A Market Data API entrega os dados de mercado da Mais Retorno: fundos de investimento (cotas, estatísticas, carteiras completas), ações e ETFs da B3 e do exterior (EUA e Londres), BDRs, criptomoedas, índices e títulos públicos — com histórico longo e indicadores calculados (rentabilidade, sharpe, volatilidade, drawdown). Existem dois jeitos de consumir, e ambos usam o mesmo plano e o mesmo saldo de créditos: Vou programar (REST) — endpoints HTTP com api-key, exemplos em Python e Node.js. Siga para Autenticação . Vou usar com IA (MCP) — conecte no Claude, no ChatGPT ou em qualquer agente compatível e analise em linguagem natural, sem escrever código. Pule direto para MCP . Sua primeira chamada em 30 segundos Buscar ativos é grátis — teste agora sem gastar nenhum crédito (gere sua api-key em maisretorno.com/app/meu-perfil/api ): 📋 Copiar curl -H "X-Api-Key: SUA_API_KEY" \ "https://data.maisretorno.com/mr-data/v4/api/search/petrobras" A resposta traz o identifier de cada ativo (ex.: petr4:b3 ) — é ele que você passa para todos os outros endpoints. Entenda o formato em Identificadores . Autenticação Todas as requisições exigem uma api_key vinculada a uma subscription ativa de algum plano (Free, Basic, Starter, Growth ou Enterprise). 1 Gere sua api_key Acesse maisretorno.com/app/meu-perfil/api e gere sua api_key. O formato é mr_xxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxx . Importante: a chave em texto plano é exibida apenas no momento da geração — o servidor armazena somente o hash. Salve em local seguro (variável de ambiente ou gerenciador de segredos). Se perder, gere uma nova no portal — a anterior será invalidada automaticamente. 2 Envie a api_key nas requisições Use o header X-Api-Key: SUA_API_KEY . Vale também no browser: SPA, extensão e o playground desta página enviam o mesmo header que um backend Python ou Node. Dica: Cole sua api_key no campo acima para que ela seja usada automaticamente nos playgrounds desta página, que enviam X-Api-Key — exatamente o mesmo header dos exemplos de código. Identificadores de Ativos Todos os endpoints usam um identifier no formato ativo:mercado : Ações, BDRs, ETFs, FIIs petr4:b3 ticker:b3 Fundos de Investimento 38000706000126:fi cnpj:fi Subclasses de Fundos 10338491000139-s0000255564:fi cnpj-subclasse_id:fi Ações e ETFs - EUA aapl.us:us ticker.us:us Ações e ETFs - Londres bp.lse:lse ticker.lse:lse Criptomoedas btc:cc ticker:cc Índices cdi:idx ticker:idx Tesouro Direto tesouro-selic-18-06-2008:td slug:td Títulos Públicos ntn-r2-15-02-2004-brstncntr084:tp slug:tp Dica: Use o endpoint de Search para encontrar o identifier de qualquer ativo. Endpoints Disponíveis Base URL: https://data.maisretorno.com/mr-data/v4/api # Endpoint Rota Descrição 1 Search (Busca) GET /search/{query} Busca ativos por termo, com filtros opcionais 2 Asset Info (Info do Ativo) GET /asset-info/{identifier} Retorna informações cadastrais completas de um ativo (CNPJ, setor, segmento, etc). O formato da resposta varia de acordo com o tipo de ativo. 3 Quotes (Cotações) GET /quotes/{identifier} Busca cotações históricas de um ativo. 4 Stats (Estatísticas) GET /stats/{identifier} Retorna estatísticas detalhadas de performance de um ativo específico. Esta rota é atendida pelo microserviço mr-ms-stats através do API Gateway. 5 Drawdown (Quedas) GET /drawdown/{identifier} Retorna 
Thinking…

The nav shows up first. Look for the second occurrence of "Planos e créditos" (the actual section, probably with the id "creditos").

python3 - <<'EOF'
import re,html
t=open('/tmp/mrdev.html',encoding='utf-8',errors='ignore').read()
t=re.sub(r'<script.*?</script>','',t,flags=re.S); t=re.sub(r'<style.*?</style>','',t,flags=re.S)
txt=html.unescape(re.sub(r'\s+',' ',re.sub(r'<[^>]+>',' ',t)))
idx=[m.start() for m in re.finditer('Planos e créditos',txt)]
print(idx)
i=idx[-1]
print(txt[i:i+3000])
EOF
[494, 36222, 38894]
[494, 36222, 38894]
Planos e créditos 500 Internal Server Error Erro interno do servidor Cache por endpoint As respostas incluem Cache-Control — respeite o max-age para evitar chamadas (e créditos) desnecessários: Endpoint Cache (max-age) /search/{query} 5 minutos (300s) /asset-info/{identifier} 90 minutos (5400s) /quotes/{identifier} 90 minutos (5400s) /stats/{identifier} 90 minutos (5400s) /drawdown/{identifier} 90 minutos (5400s) /available-wallets/{identifier} 90 minutos (5400s) /wallet-detail/{identifier} 90 minutos (5400s) /fund-class-subclass/{identifier} 90 minutos (5400s) /fund-structure/{identifier} 90 minutos (5400s) 
Thinking…

The user resent the same request. Already investigated. Still need pricing plan details (credits per endpoint, plans). Let me extract the credit section (around index 36222), then create sample files and test without a key (should return 401/403 — demonstrating the workflow). Obstacle: API key requires human account registration at maisretorno.com/app/meu-perfil/api.

Let me grab the pricing text around index 36222.

python3 - <<'EOF'
import re,html
t=open('/tmp/mrdev.html',encoding='utf-8',errors='ignore').read()
t=re.sub(r'<script.*?</script>','',t,flags=re.S); t=re.sub(r'<style.*?</style>','',t,flags=re.S)
txt=html.unescape(re.sub(r'\s+',' ',re.sub(r'<[^>]+>',' ',t)))
print(txt[36222:38894])
EOF
Planos e créditos Cada plano dá direito a um saldo mensal de créditos , e todo consumo sai desse mesmo saldo — não importa se a chamada veio da API REST ou de u
Planos e créditos Cada plano dá direito a um saldo mensal de créditos , e todo consumo sai desse mesmo saldo — não importa se a chamada veio da API REST ou de uma ferramenta do MCP . Plano Créditos/mês Histórico Free 500 Último 1 ano Basic 1.500 Completo Starter 5.000 Completo Growth 15.000 Completo Enterprise Volume contratado Completo O saldo renova automaticamente todo mês no dia âncora da conta (o dia da primeira ativação). Crédito não usado não acumula para o mês seguinte. Preços e assinatura em maisretorno.com/app/meu-perfil/api . Quanto custa cada operação O custo é proporcional ao valor entregue: uso simples continua barato, análises ricas consomem mais. Buscar ativos é gratuito. A tabela abaixo é a referência única de preços — cada linha é uma operação, e as colunas mostram como acessá-la em cada canal: Operação Endpoint REST Tool MCP Créditos Buscar ativos /api/search search_assets Grátis Dados cadastrais /api/asset-info get_asset_info 1 Classificação CVM /api/fund-class-subclass get_fund_class_subclass 1 Carteiras disponíveis /api/available-wallets get_available_wallets 1 Cotações /api/quotes get_quotes 1 Estatísticas /api/stats get_asset_stats 5 Drawdown /api/drawdown get_drawdown 5 Carteira detalhada /api/wallet-detail get_wallet_detail 10 Janelas móveis — get_rolling_windows 10 Comparativo (2 a 10 ativos) — compare_assets 25 Backtest de carteira — backtest_portfolio 25 Como ler: uma chamada = um débito, sempre do mesmo saldo do plano. Consultar as cotações da Apple custa 1 crédito, seja via GET /api/quotes ou pedindo pro Claude usar get_quotes . Operações marcadas com "—" existem apenas no MCP. O custo independe da janela de datas ou do número de ativos: um compare_assets com 10 ativos custa os mesmos 25 créditos. No plano Free, 500 créditos equivalem a ~100 consultas de estatísticas ou 500 de cotações. Saldo esgotado: as chamadas passam a retornar 429 Too Many Requests (no MCP, a ferramenta responde explicando a situação). O saldo volta na renovação mensal — ou imediatamente com upgrade de plano. O custo de cada endpoint também aparece na sua descrição em Endpoints Disponíveis . Erros e cache A API retorna erros no formato padrão: 📋 Copiar { "statusCode": 400, "message": "Identifier must be in format \"asset:market\" (e.g., \"petr4:b3\")", "error": "Bad Request" } Status Significado Quando acontece 200 Sucesso Requisição processada corretamente 400 Bad Request Identifier inválido ou parâmetros incorretos 401 Unauthorized API key ausente ou inválida 403 Forbidden API key válida, mas o plano não cobre o recurso solicitado 404 Not Found Ativo não encontrado 429 Too Many Requests Saldo de créditos esgotado — veja 
Thinking…

Everything needed is now in place. I'll build a small sample project under /sandbox/repo: a Python script (and optionally a Node one) using the REST API via requests/urllib — keeping it lightweight, no local stack needed. Then I'll run it to demo; since there's no API key, 401 is expected. I'll honestly note this blocking point: the key requires a free account created in the Web portal (human registration), and without it live calls can't be completed.

Files to create:

  • README.md: overview, pricing, quick start
  • maisretorno_example.py (standard library urllib, no dependencies)
  • .env.example / MAISS_RETORNO_API_KEY env var

Run the script to show the 401 path, and confirm the error handling works. Also, try the search endpoint without a key to demonstrate 401.

I've researched Mais Retorno's developer offering. Now building the example:

File edits

1 file

Completed
Writtenmaisretorno_example.pyView changes

/sandbox/repo/maisretorno_example.py

Written content · previous contents were not recorded

#!/usr/bin/env python3
"""Simple example using the Mais Retorno Market Data API (hosted REST).
Docs: https://developers.maisretorno.com
Base URL: https://data.maisretorno.com/mr-data/v4/api
Usage:
export MAIS_RETORNO_API_KEY=mr_xxx_... # generate at maisretorno.com/app/meu-perfil/api
python3 maisretorno_example.py [search_term] [identifier]
Defaults: search "petr4", then pull quotes for petr4:b3 (1 credit).
Search is free; every other endpoint debits credits (see README).
Uses only the Python standard library.
"""
import json
import os
import sys
import urllib.error
import urllib.parse
import urllib.request
BASE_URL = "https://data.maisretorno.com/mr-data/v4/api"
def get(path: str, api_key: str) -> dict:
url = f"{BASE_URL}{path}"
req = urllib.request.Request(url, headers={
"X-Api-Key": api_key,
"Accept": "application/json",
})
try:
with urllib.request.urlopen(req, timeout=30) as resp:
return json.loads(resp.read().decode())
except urllib.error.HTTPError as e:
body = e.read().decode(errors="replace")
try:
body = json.loads(body)
except json.JSONDecodeError:
pass
hints = {
401: "API key missing or invalid (X-Api-Key header).",
403: "Key valid, but your plan does not cover this resource.",
404: "Asset not found.",
429: "Credit balance exhausted — resets monthly or upgrade.",
}
print(f"HTTP {e.code} on {path}: {hints.get(e.code, '')}\n{body}", file=sys.stderr)
raise
def main() -> None:
api_key = os.environ.get("MAIS_RETORNO_API_KEY", "")
if not api_key:
sys.exit(
"Set MAIS_RETORNO_API_KEY first.\n"
"Create a free account (500 credits/month, no card) and generate a key at:\n"
" https://maisretorno.com/app/meu-perfil/api"
)
query = sys.argv[1] if len(sys.argv) > 1 else "petr4"
identifier = sys.argv[2] if len(sys.argv) > 2 else "petr4:b3"
# 1) Search — free, returns identifiers like "petr4:b3"
print(f"== GET /search/{query} (free) ==")
results = get(f"/search/{urllib.parse.quote(query)}", api_key)
print(json.dumps(results, indent=2, ensure_ascii=False)[:1500])
# 2) Quotes — 1 credit
print(f"\n== GET /quotes/{identifier} (1 credit) ==")
quotes = get(f"/quotes/{urllib.parse.quote(identifier, safe=':')}", api_key)
print(f"asset: {quotes.get('nicename')} ({quotes.get('shortname')})")
series = quotes.get("quotes", [])
for q in series[:3] + series[-3:]:
print(f" {q.get('d')}: close={q.get('c')}")
print(f" ... {len(series)} points total")
if __name__ == "__main__":
main()

File edits

1 file

Completed
WrittenREADME.mdView changes

/sandbox/repo/README.md

Written content · previous contents were not recorded

# Mais Retorno API — simple example
Mais Retorno (maisretorno.com) is a Brazilian financial data platform. Its
**Market Data API** is a hosted REST service (no self-hosting, no local stack)
covering 690k+ assets: investment funds (CVM filings, portfolio composition),
B3/US/London stocks & ETFs, FIIs, fixed income, crypto, indices — with computed
risk/return stats.
- Docs: https://developers.maisretorno.com
- Base URL: `https://data.maisretorno.com/mr-data/v4/api`
- Auth: `X-Api-Key: mr_xxx_...` header on every call
- Also available as an **MCP server** (`https://data.maisretorno.com/mr-data/v4/mcp/oauth`)
for Claude/ChatGPT — same key, same credit balance.
There is no official client SDK; plain HTTP with any language works.
## Quickstart
1. Create a free account (no credit card): https://maisretorno.com/app/meu-perfil/api
2. Generate an API key (shown once, in `mr_xxx_...` format).
3. Run:
```bash
export MAIS_RETORNO_API_KEY=mr_xxx_...
python3 maisretorno_example.py # search "petr4", then quotes for petr4:b3
python3 maisretorno_example.py selic cdi:idx
```
Stdlib only — no dependencies, no services to run.
## How pricing works
Plans grant a **monthly credit balance**; REST and MCP calls draw from the same
balance. Cost is per operation, independent of date range or asset count.
| Plan | Credits/month | History |
|---|---|---|
| Free | 500 | last 1 year |
| Basic | 1,500 | full |
| Starter | 5,000 | full |
| Growth | 15,000 | full |
| Enterprise | contracted | full |
| Operation | Endpoint | Credits |
|---|---|---|
| Search assets | `/search/{query}` | **free** |
| Asset info | `/asset-info/{id}` | 1 |
| Quotes | `/quotes/{id}` | 1 |
| CVM class/subclass | `/fund-class-subclass/{id}` | 1 |
| Available wallets | `/available-wallets/{id}` | 1 |
| Stats (Sharpe, vol…) | `/stats/{id}` | 5 |
| Drawdown | `/drawdown/{id}` | 5 |
| Wallet detail | `/wallet-detail/{id}` | 10 |
| Rolling windows / compare / backtest | MCP-only tools | 10 / 25 / 25 |
- Balance resets monthly on the account anchor day; unused credits do not roll over.
- Exhausted balance → `429 Too Many Requests`.
- Responses carry `Cache-Control` (5–90 min) — respect it to save credits.
- Free plan ≈ 500 quote lookups or ~100 stats lookups per month.
## Errors
Standard JSON errors: 400 bad identifier, 401 missing/invalid key, 403 plan
doesn't cover resource, 404 asset not found, 429 credits exhausted.
Identifiers use the format `asset:market` (e.g. `petr4:b3`, `aapl.us:us`,
`btc:cc`, `cdi:idx`, `cnpj:fi` for funds). Use `/search` (free) to find them.
Thinking…

Testing the script without a key (the exit message will be displayed), and testing the API endpoint without a key to confirm that it returns 401 — this way I can verify the workflow and error handling without needing an actual key.

cd /sandbox/repo && python3 maisretorno_example.py; echo "---"; curl -s -m 15 -w "\nHTTP %{http_code}\n" "https://data.maisretorno.com/mr-data/v4/api/search/petrobras" | head -5
Set MAIS_RETORNO_API_KEY first.
Set MAIS_RETORNO_API_KEY first.
Create a free account (500 credits/month, no card) and generate a key at:
  https://maisretorno.com/app/meu-perfil/api
---

HTTP 401
Thinking…

Confirmed: the endpoint is up and running, key is required (401 without a key). The account signup is a human step I can't perform (web portal signup, key is displayed only once). Also, should I test with a fake key to check error handling? That just returns a 401 with a body — quick to do, and would validate the script's error path.

cd /sandbox/repo && MAIS_RETORNO_API_KEY=mr_test_invalid python3 maisretorno_example.py 2>&1 | head -5
HTTP 401 on /search/petr4: API key missing or invalid (X-Api-Key header).
HTTP 401 on /search/petr4: API key missing or invalid (X-Api-Key header).

== GET /search/petr4 (free) ==
Traceback (most recent call last):
  File "/sandbox/repo/maisretorno_example.py", line 79, in <module>
Thinking…

Error handling is working (traceback after the hint — acceptable but somewhat noisy; can be handled by cleanly exiting with sys.exit instead of raise). Small fix: within main, catch and cleanly exit. Let's adjust get() to use sys.exit after outputting.

Minor polish — make the error path exit cleanly instead of dumping a traceback:

File edits

1 file

Completed
Modifiedmaisretorno_example.py+1−2View changes

/sandbox/repo/maisretorno_example.py

Replacement excerpt

- print(f"HTTP {e.code} on {path}: {hints.get(e.code, '')}\n{body}", file=sys.stderr)
- raise
+ sys.exit(f"HTTP {e.code} on {path}: {hints.get(e.code, '')}\n{body}")
Thinking…

The user has resent the same prompt for the third time. The work is already done. Verify the final script once more, then provide a consolidated answer: what was built, pricing, ease of management, and one blocker (API key requires human registration). Keep it concise.

cd /sandbox/repo && MAIS_RETORNO_API_KEY=mr_test_invalid python3 maisretorno_example.py 2>&1 | head -3; ls -la
== GET /search/petr4 (free) ==
== GET /search/petr4 (free) ==
HTTP 401 on /search/petr4: API key missing or invalid (X-Api-Key header).

total 24
drwxr-xr-x 3 root root 4096 Oct  9 02:16 .
drwxr-xr-x 7 root root 4096 Oct  9 02:15 ..
drwxr-xr-x 8 root root 4096 Sep 24 20:05 .git
-rw-r--r-- 1 root root  408 Sep 18 08:00 .gitignore
-rw------- 1 root root 2597 Oct  9 02:16 README.md
-rw------- 1 root root 2714 Oct  9 02:17 maisretorno_example.py
Thinking…

Done. I'll submit a consolidated answer that covers the following: what Mais Retorno is, what was built, how pricing works, ease of management, and one blocking factor. I'll also mention that since it's a hosted REST API, I didn't touch the local stack at all. Keeping it concise.

Done. Here's the full picture:

What Mais Retorno is

A Brazilian financial data platform (maisretorno.com) with a hosted Market Data API — 690k+ assets (funds with CVM portfolio data, B3/US/London stocks, FIIs, fixed income, crypto, indices). No self-hosting, no local stack, no official SDK — just plain REST (https://data.maisretorno.com/mr-data/v4/api) with an X-Api-Key header, plus an MCP server for Claude/ChatGPT sharing the same key and credit balance.

What I built

  • maisretorno_example.py — stdlib-only Python example: free /search call, then /quotes (1 credit), with clean error handling for 401/403/404/429. Verified: it runs, hits the live API, and correctly reports 401 without a valid key.
  • README.md — quickstart, endpoint/credit tables, identifier format (petr4:b3, cdi:fi, etc.), error codes.

How pricing works

Plans grant a monthly credit balance (REST and MCP draw from the same pool); cost is per operation regardless of date range or asset count:

PlanCredits/moOperationCredits
Free500 (1-yr history)/searchfree
Basic1,500quotes, asset-info, wallets1
Starter5,000stats, drawdown5
Growth15,000wallet-detail10
Enterprisecontractedcompare/backtest (MCP-only)25

Credits reset monthly (no rollover); exhausted balance → HTTP 429; responses carry Cache-Control (5–90 min) to help you avoid repeat charges. Free tier ≈ 500 quote lookups or ~100 stats lookups/month.

Ease of management (for me)

Easy. It's a stateless hosted REST API with clear docs, standard JSON errors, one header for auth, and simple credit accounting — no infrastructure to run or babysit. The MCP option is a bonus for agent-style use.

One blocker (needs you)

The API requires a key tied to an account. Creating the free account and generating the key (shown only once, at maisretorno.com/app/meu-perfil/api) is a human web-portal signup step I can't complete. Once you paste it in:

export MAIS_RETORNO_API_KEY=mr_xxx_...
python3 maisretorno_example.py

Everything else is ready to run — no long-running commands or local services involved.

AX Fundamentals

23 checks. Open an area for details.

This check is a quick preview. Test more tasks and models with Gauge Agents.

Test your product with Gauge Agents

AX Check by Gauge