IBGE Brasil MCP
Server Details
MCP server for live, sourced Brazilian public data from the official IBGE APIs.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- SidneyBissoli/ibge-br-mcp
- GitHub Stars
- 4
- Server Listing
- IBGE Brasil MCP
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.7/5 across 22 of 22 tools scored.
Each tool targets a distinct resource or data type (e.g., calendar vs. news, census vs. indicators, municipality panel vs. comparison). The descriptions include explicit 'Use a different tool when' guidance, making it easy for an agent to choose correctly.
All tools follow the 'ibge_' prefix with a descriptive noun (e.g., ibge_censo, ibge_cidades, ibge_indicadores). Even compound names like ibge_sidra_tabelas use consistent snake_case and clear resource identifiers. No mixing of naming conventions.
At 22 tools, the set is larger than typical but justified by the breadth of IBGE data (calendar, census, cities, indicators, geography, SIDRA, etc.). Each tool serves a focused purpose, and the count is reasonable for a comprehensive national statistics API.
The tool set covers major IBGE domains: calendar, census (with themes), city panels, indicators (economic, social, health), geographic meshes (admin and thematic), population estimates, news, classifications (CNAE), and full SIDRA access. Gaps like specific surveys are addressed by the low-level ibge_sidra tool.
Available Tools
22 toolsibge_calendarioARead-onlyIdempotentInspect
Queries IBGE release and collection calendar.
Features:
List upcoming survey releases
Filter by product (IPCA, PNAD, GDP, etc.)
Filter by period
Distinguish releases from field collections
Event types:
Release: Publication of survey results
Collection: Field research period
Examples:
Upcoming releases: (no parameters)
IPCA releases: produto="IPCA"
2024 calendar: de="01/01/2024", ate="31/12/2024"
Field collections: tipo="coleta"
Use a different tool when:
Already-published news and releases → ibge_noticias
Behavior: read-only and idempotent — a live GET against the public IBGE Calendário API. Returns a Markdown list.
| Name | Required | Description | Default |
|---|---|---|---|
| de | No | Data inicial no formato DD/MM/AAAA (ex: '01/01/2024') | |
| ate | No | Data final no formato DD/MM/AAAA (ex: '31/12/2024') | |
| tipo | No | Tipo de evento: 'divulgacao' (publicações), 'coleta' (pesquisas de campo), ou 'todos' | divulgacao |
| pagina | No | Número da página (padrão: 1) | |
| produto | No | Filtrar por produto/pesquisa (ex: 'IPCA', 'PNAD', 'PIB') | |
| quantidade | No | Quantidade de resultados por página (padrão: 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Total de eventos disponíveis para os critérios |
| pagina | No | Página atual retornada |
| eventos | Yes | Lista de eventos do calendário (divulgações/coletas) |
| produto | No | Filtro de produto aplicado, quando informado |
| totalPaginas | No | Total de páginas disponíveis |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive. Description confirms these and adds return format (Markdown list) and API source. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: Features, Event types, Examples, Use other tool, Behavior. Each sentence is purposeful and concise, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters (none required), high schema coverage, annotations, and output schema presence, the description covers purpose, usage, behavior, examples, and alternatives thoroughly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions. The description adds value through concrete examples and English translations for enum values (e.g., 'divulgacao' → 'publications'), making parameters more understandable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries the IBGE release and collection calendar, listing specific features and event types. It distinguishes from sibling ibge_noticias, which handles already-published news.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance through examples (upcoming releases, filtering by product/period, event types). Explicitly states when to use a different tool: for already-published news → ibge_noticias.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_censoARead-onlyIdempotentInspect
Queries IBGE Demographic Census data (1970-2022).
Simplified tool to access census data without knowing SIDRA table codes.
Available years: 1970, 1980, 1991, 2000, 2010, 2022
Available themes:
populacao: Resident population
alfabetizacao: Literacy rate
domicilios: Housing characteristics
idade_sexo: Age pyramid
religiao: Religion distribution
cor_raca: Race/color
rendimento: Monthly income
educacao: Education level
trabalho: Employment
Examples:
Population 2022: ano="2022", tema="populacao"
Historical series: ano="todos", tema="populacao"
Literacy 2010 by state: ano="2010", tema="alfabetizacao", nivel_territorial="3"
List tables: tema="listar"
Use a different tool when:
Current real-time Brazil population → ibge_populacao
One municipality's current panel (estimate, HDI, GDP) → ibge_cidades
Comparing/ranking localities → ibge_comparar
An arbitrary SIDRA table → ibge_sidra
Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns Markdown plus a typed structuredContent payload.
| Name | Required | Description | Default |
|---|---|---|---|
| ano | No | Ano do censo (1970, 1980, 1991, 2000, 2010, 2022) ou 'todos' para série histórica | |
| tema | No | Tema dos dados: - populacao: População residente - alfabetizacao: Taxa de alfabetização - domicilios: Características dos domicílios - idade_sexo: Pirâmide etária - religiao: Distribuição por religião - cor_raca: Cor ou raça - rendimento: Rendimento mensal - migracao: Migração - educacao: Nível de instrução - trabalho: Ocupação e trabalho - indigenas: População indígena - quilombolas: População quilombola - saneamento: Abastecimento de água e esgoto - deficiencia: Pessoas com deficiência - nupcialidade: Estado civil - fecundidade: Taxa de fecundidade - listar: Lista tabelas disponíveis | populacao |
| campos | No | Selecionar apenas algumas colunas por rótulo, separadas por vírgula (ex: 'Valor,Ano'). Reduz o volume da resposta. | |
| formato | No | Formato de saída | tabela |
| localidades | No | Códigos das localidades ou 'all' | all |
| nivel_territorial | No | Nível territorial (código N): 1=Brasil, 2=Região, 3=UF, 6=Município | 1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| ano | No | Ano(s) de referência |
| tema | No | Tema do censo consultado |
| tabela | No | Tabela SIDRA de origem |
| colunas | Yes | Rótulos das colunas, na ordem |
| descricao | No | Descrição da tabela |
| registros | Yes | Registros: cada um mapeia rótulo da coluna -> valor |
| totalRegistros | Yes | Total de registros de dados |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint false. The description adds that it is a live GET against the public IBGE SIDRA API and returns both Markdown and structuredContent, which goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections: purpose, years, themes, examples, alternatives, behavior. Front-loaded with the main purpose. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, many enums, no required params), the description is fully complete. It covers all parameters through examples, lists themes extensively, and mentions output format (Markdown + structuredContent).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed enum descriptions. The description adds value with usage examples (e.g., historical series with 'todos', listing tables with 'listar') and explains the 'campos' parameter to reduce response volume.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries IBGE Demographic Census data (1970-2022) and lists available years and themes. It distinguishes from siblings by providing specific alternatives (ibge_populacao, ibge_cidades, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use this tool (census data) and when to use other tools (current population, municipality panels, comparisons, arbitrary SIDRA tables). Includes concrete examples of valid inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_cidadesARead-onlyIdempotentInspect
Queries municipal indicators from IBGE (similar to Cidades@ portal).
Features:
General overview of a municipality (population, HDI, GDP, etc.)
Query specific indicators
Historical indicator data over years
List available surveys and indicators
Available indicators: populacao, area, densidade, pib_per_capita, idh, escolarizacao, mortalidade, salario_medio, receitas, despesas
Examples:
São Paulo overview: tipo="panorama", municipio="3550308"
Population history: tipo="historico", municipio="3550308", indicador="populacao"
View surveys: tipo="pesquisas"
Available indicators: tipo="indicador"
This tool is the panel for a SINGLE municipality (Cidades@). Use a different tool when:
Real-time Brazil population → ibge_populacao
Census themes / historical series → ibge_censo
Comparing multiple municipalities → ibge_comparar
A macro indicator time series → ibge_indicadores
Behavior: read-only and idempotent — a live GET against the public IBGE APIs (Cidades@/agregados). Returns Markdown plus a typed structuredContent payload.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | Código ou sigla da UF para filtrar (ex: 35 ou SP) | |
| tipo | No | Tipo de consulta: panorama (resumo geral), indicador (específico), pesquisas (listar), historico | panorama |
| pesquisa | No | ID da pesquisa para filtrar indicadores | |
| indicador | No | ID do indicador ou nome para busca | |
| municipio | No | Código IBGE do município (7 dígitos) |
Output Schema
| Name | Required | Description |
|---|---|---|
| nome | No | Nome do município/indicador |
| tipo | Yes | Tipo de consulta (panorama, indicador, pesquisas, historico) |
| municipio | No | Código IBGE do município |
| indicadores | Yes | Indicadores retornados (vazio para respostas de catálogo) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds behavioral context beyond annotations: specifies it is a live GET against public IBGE APIs, returns Markdown plus typed structured content. Annotations already declare readOnly, idempotent, and non-destructive, and description reinforces without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise (short paragraphs, bullet points, and examples), well-structured with clear sections, and front-loaded with the main purpose. Every sentence provides useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given tool complexity (5 parameters, multiple query types), description completely covers functionality: available indicators, example uses, return format, and relationship to siblings. Output schema exists, so no need to detail return fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds value by listing available indicator names (populacao, area, etc.) and providing concrete examples showing parameter combinations, though schema already documents each parameter well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it queries municipal indicators from IBGE's Cidades@ portal, lists specific features (panorama, historical, surveys), and provides examples. It distinguishes itself from 4 sibling tools by name and use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool (single municipality panel) and when not to, listing 4 alternative tools (ibge_populacao, ibge_censo, ibge_comparar, ibge_indicadores) with specific scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_cnaeARead-onlyIdempotentInspect
Queries CNAE (National Classification of Economic Activities) from IBGE.
CNAE is the official classification for economic activities in Brazil.
Hierarchical structure:
Section (letter A-U): 21 main categories
Division (2 digits): 87 divisions
Group (3 digits): 285 groups
Class (4-5 digits): 673 classes
Subclass (7 digits): 1,332 subclasses
Features:
Search by CNAE code
Search by activity description
List by hierarchical level
Show complete hierarchy
Examples:
Search software: busca="software"
Specific code: codigo="6201-5/01"
View section: codigo="J"
List divisions: nivel="divisoes"
Behavior: read-only and idempotent — a live GET against the public IBGE CNAE API. Returns Markdown.
| Name | Required | Description | Default |
|---|---|---|---|
| busca | No | Termo para buscar na descrição das atividades (ex: 'software', 'restaurante', 'comércio') | |
| nivel | No | Nível hierárquico para listar (padrão: mostra todos os níveis relevantes) | |
| codigo | No | Código CNAE para buscar (seção, divisão, grupo, classe ou subclasse). Exemplos: - Seção: "A" (agricultura) - Divisão: "01" (agricultura e pecuária) - Grupo: "01.1" (produção de lavouras) - Classe: "01.11" (cultivo de cereais) - Subclasse: "0111-3/01" (cultivo de arroz) | |
| limite | No | Número máximo de resultados (padrão: 20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| modo | Yes | Modo de resposta que gerou os dados |
| busca | No | Presente no modo de busca por termo |
| lista | No | Presente no modo de listagem por nível |
| codigo | No | Presente no modo de consulta por código |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the tool is read-only, idempotent, and performs a live GET against the IBGE API, returning Markdown. This adds valuable behavioral context beyond the annotations, which already mark readOnlyHint and idempotentHint. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, hierarchy, features, examples, behavior). It is slightly verbose but each sentence adds information; front-loaded with the main verb. Could be trimmed slightly without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (hierarchical classification, multiple search modes), the description covers all necessary aspects: what it does, structure, search features, examples, and behavior. Output schema exists to handle return details, so description is appropriately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides thorough descriptions for all 4 parameters (100% coverage). The tool description adds value by including concrete usage examples (e.g., busca='software'), which help the agent understand typical usage patterns beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries CNAE from IBGE, explains the hierarchical structure, and lists specific search features. The tool name itself indicates the domain, and the description distinguishes it from sibling IBGE tools by focusing on economic classification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context through examples and feature list, but does not explicitly compare with sibling tools. However, the domain-specific name and unique features (CNAE hierarchy) make the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_compararARead-onlyIdempotentInspect
Compares data between localities (municipalities or states).
Available indicators:
populacao: Current population estimate
populacao_censo: Census 2022 population
pib: GDP per capita
area: Territorial area (km²)
densidade: Population density (inhab/km²)
alfabetizacao: Literacy rate
domicilios: Number of households
Features:
Compare up to 10 localities at once
Calculate statistics (max, min, average, variation)
Generate ranked output
Accept municipality codes (7 digits) or state codes (2 digits)
Examples:
Compare capitals: localidades="3550308,3304557,4106902", indicador="populacao"
Compare states: localidades="35,33,41", indicador="pib"
Area ranking: localidades="3550308,3304557", formato="ranking"
List indicators: indicador="listar"
Use this tool ONLY to rank/compare 2–10 localities on one indicator. For a single locality, use ibge_cidades (municipal panel), ibge_censo, or ibge_sidra.
Behavior: read-only and idempotent — a live GET against the public IBGE APIs (SIDRA and Localidades). Returns Markdown plus a typed structuredContent payload.
| Name | Required | Description | Default |
|---|---|---|---|
| formato | No | Formato de saída: tabela, json ou ranking (ordenado) | tabela |
| indicador | No | Indicador para comparação: - populacao: Estimativa populacional atual - populacao_censo: População do Censo 2022 - pib: PIB per capita - area: Área territorial (km²) - densidade: Densidade demográfica (hab/km²) - alfabetizacao: Taxa de alfabetização - domicilios: Número de domicílios - listar: Lista indicadores disponíveis | populacao |
| localidades | Yes | Códigos IBGE das localidades separados por vírgula (ex: "3550308,3304557,4106902"). Use 7 dígitos para municípios, 2 dígitos para UFs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| nome | No | Nome do indicador |
| tabela | No | Tabela SIDRA de origem |
| formato | No | Formato solicitado |
| indicador | No | Indicador comparado |
| localidades | Yes | Localidades comparadas, com o valor do indicador |
| estatisticas | No | Estatísticas agregadas (quando há ao menos 2 valores positivos) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds that it's a live GET against IBGE APIs and returns Markdown plus structuredContent payload, providing useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet points and examples. While detailed, all information is relevant and front-loaded; minor redundancy with schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Thorough coverage: purpose, alternatives, behavior, parameter semantics, output format, and examples. Output schema exists, so return values are handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions. Description further adds examples, constraints (max 10 localities), and indicator list context, surpassing the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'compares' and resource 'localities data' with specific scope (municipalities/states). Distinguishes from siblings like ibge_cidades (single locality) and ibge_sidra.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this tool ONLY to rank/compare 2–10 localities on one indicator' and lists alternatives for single locality queries (ibge_cidades, ibge_censo, ibge_sidra).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_datasaudeARead-onlyIdempotentInspect
Queries Brazil health indicators, served through IBGE's SIDRA (some originally produced by DataSUS, e.g. mortality and births).
Mortality and Birth:
mortalidade_infantil: Infant mortality rate
nascidos_vivos: Live births by location
obitos: Deaths by residence
obitos_causas: Deaths by cause (ICD-10)
Demographic Indicators:
esperanca_vida: Life expectancy at birth
fecundidade: Fertility rate
Sanitation:
saneamento_agua: Water supply
saneamento_esgoto: Sewage system
Health Coverage:
plano_saude: Health insurance coverage
autoavaliacao_saude: Self-rated health status
Territorial levels: 1=Brazil, 2=Region, 3=State, 6=Municipality
Examples:
Infant mortality: indicador="mortalidade_infantil"
Life expectancy by state: indicador="esperanca_vida", nivel_territorial="3"
Deaths in SP: indicador="obitos", nivel_territorial="3", localidade="35"
List indicators: indicador="listar"
Use a different tool when:
A single municipality's general panel (which also includes infant mortality) → ibge_cidades
Population/demographic counts (not health-specific) → ibge_censo or ibge_sidra
Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns Markdown plus a typed structuredContent payload.
| Name | Required | Description | Default |
|---|---|---|---|
| campos | No | Selecionar apenas algumas colunas por rótulo, separadas por vírgula (ex: 'Valor,Ano'). Reduz o volume da resposta. | |
| formato | No | Formato de saída | tabela |
| periodo | No | Período: 'last', 'all', ou ano específico | last |
| indicador | Yes | Indicador de saúde. Disponíveis: - mortalidade_infantil: Taxa de mortalidade infantil - esperanca_vida: Esperança de vida ao nascer - nascidos_vivos: Nascidos vivos - obitos: Óbitos por local de residência - obitos_causas: Óbitos por causas (CID-10) - fecundidade: Taxa de fecundidade - saneamento_agua: Abastecimento de água - saneamento_esgoto: Esgotamento sanitário - plano_saude: Cobertura de plano de saúde - listar: Lista indicadores disponíveis | |
| localidade | No | Código da localidade ou 'all' | all |
| nivel_territorial | No | Nível territorial (código N): 1=Brasil, 2=Região, 3=UF, 6=Município | 1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| nome | No | Nome do indicador |
| fonte | No | Fonte do dado |
| colunas | Yes | Rótulos das colunas, na ordem |
| indicador | No | Chave do indicador de saúde consultado |
| registros | Yes | Registros: cada um mapeia rótulo da coluna -> valor |
| totalRegistros | Yes | Total de registros de dados |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds context: 'read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns Markdown plus a typed structuredContent payload.' No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, bullet points, and examples. Each part earns its place—no waste. Front-loaded with purpose and key indicators.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 params, many indicators, territorial levels, output schema exists), the description is thorough: covers data source, indicator list, territorial codes, behavioral notes, and output format. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (baseline 3). The description adds value by providing examples of parameter usage (e.g., indicador='mortalidade_infantil', nivel_territorial='3', localidade='35') and explaining territorial level codes. This goes beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries Brazil health indicators via IBGE's SIDRA, listing specific indicators and territorial levels. It differentiates from sibling tools like ibge_cidades, ibge_censo, and ibge_sidra by explaining when to use them instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use alternative tools: for a single municipality's general panel (ibge_cidades) and for population/demographic counts (ibge_censo or ibge_sidra). Also includes examples of parameter usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_estadosARead-onlyIdempotentInspect
Lists all Brazilian states from IBGE.
Features:
Lists all 27 states (26 states + Federal District)
Filter by region (North, Northeast, Southeast, South, Central-West)
Sort by ID, name, or abbreviation
Examples:
List all states: (no parameters)
Northeast states: regiao="NE"
Sorted by abbreviation: ordenar="sigla"
Use a different tool when:
Municipalities of a state → ibge_municipios
Details/hierarchy of one locality by code → ibge_localidade
Behavior: read-only and idempotent — a live GET against the public IBGE Localidades API. Returns a Markdown table.
| Name | Required | Description | Default |
|---|---|---|---|
| regiao | No | Filtrar por região: N (Norte), NE (Nordeste), SE (Sudeste), S (Sul), CO (Centro-Oeste) | |
| ordenar | No | Campo para ordenação dos resultados | nome |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Total de estados retornados |
| estados | Yes | Lista de estados |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses read-only, idempotent nature, and that it performs a live GET against the public IBGE API. Annotations already provide readOnlyHint, idempotentHint, etc., but description adds implementation detail and return format (Markdown table), adding value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: three short paragraphs plus bullet features and examples. No wasted words. Information is front-loaded with the main purpose in the first sentence. Examples are compact and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 optional parameters, no required ones, 100% schema coverage), the description is fully complete. It covers purpose, parameters, behavior, output format, and distinguishes from siblings. Output schema exists but description adds that returns are Markdown table, which is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters described in schema). Description enriches with concrete examples (e.g., regiao='NE', ordenar='sigla'), showing how to use each parameter effectively beyond the schema's enum lists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Lists all Brazilian states from IBGE' with specific verb and resource. It distinguishes from sibling tools by explicitly naming alternatives (ibge_municipios, ibge_localidade) for related but different queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance on when to use this tool (list states) and when to use others, with explicit 'Use a different tool when' section. Includes parameter usage examples for filtering and sorting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_geocodigoARead-onlyIdempotentInspect
Decodes IBGE codes or searches codes by locality name.
Features:
Decode region, state, municipality, or district codes
Search IBGE code by name
Show complete geographic hierarchy
Return related codes
Code structure:
1 digit: Region (1=North, 2=Northeast, 3=Southeast, 4=South, 5=Central-West)
2 digits: State (11-53)
7 digits: Municipality
9 digits: District
Examples:
Decode municipality: codigo="3550308"
Decode state: codigo="35"
Search by name: nome="São Paulo"
Municipality in state: nome="Campinas", uf="SP"
This tool decodes a code's structure and resolves name→code at any level. Use a different tool when:
You only need to list/search municipalities → ibge_municipios
You want the full detailed record of one locality → ibge_localidade
Behavior: read-only and idempotent — a live GET against the public IBGE Localidades API. Returns Markdown.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | Estado por sigla (SP), nome (São Paulo) ou código IBGE (35) para restringir a busca por nome de município | |
| nome | No | Nome da localidade para encontrar o código IBGE (estado ou município) | |
| codigo | No | Código IBGE para decodificar. Formatos aceitos: - 1 dígito: Região (1-5) - 2 dígitos: UF (11-53) - 7 dígitos: Município - 9 dígitos: Distrito |
Output Schema
| Name | Required | Description |
|---|---|---|
| nome | No | Nome da localidade resolvida |
| tipo | Yes | Tipo do resultado: localidade decodificada (regiao/uf/municipio/distrito) ou lista de municípios encontrados (lista) |
| sigla | No | Sigla da região ou UF, quando aplicável |
| total | No | Quantidade de municípios encontrados na busca por nome (apenas tipo lista) |
| codigo | No | Código IBGE da localidade resolvida (ausente em resultados do tipo lista) |
| regiao | No | Nome da região à qual a UF pertence (apenas tipo uf) |
| estados | No | Estados pertencentes à região (apenas tipo regiao) |
| matches | No | Municípios encontrados na busca por nome (apenas tipo lista) |
| hierarquia | No | Hierarquia geográfica completa, da região ao município/distrito (tipo municipio/distrito) |
| codigoSidra | No | Código SIDRA de 6 dígitos do município (apenas tipo municipio) |
| regiaoCodigo | No | Código IBGE da região à qual a UF pertence (apenas tipo uf) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds valuable context: 'read-only and idempotent — a live GET against the public IBGE Localidades API. Returns Markdown.' This confirms and elaborates on the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and sections, front-loading the main purpose. It is concise enough given the complexity, though slightly lengthy; each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all necessary aspects: purpose, parameters with examples, code structure, behavior, return format (Markdown), and alternatives. Given the tool's complexity and the presence of an output schema, it is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all parameters with descriptions (100% coverage). The description goes further by explaining code structure and providing detailed examples, adding meaning beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: decoding IBGE codes and searching codes by locality name. It lists distinct features and explicitly distinguishes from sibling tools (ibge_municipios, ibge_localidade), making it easy for an agent to select the right tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool vs alternatives, with named siblings and specific use cases (e.g., 'Only need to list/search municipalities → ibge_municipios'). Examples further clarify usage contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_indicadoresARead-onlyIdempotentInspect
Queries IBGE economic and social indicators.
Available indicators:
Economic:
pib: GDP at current prices
pib_variacao: GDP variation (%)
pib_per_capita: GDP per capita
industria: Industrial production
comercio: Retail sales
servicos: Services volume
Prices:
ipca: Monthly IPCA
ipca_acumulado: 12-month IPCA
inpc: Monthly INPC
Labor:
desemprego: Unemployment rate
ocupacao: Employed people
rendimento: Average income
informalidade: Informality rate
Population:
populacao: Population estimate
densidade: Population density
Examples:
GDP: indicador="pib"
IPCA last 12 months: indicador="ipca", periodos="last 12"
Unemployment by state: indicador="desemprego", nivel_territorial="3"
List indicators: indicador="listar"
Use a different tool when:
Comparing/ranking localities → ibge_comparar
Census themes → ibge_censo
One municipality's panel → ibge_cidades
Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns Markdown plus a typed structuredContent payload.
| Name | Required | Description | Default |
|---|---|---|---|
| campos | No | Selecionar apenas algumas colunas por rótulo, separadas por vírgula (ex: 'Valor,Ano'). Reduz o volume da resposta. | |
| formato | No | Formato de saída | tabela |
| periodos | No | Períodos (ex: '2023', 'last', 'last 4') | last |
| categoria | No | Filtrar por categoria de indicadores | |
| indicador | No | Nome do indicador (ex: "pib", "ipca", "desemprego", "populacao"). Use "listar" para ver todos os indicadores disponíveis. | |
| localidades | No | Códigos das localidades ou 'all' | all |
| nivel_territorial | No | Nível territorial (código N): 1=Brasil, 2=Região, 3=UF | 1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| nome | No | Nome do indicador |
| tabela | No | Tabela SIDRA de origem |
| colunas | Yes | Rótulos das colunas, na ordem |
| indicador | No | Chave do indicador consultado |
| registros | Yes | Registros: cada um mapeia rótulo da coluna -> valor |
| totalRegistros | Yes | Total de registros de dados |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint. The description adds that it is a read-only, idempotent live GET against the public IBGE SIDRA API, and returns Markdown plus a typed structuredContent payload. This enriches beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet points for indicator categories and examples. Concise yet comprehensive, with front-loaded purpose and clear formatting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, none required, and an output schema, the description provides a complete overview: purpose, available indicators, usage examples, behavior, and alternatives. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. The description lists available indicator names and usage examples but does not significantly add to parameter meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries IBGE economic and social indicators, listing specific categories and indicators. It distinguishes from siblings by naming alternative tools for different use cases (ibge_comparar, ibge_censo, ibge_cidades).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use alternative tools: comparing localities → ibge_comparar, census themes → ibge_censo, municipal panel → ibge_cidades. Includes examples of typical queries (GDP, IPCA, unemployment).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_localidadeARead-onlyIdempotentInspect
Returns details of a specific locality by IBGE code.
Features:
State information (2-digit code)
Municipality information (7-digit code)
District information (9-digit code)
Complete hierarchy (region, mesoregion, microregion)
Examples:
São Paulo state: codigo=35
São Paulo city: codigo=3550308
District: codigo=355030805
This tool returns the full record of ONE locality you already have the code for. Use a different tool when:
You have a name and need the code → ibge_municipios (municipalities) or ibge_geocodigo (any level)
You want to decompose/understand a code's structure → ibge_geocodigo
Behavior: read-only and idempotent — a live GET against the public IBGE Localidades API. Returns a Markdown record.
| Name | Required | Description | Default |
|---|---|---|---|
| tipo | No | Tipo da localidade. Se não informado, será inferido pelo tamanho do código. | |
| codigo | Yes | Código IBGE da localidade (estado: 2 dígitos, município: 7 dígitos, distrito: 9 dígitos) |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Código IBGE da localidade |
| nome | Yes | Nome da localidade |
| tipo | Yes | Tipo da localidade retornada |
| sigla | No | Sigla da UF (apenas para estados) |
| estado | No | Estado da localidade (município ou distrito) |
| regiao | No | Região do estado (apenas para estados) |
| municipio | No | Município ao qual o distrito pertence (apenas para distritos) |
| mesorregiao | No | Mesorregião do município |
| microrregiao | No | Microrregião do município |
| regiaoImediata | No | Região imediata do município |
| regiaoIntermediaria | No | Região intermediária do município |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states that the tool is read-only and idempotent, which aligns with the annotations. It also adds context beyond annotations by mentioning it is a 'live GET against the public IBGE Localidades API' and that it 'returns a Markdown record,' providing additional behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, well-structured with bullet points for features and examples, and front-loaded with the primary purpose. Every sentence adds value, with no redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description adequately covers all necessary aspects: purpose, usage conditions, behavioral traits, output format (Markdown record), and examples. It is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by providing concrete examples of code values (e.g., 35 for São Paulo state) that illustrate the parameter usage, helping to clarify the meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns details of a specific locality by IBGE code, using a specific verb ('returns') and resource ('locality'). It distinguishes from sibling tools by explicitly mentioning alternatives for other use cases (e.g., ibge_municipios, ibge_geocodigo).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool (when you already have the code for one locality) and when not to use it (when you have a name and need the code, or want to decompose a code's structure), with direct references to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_malhasARead-onlyIdempotentInspect
Gets geographic meshes (maps) from IBGE in GeoJSON, TopoJSON, or SVG format.
Features:
Meshes for Brazil, regions, states, municipalities
Different resolution levels (internal divisions)
Different quality levels
Formats: GeoJSON (data), TopoJSON (compact), SVG (image)
Locality types:
"BR" or "1" = Entire Brazil
State abbreviation (e.g., "SP", "RJ")
State code (e.g., "35" for SP)
Municipality code (7 digits)
Resolution (internal divisions):
0 = Outline only
2 = States
5 = Municipalities
Examples:
Brazil with states: localidade="BR", resolucao="2"
São Paulo with municipalities: localidade="SP", resolucao="5"
SVG format: localidade="BR", formato="svg"
Use a different tool when:
Thematic meshes (biomes, Legal Amazon, semi-arid, metropolitan regions) → ibge_malhas_tema
Behavior: read-only and idempotent — a live GET against the public IBGE Malhas API. Returns the mesh in the requested format (GeoJSON, TopoJSON, or SVG).
| Name | Required | Description | Default |
|---|---|---|---|
| tipo | No | Tipo de divisão territorial | |
| formato | No | Formato de saída (padrão: geojson) | geojson |
| qualidade | No | Qualidade do traçado: 1=mínima, 2=baixa, 3=intermediária, 4=máxima | 4 |
| resolucao | No | Resolução/divisões internas: 0 = Sem divisões internas 1 = Macrorregiões (apenas para BR) 2 = Unidades da Federação 3 = Mesorregiões 4 = Microrregiões 5 = Municípios | 0 |
| localidade | Yes | Código IBGE ou sigla da localidade (ex: 'BR', 'SP', '35', '3550308') | |
| intrarregiao | No | Código de região para filtrar (apenas quando localidade=BR) |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | URL para download da malha completa |
| tipo | No | Tipo de divisão territorial, quando informado |
| formato | Yes | Formato de saída solicitado (geojson, topojson ou svg) |
| qualidade | No | Qualidade do traçado solicitada |
| resolucao | No | Resolução/divisões internas solicitada |
| localidade | Yes | Código IBGE ou sigla da localidade consultada |
| intrarregiao | No | Código de região usado para filtrar (apenas quando localidade=BR) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint. Description adds explicit confirmation of read-only, idempotent behavior and states it returns the mesh in requested format. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, bullet points, and examples. Front-loaded with purpose. Some minor redundancy (formats listed twice) but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters, 4 enums, and IBGE domain, the description covers locality types, resolution, quality, format, and usage guidance. Includes examples and alternatives. Output schema handles return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 6 parameters. Description adds meaning beyond schema by explaining locality types (e.g., 'BR', 'SP', '35') and resolution values (0=outline, 2=states, 5=municipalities) with examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Gets geographic meshes (maps) from IBGE' and lists specific resources (Brazil, regions, states, municipalities) and formats. It distinguishes from sibling tool ibge_malhas_tema for thematic meshes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use this tool and when to use ibge_malhas_tema instead. Provides examples for different locality types and resolutions, guiding agent selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_malhas_temaARead-onlyIdempotentInspect
Gets thematic geographic meshes from IBGE.
Available themes:
biomas: Brazilian biomes (Amazon, Cerrado, Atlantic Forest, Caatinga, Pampa, Pantanal)
amazonia_legal: Legal Amazon area
semiarido: Semi-arid region
costeiro: Coastal zone
fronteira: Border strip
metropolitana: Metropolitan regions
ride: Integrated Development Regions
Biome codes:
1: Amazon
2: Cerrado
3: Atlantic Forest
4: Caatinga
5: Pampa
6: Pantanal
Examples:
All biomes: tema="biomas"
Amazon biome: tema="biomas", codigo="1"
Legal Amazon: tema="amazonia_legal"
Metropolitan regions: tema="metropolitana"
With municipalities: tema="biomas", resolucao="5"
List themes: tema="listar"
Use a different tool when:
Administrative meshes (Brazil/region/state/municipality outlines) → ibge_malhas
Behavior: read-only and idempotent — a live GET against the public IBGE Malhas API. Returns the mesh in the requested format (GeoJSON, TopoJSON, or SVG).
| Name | Required | Description | Default |
|---|---|---|---|
| tema | Yes | Tema da malha: - biomas: Biomas brasileiros (Amazônia, Cerrado, etc.) - amazonia_legal: Área da Amazônia Legal - semiarido: Região do semiárido - costeiro: Zona costeira - fronteira: Faixa de fronteira - metropolitana: Regiões metropolitanas - ride: Regiões Integradas de Desenvolvimento - listar: Lista temas disponíveis | |
| codigo | No | Código específico do tema (ex: código do bioma, da região metropolitana) | |
| formato | No | Formato de saída | geojson |
| qualidade | No | Qualidade do traçado: 1=mínima, 4=máxima | 4 |
| resolucao | No | 0 = Apenas contorno, 5 = Com municípios | 0 |
Output Schema
| Name | Required | Description |
|---|---|---|
| tema | Yes | Tema da malha solicitada (ou 'listar') |
| temas | No | Lista de temas disponíveis (somente no modo 'listar') |
| codigo | No | Código específico do tema, quando informado |
| formato | No | Formato de saída (geojson, topojson, svg) |
| resolucao | No | Resolução da malha (0 = contorno, 5 = com municípios) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. Description adds that it's a live GET against the public API and returns the mesh in requested formats, which is consistent but not extensive beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with themes, codes, and examples. Slightly verbose but front-loaded with purpose. Each sentence contributes meaning, though could be trimmed slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists, description does not need to explain return values. Covers all parameters, theme options, disambiguation from siblings, and behavioral context. Complete for a complex thematic mesh tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions for each parameter. Description adds value by providing examples, biome code mappings, and usage patterns (e.g., codigo='1' for Amazon biome), enhancing parameter understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets thematic geographic meshes from IBGE and lists specific themes. It distinguishes from sibling ibge_malhas for administrative meshes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use a different tool when' and directs to ibge_malhas for administrative meshes. Provides examples for various themes and parameters, guiding appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_municipiosARead-onlyIdempotentInspect
Lists Brazilian municipalities from IBGE.
Features:
List municipalities by state (using state abbreviation)
List all municipalities in Brazil (5,570 municipalities)
Search by municipality name
Returns 7-digit IBGE code
Examples:
São Paulo municipalities: uf="SP"
Search by name: busca="Campinas"
MG municipalities containing "Belo": uf="MG", busca="Belo"
Use a different tool when:
Resolve/decode a code at any level (region, state, district), not just municipalities → ibge_geocodigo
Full details/hierarchy of one locality by code → ibge_localidade
Neighboring municipalities → ibge_vizinhos
Behavior: read-only and idempotent — a live GET against the public IBGE Localidades API. Returns a Markdown table.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | Estado por sigla (SP), nome (São Paulo) ou código IBGE (35). Se não informado, retorna todos os municípios do Brasil. | |
| busca | No | Termo para buscar no nome do município | |
| limite | No | Número máximo de resultados (padrão: 100, máximo: 5570) |
Output Schema
| Name | Required | Description |
|---|---|---|
| uf | No | UF informada no filtro (como recebida na entrada) |
| busca | No | Termo de busca aplicado ao nome do município |
| total | Yes | Total de municípios encontrados antes do limite |
| municipios | Yes | Lista de municípios retornados (após filtro e limite) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint=false. The description adds that it 'is a live GET against the public IBGE Localidades API' and confirms 'read-only and idempotent', but does not go beyond what annotations imply. The mention of returning a Markdown table is a useful extra.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear initial statement, bulleted features, examples, and a dedicated 'Use a different tool when' section. It is concise with no superfluous text, earning its place in every sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters with full schema coverage, no required parameters, rich annotations, and an output schema is present (implying structured return). The description covers all key aspects: purpose, usage, parameter examples, behavioral notes, and alternatives, making it fully complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description provides examples (uf='SP', busca='Campinas') that illustrate usage but does not add new meaning beyond the schema's parameter descriptions. It mentions default and max for 'limite', but those are already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Lists Brazilian municipalities from IBGE' and lists specific features (by state, all, search, returns 7-digit code), clearly distinguishing from sibling tools by naming ibge_geocodigo, ibge_localidade, and ibge_vizinhos for different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use alternative tools: 'Use a different tool when: Resolve/decode a code... → ibge_geocodigo; Full details/hierarchy... → ibge_localidade; Neighboring municipalities → ibge_vizinhos'. Also provides concrete examples for parameter combinations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_nomesARead-onlyIdempotentInspect
Queries name frequency and rankings in Brazil (IBGE).
Features:
Name frequency (tipo='frequencia'):
Birth frequency by decade
Multiple names separated by comma
Filter by sex and locality
Name ranking (tipo='ranking'):
Most popular names
Filter by decade, sex, and locality
Available decades: 1930-2010
Examples:
Frequency of "Maria": tipo="frequencia", nomes="Maria"
Compare names: tipo="frequencia", nomes="João,José,Pedro"
2000s ranking: tipo="ranking", decada=2000
Female names: tipo="ranking", sexo="F"
Behavior: read-only and idempotent — a live GET against the public IBGE Nomes (Censo) API. Returns a Markdown table.
| Name | Required | Description | Default |
|---|---|---|---|
| sexo | No | Filtrar por sexo: M (masculino) ou F (feminino) | |
| tipo | Yes | Tipo de consulta: 'frequencia' para buscar nomes específicos ou 'ranking' para ver os mais populares | |
| nomes | No | Para tipo='frequencia': Nome ou nomes separados por vírgula | |
| decada | No | Para tipo='ranking': Década do ranking (ex: 1990, 2000, 2010) | |
| limite | No | Para tipo='ranking': Número de nomes (padrão: 20) | |
| localidade | No | Código IBGE da localidade (UF: 2 dígitos, Município: 7 dígitos) |
Output Schema
| Name | Required | Description |
|---|---|---|
| tipo | Yes | Tipo da consulta realizada |
| ranking | No | Resultado do ranking (presente quando tipo='ranking') |
| frequencia | No | Resultados de frequência (presente quando tipo='frequencia') |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds that it is a live GET against the public IBGE API and returns a Markdown table, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections, bullet points, and examples. It is concise, with every sentence adding value, and front-loads the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, an output schema, and moderate complexity, the description covers all modes, parameters, examples, and behavior. It is complete and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. The description adds context by explaining parameter usage (e.g., nomes for frequency, decada for ranking) and provides examples that clarify combinations, adding value over the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries name frequency and rankings in Brazil (IBGE). It distinguishes itself from sibling tools by focusing specifically on names, with explicit features for frequency and ranking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear examples of when to use each tipo (frequency vs ranking) and includes filter parameters. However, it does not explicitly mention when not to use this tool compared to siblings, though the context makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_noticiasARead-onlyIdempotentInspect
Searches and lists already-published IBGE news articles and press releases.
Use this to find recent IBGE publications or announcements about a survey or topic — when an indicator was released, or news mentioning a term like "censo". Results are sorted newest-first; with no parameters it returns the 10 most recent items.
Parameters:
busca: free-text term to match (e.g. "PIB", "censo")
tipo: "release" (official publication of survey results) or "noticia" (general news); omit for both
de / ate: date range, format DD/MM/AAAA (e.g. de="01/01/2024", ate="31/12/2024")
destaque: true to return only featured items
quantidade: how many to return (default 10, max 100); pagina: page number to page through more
Each item returns: title, type (release/news), publication date, editoria (section), related products/surveys, a featured flag, a plain-text summary, and a link to the full article. The header reports the total count and current page.
Examples:
Latest 10 news: (no parameters)
Search census: busca="censo"
2024 news: de="01/01/2024", ate="31/12/2024"
Releases only: tipo="release"
Use a different tool when:
Scheduled/upcoming release dates (not yet published) → ibge_calendario
Behavior: read-only and idempotent — a live GET against the public IBGE Notícias API. Returns a Markdown list.
| Name | Required | Description | Default |
|---|---|---|---|
| de | No | Data inicial no formato DD/MM/AAAA (ex: 01/01/2024) | |
| ate | No | Data final no formato DD/MM/AAAA (ex: 31/12/2024) | |
| tipo | No | Tipo de publicação: 'release' ou 'noticia' | |
| busca | No | Termo para buscar nas notícias | |
| pagina | No | Número da página para paginação | |
| destaque | No | Filtrar apenas notícias em destaque | |
| quantidade | No | Quantidade de notícias a retornar (padrão: 10, máximo: 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
| busca | No | Termo de busca aplicado, se houver |
| total | Yes | Total de notícias encontradas na consulta |
| pagina | Yes | Página atual |
| noticias | Yes | Lista de notícias retornadas |
| totalPaginas | Yes | Número total de páginas |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. Description adds 'live GET' and 'Returns a Markdown list', reinforcing non-destructive behavior with implementation detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence, followed by usage context, parameter details with examples, sibling distinction, and behavioral note. Every sentence is purposeful and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 params, full schema coverage, output schema, and rich annotations, the description covers all necessary context: purpose, parameters, return structure, behavior, and alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, description still adds substantial value: explains each parameter in plain language, provides examples, default values, and date format (DD/MM/AAAA) not in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Starts with specific verb 'Searches and lists' and resource 'already-published IBGE news articles and press releases', clearly distinguishing from siblings via explicit cross-reference to ibge_calendario.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('find recent IBGE publications... when an indicator was released') and when to use ibge_calendario for scheduled/upcoming dates, providing a concrete alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_paisesARead-onlyIdempotentInspect
Queries international country data via IBGE.
Features:
List all countries (following UN M49 methodology)
Country details (area, languages, currency, location)
Search countries by name
Filter by region/continent
Available regions: americas, europa, africa, asia, oceania
Country codes: Use ISO-ALPHA-2 (e.g., BR, US, AR, PT, JP)
Examples:
List all: tipo="listar"
Brazil details: tipo="detalhes", pais="BR"
Search: tipo="buscar", busca="Argentina"
Americas countries: tipo="listar", regiao="americas"
Available indicators: tipo="indicadores"
Behavior: read-only and idempotent — a live GET against the public IBGE Países API. Returns Markdown.
| Name | Required | Description | Default |
|---|---|---|---|
| pais | No | Código ISO-ALPHA-2 do país (ex: BR, US, AR) ou código M49 | |
| tipo | No | Tipo de consulta: listar (todos), detalhes (de um país), indicadores, buscar | listar |
| busca | No | Termo de busca para filtrar países pelo nome | |
| regiao | No | Filtrar por região/continente: americas, europa, africa, asia, oceania | |
| indicadores | No | IDs dos indicadores separados por | (ex: 77819|77820) |
Output Schema
| Name | Required | Description |
|---|---|---|
| pais | No | Detalhes de um país específico (modo detalhes) |
| tipo | Yes | Modo de consulta que originou este resultado |
| busca | No | Termo de busca aplicado, se houver |
| total | No | Total de países encontrados (modos listar/buscar) |
| paises | No | Lista de países (modos listar/buscar). Limitada aos 50 primeiros na exibição |
| regiao | No | Filtro de região/continente aplicado, se houver |
| indicadores | No | Indicadores disponíveis para consulta de países (modo indicadores) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds that it is a live GET against the public IBGE Países API and returns Markdown, which provides useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with bullet points and examples. Every sentence earns its place, providing essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and the tool's relative simplicity (no required params, few enums), the description covers all necessary context: features, usage patterns, and behavior. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema coverage, the description adds considerable value by explaining the meaning of 'tipo' values, showing examples of each, clarifying regional filters, and specifying country code formats (ISO-ALPHA-2).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries international country data via IBGE, listing specific features like listing all countries, getting details, searching by name, and filtering by region. It uniquely identifies this tool among many IBGE siblings by focusing on countries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit examples for different query types (listar, detalhes, buscar) and usage of parameters like regiao and pais. However, it does not explicitly state when not to use it or compare to sibling tools, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_pesquisasARead-onlyIdempotentInspect
Lists available IBGE surveys and their tables.
Features:
List all IBGE surveys (Census, PNAD, GDP, etc.)
Search by name or code
Show details and tables of a specific survey
Categorize surveys by theme
Main surveys:
Census: Demographic, Agricultural, MUNIC
PNAD Contínua: Employment, income, education
National Accounts: GDP, investments
Economic Surveys: Industry, Commerce, Services
Price Indices: IPCA, INPC
Examples:
List all: (no parameters)
Search population: busca="população"
PNAD details: detalhes="pnad"
This lists surveys, not data. To find table codes use ibge_sidra_tabelas; to query data use ibge_sidra (or a wrapper: ibge_censo, ibge_indicadores, ibge_comparar, ibge_cidades).
Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA/Pesquisas API. Returns a Markdown list.
| Name | Required | Description | Default |
|---|---|---|---|
| busca | No | Termo para buscar no nome ou ID da pesquisa | |
| detalhes | No | Código da pesquisa para ver detalhes e tabelas disponíveis |
Output Schema
| Name | Required | Description |
|---|---|---|
| modo | Yes | Modo de consulta que originou este resultado: lista de pesquisas ou detalhes de uma |
| busca | No | Termo de busca aplicado, se houver (modo lista) |
| total | No | Total de pesquisas encontradas (modo lista) |
| pesquisa | No | Detalhes de uma pesquisa específica (modo detalhes) |
| pesquisas | No | Lista de pesquisas (modo lista) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, etc. Description adds behavioral context: 'live GET against the public IBGE SIDRA/Pesquisas API' and 'Returns a Markdown list.' Does not contradict annotations, but adds only modest extra detail beyond what annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (Features, Main surveys, Examples, etc.). Information is front-loaded with main purpose. Every sentence contributes value, though slightly longer than minimal; but justified by clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, list tool with rich annotations and output schema (implied), the description covers purpose, usage, behavior, parameter examples, and sibling differentiation. It also clarifies scope (lists only, not data). Complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with descriptions (100% coverage). Description adds usage examples (busca='população', detalhes='pnad') that clarify how to use parameters, adding value beyond schema baseline. No further parameter details needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists IBGE surveys and their tables, with specific verb 'lists' and resource 'IBGE surveys'. It distinguishes from siblings by noting it does not provide data, directing to ibge_sidra_tabelas and ibge_sidra for that.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit when to use: list surveys, search, get details. States what not to use for: 'This lists surveys, not data.' Names alternative tools: ibge_sidra_tabelas, ibge_sidra, and wrappers. Provides examples for common use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_populacaoARead-onlyIdempotentInspect
Returns real-time Brazilian population projection.
Features:
Current population estimate
Birth rate (average time between births)
Death rate (average time between deaths)
Daily population increment
Source: IBGE - Brazilian Population Projection
This tool ONLY returns Brazil's real-time national projection.
Use a different tool when:
Population of a specific municipality/state → ibge_cidades (panorama)
Census or historical population → ibge_censo
Comparing/ranking multiple localities → ibge_comparar
Population time series → ibge_indicadores
An arbitrary SIDRA table → ibge_sidra
Behavior: read-only and idempotent — a live GET against the public IBGE population-projection API. Returns Markdown plus a typed structuredContent payload.
| Name | Required | Description | Default |
|---|---|---|---|
| localidade | No | Localidade para projeção populacional (atualmente apenas BR disponível) | BR |
Output Schema
| Name | Required | Description |
|---|---|---|
| horario | Yes | Data/hora da consulta |
| populacao | Yes | População projetada (habitantes) |
| localidade | Yes | Localidade da projeção |
| periodoMedio | Yes | Indicadores do período médio |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering safety and idempotency. The description adds useful context: it's a live GET against the public IBGE API, and returns Markdown plus structuredContent. This enriches the behavioral profile beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points and clear sections, but it is slightly verbose (e.g., repeats that the tool is for Brazil's national projection). Still, it is easy to parse and front-loads key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single enum parameter) and presence of an output schema, the description covers all necessary context: what it returns, source, behavior, and when to use alternatives. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter (localidade) that has an enum and default. The description does not add new parameter meaning, but the schema itself fully documents the parameter. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool returns a 'real-time Brazilian population projection' with specific features (current estimate, birth/death rates, daily increment). It distinguishes itself from siblings by listing alternative tools for other population queries, providing excellent purpose clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear when-to-use guidance: for Brazil's national projection only. It explicitly lists alternative tools for specific use cases (e.g., ibge_cidades for municipalities, ibge_censo for census data), making it easy for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_sidraARead-onlyIdempotentInspect
Queries SIDRA tables (IBGE's Automatic Recovery System).
SIDRA contains data from IBGE surveys like Census, PNAD, GDP, etc.
Common tables:
6579: Population estimates (annual)
9514: Census 2022 population
200: Census population (1970-2010)
4714: Unemployment rate (PNAD Contínua)
6381: Average income (PNAD Contínua)
6706: GDP at current prices
5938: GDP per capita
Territorial levels:
1: Brazil
2: Region (North, Northeast, etc.)
3: State (UF)
6: Municipality
7: Metropolitan Region
Examples:
Brazil population 2023: tabela="6579", periodos="2023"
Population by state: tabela="6579", nivel_territorial="3"
Census 2022 by municipality: tabela="9514", nivel_territorial="6", localidades="3550308"
ibge_sidra is the low-level engine. Prefer a friendlier wrapper when it fits:
Census themes (1970–2022) → ibge_censo
Economic/social time series → ibge_indicadores
Rank/compare 2–10 localities → ibge_comparar
One municipality's panel → ibge_cidades Use ibge_sidra_tabelas and ibge_sidra_metadados to find a table code and its structure before querying.
Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns Markdown plus a typed structuredContent payload.
| Name | Required | Description | Default |
|---|---|---|---|
| campos | No | Selecionar apenas algumas colunas por rótulo, separadas por vírgula (ex: 'Valor,Ano'). Reduz o volume da resposta. Omitir traz todas. | |
| pagina | No | Página de resultados (100 registros por página) | |
| tabela | Yes | Código da tabela SIDRA (ex: 6579 para estimativas de população, 9514 para censo 2022) | |
| formato | No | Formato de saída: 'json' para dados brutos ou 'tabela' para formato legível | tabela |
| periodos | No | Períodos: 'last' para último, 'all' para todos, ou anos específicos (ex: 2020,2021,2022) | last |
| variaveis | No | IDs das variáveis separados por vírgula, ou 'allxp' para todas | allxp |
| localidades | No | Códigos das localidades separados por vírgula, ou 'all' para todas | all |
| classificacoes | No | Classificações no formato 'id[categorias]' (ex: '2[6794]' para sexo masculino) | |
| nivel_territorial | No | Nível territorial (código N): 1=Brasil, 2=Região, 3=UF, 6=Município, 7=Região Metropolitana, 8=Mesorregião, 9=Microrregião, 10=Distrito, 11=Subdistrito, 13=RM/RIDE, 14=RIDE, 15=Aglomeração Urbana, 17=Região Geográfica Imediata, 18=Região Geográfica Intermediária, 105=Macrorregião de Saúde, 106=Região de Saúde, 114=Aglomerado Subnormal, 127=Amazônia Legal, 128=Semiárido | 1 |
Output Schema
| Name | Required | Description |
|---|---|---|
| nome | Yes | Nome da tabela (quando conhecido) |
| tabela | Yes | Código da tabela SIDRA consultada |
| colunas | Yes | Rótulos das colunas, na ordem |
| paginacao | Yes | Metadados de paginação para continuação |
| registros | Yes | Registros da página atual: cada um mapeia rótulo da coluna -> valor |
| totalRegistros | Yes | Total de registros de dados disponíveis (todas as páginas) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, etc. The description adds that it's a live GET against the public API and returns Markdown plus structuredContent. No contradictions; adds useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with clear sections (common tables, territorial levels, examples, sibling tool comparison, behavior). Front-loaded with purpose and concrete data. Only slightly verbose due to thoroughness, but each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complex tool (9 params, 1 required) with rich sibling set. Description provides comprehensive examples, usage guidance, and behavioral notes. Output schema exists, so return format is covered. Could mention rate limits or pagination limits, but overall complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds example usage (e.g., 'tabela="6579", periodos="2023"') and clarifies territorial level codes, but these are already well covered in the schema descriptions. No significant extra semantic depth.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries SIDRA tables from IBGE, provides common table codes and territorial levels, and includes examples. It effectively distinguishes itself from sibling tools by naming alternatives like ibge_censo and ibge_indicadores.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises when to prefer friendlier wrappers (e.g., 'Prefer a friendlier wrapper when it fits') and recommends using ibge_sidra_tabelas and ibge_sidra_metadados to find table codes first. Provides clear context for this tool as the low-level engine.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_sidra_metadadosARead-onlyIdempotentInspect
Returns metadata for a specific SIDRA table.
Features:
General info (name, survey, subject, periodicity)
Available territorial levels
Variable list with units
Classifications and categories
Available periods
Use this tool to understand table structure BEFORE querying data with ibge_sidra.
Examples:
Population table metadata: tabela="6579"
Census 2022 metadata: tabela="9514"
PNAD unemployment: tabela="4714"
Use this after finding a table code (ibge_sidra_tabelas) and before querying with ibge_sidra.
Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns Markdown.
| Name | Required | Description | Default |
|---|---|---|---|
| tabela | Yes | Código da tabela/agregado SIDRA (ex: '6579', '9514', '4714') | |
| incluir_periodos | No | Incluir lista de períodos disponíveis (padrão: true) | |
| incluir_localidades | No | Incluir níveis territoriais disponíveis (padrão: false) |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | URL da tabela no SIDRA |
| nome | Yes | Nome da tabela |
| codigo | Yes | Código da tabela/agregado SIDRA |
| assunto | No | Assunto/tema da tabela |
| periodos | No | Períodos disponíveis para a tabela (quando incluir_periodos) |
| pesquisa | No | Nome da pesquisa de origem |
| variaveis | No | Variáveis da tabela, com unidades e classificações/categorias |
| periodicidade | No | Periodicidade da pesquisa |
| niveisTerritoriais | No | Níveis territoriais disponíveis para a tabela |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, destructiveHint. The description adds that it is 'read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns Markdown.' This confirms and enriches the behavioral profile without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet points for features, followed by usage guidance, examples, and a behavioral note. The main purpose is front-loaded. Slightly verbose but still efficient; each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that annotations and output schema are available, the description covers the tool's purpose, usage context, and behavioral traits adequately. It notes the return format (Markdown) and the workflow order, making it complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear parameter descriptions. The tool description mentions features like 'Available territorial levels' and 'Available periods' but does not significantly add meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns metadata for a specific SIDRA table and lists specific features (general info, territorial levels, variables, classifications, periods). It also explicitly distinguishes from sibling tools ibge_sidra and ibge_sidra_tabelas by stating when to use it relative to them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use this tool to understand table structure BEFORE querying data with ibge_sidra' and 'Use this after finding a table code (ibge_sidra_tabelas)'. Also gives concrete examples of table codes, making it easy for the agent to apply.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_sidra_tabelasARead-onlyIdempotentInspect
Lists and searches available SIDRA tables.
Features:
List all SIDRA tables (aggregates)
Search by table name
Filter by survey (Census, PNAD, GDP, etc.)
Shows code and name of each table
SIDRA contains data from various surveys:
Demographic Census
PNAD Contínua (employment, income)
National Accounts (GDP)
Industrial Survey
Agricultural Survey
Examples:
List tables: (no parameters)
Search population tables: busca="população"
Census tables: pesquisa="censo"
This is step 1 of the SIDRA workflow: find a table code → ibge_sidra_metadados (structure) → ibge_sidra (query). For common data, a wrapper is usually easier: ibge_censo, ibge_indicadores, ibge_comparar, ibge_cidades.
Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA API. Returns a Markdown table.
| Name | Required | Description | Default |
|---|---|---|---|
| busca | No | Termo para buscar no nome das tabelas/agregados | |
| limite | No | Número máximo de resultados (padrão: 20) | |
| pesquisa | No | Filtrar por código ou nome da pesquisa (ex: 'censo', 'pnad', 'pib') |
Output Schema
| Name | Required | Description |
|---|---|---|
| busca | No | Termo de busca aplicado, se houver |
| total | Yes | Total de tabelas que correspondem aos critérios |
| tabelas | Yes | Lista de tabelas SIDRA retornadas |
| pesquisa | No | Filtro de pesquisa aplicado, se houver |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive. The description adds that it is a 'live GET against the public IBGE SIDRA API' and 'Returns a Markdown table,' which enriches transparency beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concisely structured with bullet points, a list of surveys, examples, and workflow steps. It front-loads the main purpose and every sentence serves a clear role, avoiding verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (3 optional parameters, 100% schema coverage, output schema exists), the description fully covers purpose, usage, parameters, behavior, and workflow. It also mentions return format, meeting all informational needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by providing concrete examples: 'List tables: (no parameters)', 'Search population tables: busca="população"', and 'Census tables: pesquisa="censo"', helping users understand parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Lists and searches available SIDRA tables' and lists specific features like listing, searching by name, and filtering by survey. It distinguishes itself from sibling tools by positioning this as step 1 of the SIDRA workflow and noting wrapper tools for common data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly outlines the SIDRA workflow: 'find a table code → ibge_sidra_metadados (structure) → ibge_sidra (query).' It also advises that wrappers like ibge_censo, ibge_indicadores, etc., are easier for common data, providing clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_vizinhosARead-onlyIdempotentInspect
Finds nearby/neighboring municipalities.
Features:
Search by IBGE code (7 digits) or municipality name
Returns municipalities in the same mesoregion (proximity approximation)
Optionally includes population data
Note: Uses mesoregion as geographic proximity proxy. For exact spatial neighborhood, mesh processing would be required.
Examples:
By code: municipio="3550308"
By name: municipio="Campinas", uf="SP"
With population: municipio="3550308", incluir_dados=true
Note: proximity is approximated by shared mesoregion (not exact spatial adjacency). For listing/searching municipalities, use ibge_municipios.
Behavior: read-only and idempotent — a live GET against the public IBGE Localidades API. Returns a Markdown list.
| Name | Required | Description | Default |
|---|---|---|---|
| uf | No | Estado por sigla (SP), nome (São Paulo) ou código IBGE (35) — obrigatório se usar nome do município | |
| raio | No | Raio em km para buscar municípios próximos (usa centróides) | |
| municipio | Yes | Código IBGE do município (7 dígitos) ou nome do município | |
| incluir_dados | No | Incluir dados populacionais dos vizinhos |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Quantidade de municípios próximos encontrados |
| vizinhos | Yes | Lista de municípios próximos (mesma mesorregião) |
| municipio | Yes | Município de referência da consulta |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses read-only, idempotent nature, API source (IBGE Localidades API), output format (Markdown list), and approximation method. Adds value beyond annotations by concretely describing behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with summary, features, notes, examples, and behavioral note. Slightly verbose but every sentence adds value; could be condensed slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema, output schema, and annotations, description is complete: explains approximation, alternative, parameters, and return format. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
100% schema coverage; description adds examples, explains optional uf dependency when using name, and clarifies code vs name usage. Adds meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Finds nearby/neighboring municipalities' with specific verb and resource. Distinguishes from sibling ibge_municipios by explicitly directing listing/searching to that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes explicit alternative (ibge_municipios), notes limitations (mesoregion proxy vs exact adjacency), and provides examples for different parameter combinations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Your Connectors
Sign in to create a connector for this server.