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
- 7
- 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_calendarioCalendário de divulgaçõesARead-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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| 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 readOnlyHint, idempotentHint, and destructiveHint false. The description adds beyond that by stating 'a live GET against the public IBGE Calendário API' and 'Returns a Markdown list', giving concrete behavioral context about the underlying call and output 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?
The description is well-structured with Features, Event types, Examples, and a dedicated section on when to use alternatives. Every element earns its place; it is detailed without being bloated, and the most important info (purpose and counter-indication) is front-loaded.
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, no required fields, an output schema, and annotations covering read-only/idempotent behavior, the description covers all necessary context: event type definitions, filtering examples, an explicit alternative, and behavior. No critical 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%, so baseline is 3. The description provides helpful examples (produto='IPCA', de/ate format, tipo='coleta') that illustrate parameter usage, but it does not add new semantic meaning beyond what the schema descriptions already offer.
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 opens with 'Queries IBGE release and collection calendar', a specific verb and resource. It clearly differentiates from the sibling ibge_noticias by noting that tool covers already-published news, making this tool's scope (calendar/upcoming releases) unambiguous.
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?
Explicit guidance is provided: 'Use a different tool when: Already-published news and releases → ibge_noticias'. Examples illustrate when to call with no params, filter by product, date range, or event type, giving clear usage contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_censoCenso DemográficoARead-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"
Statistics mode: for largest/smallest/mean/median/distribution/ranking questions over census data ("which municipality had the largest 2022 population?") use estatisticas=true — full distribution + top/bottom computed over ALL rows before truncation; agruparPor="" ranks groups by descending sum. In this mode campos/formato are ignored and registros comes empty.
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 |
| topN | No | Tamanho das listas top/bottom quando estatisticas=true sem agruparPor (padrão: 10, máx: 100) | |
| 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 |
| agruparPor | No | Com estatisticas=true, agrupa pela coluna informada (rótulo, ex: 'Unidade da Federação', 'Ano') e ranqueia os grupos por soma decrescente (grupos[0] = maior total), cada grupo com sua mini-distribuição | |
| localidades | No | Códigos das localidades ou 'all' | all |
| estatisticas | No | Computa estatísticas (mínimo/máximo/média/mediana/desvio-padrão/percentis) sobre TODOS os registros da consulta, antes da paginação, + ranking top/bottom. Use para 'qual o maior/menor', 'média', 'mediana', 'distribuição', 'ranking'. Quando true, ignora pagina, campos e formato | |
| 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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| estatisticas | No | Bloco estatístico presente quando estatisticas=true (registros vem vazio nesse modo) |
| totalRegistros | Yes | Total de registros de dados |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, and the description adds value by stating it is a 'live GET against the public IBGE SIDRA API' and returns Markdown plus a typed structuredContent payload. It additionally discloses the statistics-mode quirk that campos/formato are ignored and registros comes empty, going well beyond annotation-provided safety signals.
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 long but well-organized with bullet lists for years, themes, examples, and alternatives, and most sentences serve a purpose. Minor redundancy exists because the theme list partially duplicates the schema's enum descriptions, and the list is incomplete, but the structure remains easy to scan and front-loaded with 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?
For a tool with 9 parameters and a complex statistics mode, the description covers essential operational aspects: available years, themes, examples, statistics behavior, alternative tools, and read-only/idempotent nature. The existence of an output schema means return-value details are unnecessary, and the description fills gaps around use-case selection and mode behavior.
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 description coverage, the baseline is 3, but the description adds value through concrete usage examples (e.g., ano='2022', tema='populacao'; ano='2010', tema='alfabetizacao', nivel_territorial='3') and explains the relationship between estatisticas and agruparPor. However, the 'Available themes' list omits several themes present in the schema, so it doesn't fully compensate for per-parameter nuance.
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 opens with a specific verb-resource pair ('Queries IBGE Demographic Census data') and states its simplified approach (no SIDRA codes). It explicitly differentiates from siblings by naming alternative tools for different data needs (ibge_populacao, ibge_cidades, ibge_comparar, ibge_sidra), making the purpose unambiguous.
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 when-to-use guidance: it notes this is for census data without SIDRA codes and includes a 'Use a different tool when:' section listing four alternative tools and their scenarios. It also explains when to enable estatisticas=true with examples such as 'qual o maior/menor', 'média', etc., giving clear decision context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_cidadesPanorama municipal (Cidades@)ARead-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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| 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?
Annotations already declare readOnlyHint=true and idempotentHint=true, but the description adds valuable context: "read-only and idempotent — a live GET against the public IBGE APIs (Cidades@/agregados)" and mentions the return format (Markdown plus structuredContent). This enriches the behavioral picture without contradicting the 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 a clear opening definition, bullet-point features, examples, and a behavior note. Each section earns its place: no fluff, and the content is front-loaded with the main purpose. The length is justified by the tool's complexity.
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 5 optional parameters and multiple query modes, the description is thorough: it covers all 'tipo' options with examples, lists available indicators, and states the tool's scope relative to siblings. The existence of an output schema and the description's note about the return payload make it 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?
While the schema already documents all 5 parameters (100% coverage), the description goes beyond by listing valid indicator names (populacao, area, densidade, etc.) and providing usage examples for the 'tipo' parameter (panorama, historico, pesquisas, indicador). This gives practical meaning that the schema alone does not.
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 verb and resource: "Queries municipal indicators from IBGE (similar to Cidades@ portal)." It explicitly distinguishes itself from siblings with "This tool is the panel for a SINGLE municipality (Cidades@)" and provides concrete examples (e.g., São Paulo overview, population history). This makes the tool's scope unambiguous.
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 when-to-use guidance: "Use a different tool when:" followed by four specific alternative tools and their use cases (e.g., real-time population → ibge_populacao, census themes → ibge_censo). It also states the tool's core purpose (single municipality), offering clear exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_cnaeClassificação 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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive. The description reinforces these and adds valuable context: 'a live GET against the public IBGE CNAE API' and 'Returns Markdown.' This goes beyond the structured data, disclosing the integration method and output format, with 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-organized with clear sections (hierarchy, features, examples, behavior). Every sentence adds value; the bullet points and examples are dense but not redundant. It is appropriately sized for a tool with moderate complexity, neither terse nor rambling.
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 moderate complexity, the description fully covers purpose, hierarchy, usage modes, examples, and behavior. An output schema exists, so detailed return structure is not needed. The description is self-contained and sufficient for an agent to select and invoke the tool correctly.
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 descriptions already cover all four parameters (100% coverage), and the description adds meaningful examples: 'busca="software"', 'codigo="6201-5/01"', 'nivel="divisoes"'. It also explains the code format by level, complementing the schema's enum and description. This goes beyond the baseline and enriches parameter understanding.
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 opens with a clear, specific statement: 'Queries CNAE (National Classification of Economic Activities) from IBGE.' It then lists concrete features (search by code, description, hierarchy) and examples. This unambiguously identifies the resource and operations, distinguishing it from sibling IBGE tools.
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 context for usage through feature list and practical examples (busca='software', codigo='6201-5/01', nivel='divisoes'). The hierarchical structure explanation helps users understand when to use each level. However, it does not explicitly mention alternative tools or exclusions, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_compararComparação entre localidadesARead-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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| 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, idempotentHint, and destructiveHint. The description adds meaningful behavioral context: 'a live GET against the public IBGE APIs (SIDRA and Localidades). Returns Markdown plus a typed structuredContent payload.' This goes beyond annotations by clarifying network behavior and response format.
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 for indicators, features, examples, usage guidelines, and behavior. It's longer than minimal, but the length is justified by the tool's complexity and the value of the usage guidance and examples. The indicator list duplicates the schema, which is slightly redundant but aids readability.
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 the tool's purpose, supported indicators, input formats, limits (up to 10 localities), output behavior, and alternatives. An output schema exists, so the description doesn't need to itemize return fields. 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 schema fully documents all three parameters. The description repeats the indicator list and adds examples, but these don't provide significant additional semantics beyond the schema. 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 the tool's function: 'Compares data between localities (municipalities or states).' It also specifies the verb 'compares' and the resource, and explicitly differentiates from siblings by stating 'Use this tool ONLY to rank/compare 2–10 localities on one indicator.'
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 when-to-use guidance: '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.' This clearly states usage context and names alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_datasaudeIndicadores de saúdeARead-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"
Statistics mode: for largest/smallest/mean/median/distribution/ranking questions ("which state has the highest infant mortality?", "median life expectancy across states") use estatisticas=true — full distribution + top/bottom over ALL rows before truncation; agruparPor="" ranks groups by descending sum. In this mode campos/formato are ignored and registros comes empty.
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 |
|---|---|---|---|
| topN | No | Tamanho das listas top/bottom quando estatisticas=true sem agruparPor (padrão: 10, máx: 100) | |
| 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 | |
| agruparPor | No | Com estatisticas=true, agrupa pela coluna informada (rótulo, ex: 'Unidade da Federação', 'Ano') e ranqueia os grupos por soma decrescente (grupos[0] = maior total), cada grupo com sua mini-distribuição | |
| localidade | No | Código da localidade ou 'all' | all |
| estatisticas | No | Computa estatísticas (mínimo/máximo/média/mediana/desvio-padrão/percentis) sobre TODOS os registros da consulta, antes da paginação, + ranking top/bottom. Use para 'qual o maior/menor', 'média', 'mediana', 'distribuição', 'ranking'. Quando true, ignora pagina, campos e formato | |
| 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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| estatisticas | No | Bloco estatístico presente quando estatisticas=true (registros vem vazio nesse modo) |
| 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, the description discloses it is a live GET against the public IBGE SIDRA API, returns Markdown plus typed structuredContent, and details statistics mode behavior (e.g., campos/formato ignored, registros empty, ranking over ALL rows before truncation). This adds rich behavioral context 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?
The description is well-structured with bold category headers, bullet lists, examples, and a dedicated alternatives section. It uses space efficiently, front-loads the purpose, and every sentence serves a clear role without unnecessary fluff.
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 9 parameters and complex statistics mode, the description covers indicators, territorial levels, examples, tool boundaries, and stats mode caveats comprehensively. An output schema exists, so return format explanation is sufficient; no significant gaps are apparent.
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 meaningful semantic grouping of indicators, territorial level examples, and practical usage examples (e.g., 'localidade="35"') that help combine parameters effectively; however, most parameter definitions are already in the schema, so this is a modest but real increment.
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 begins with 'Queries Brazil health indicators' with a specific verb and resource, and enumerates indicator categories (mortality, demographic, sanitation, coverage). It explicitly distinguishes from siblings via the 'Use a different tool when' section, naming ibge_cidades, ibge_censo, 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?
Provides explicit guidance: when to use estatisticas=true for statistical questions, and when to use alternative tools for municipality panels or population counts. This gives clear when-to-use and when-not-to-use context beyond generic tool boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_estadosEstados do BrasilARead-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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive. The description adds context by specifying it is a live GET against the public IBGE Localidades API and returns a Markdown table. While 'read-only and idempotent' repeats the annotations, the API source and return format are new and useful behavioral details.
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 one-line summary, feature bullets, examples, alternative-tool guidance, and a behavior note. Each section is concise and serves a distinct purpose, with no redundant filler. Front-loaded with the core statement of what the tool does.
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 simple list tool with only two optional parameters, the description is complete. It covers all states, filtering, sorting, examples, alternatives, underlying API behavior, and return format (Markdown table). An output schema exists, so detailed return documentation is not needed here.
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 has 100% description coverage: both 'regiao' and 'ordenar' are documented with enums and defaults. The description's mention of filtering by region and sorting by ID/name/abbreviation essentially mirrors the schema without adding new meaning. The examples (regiao='NE', ordenar='sigla') slightly reinforce but do not enrich the semantic understanding.
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 opens with a specific verb+resource: 'Lists all Brazilian states from IBGE,' and immediately distinguishes itself from siblings by naming ibge_municipios and ibge_localidade for related but different queries. It clearly scopes the tool to state-level listing with filtering and sorting.
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?
An explicit 'Use a different tool when' section provides clear exclusions and names alternatives (municipalities → ibge_municipios, locality details → ibge_localidade). The examples also demonstrate typical usage (no params, regiao filter, ordenar sort), covering both default and filtered cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_geocodigoCódigos geográficos do IBGEARead-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) |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| 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?
While annotations already declare read-only, idempotent, and non-destructive behavior, the description adds valuable context: 'a live GET against the public IBGE Localidades API' conveys network dependency and return format 'Markdown'. It also discloses the add-on behaviors of showing hierarchy and related codes. No contradictions 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?
The description is well-structured with clear sections (features, code structure, examples, alternatives, behavior). It is longer than a simple two-sentence description, but the length is justified by the tool's multiple operation modes and the need to differentiate from siblings. The opening sentence front-loads the core purpose, and there is minimal 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?
With an output schema present and thorough annotations, the description covers all essential aspects: the tool's dual purpose, input modes, geographic hierarchy, exclusions for alternative tools, and live API behavior. The examples and code structure make it complete for an agent to select and invoke the tool correctly in various scenarios.
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 100% coverage with detailed parameter descriptions, including code format lengths. The description adds semantic value by naming the regions (North, Northeast, etc.), giving example values that show valid parameter combinations (e.g., uf='SP' with nome='Campinas'), and illustrating how codigo lengths map to different geographic levels.
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 opening sentence 'Decodes IBGE codes or searches codes by locality name' clearly states the tool's function with a specific verb and resource. It distinguishes itself from siblings by explicitly naming ibge_municipios and ibge_localidade as alternatives for other use cases. The feature list and code structure further clarify what 'decode' encompasses.
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 'Use a different tool when' guidance with named alternatives and specific scenarios (listing/searching municipalities, full locality records). It also gives multiple example call patterns (by code, by name, by name+UF) that illustrate when to use which parameter combination.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_indicadoresIndicadores econômicos e sociaisARead-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"
Statistics mode: for largest/smallest/mean/median/distribution/ranking questions ("which state has the highest unemployment?", "median GDP per capita across states") use estatisticas=true — full distribution + top/bottom over ALL rows before truncation; agruparPor="" (e.g. "Unidade da Federação", "Trimestre") ranks groups by descending sum. In this mode campos/formato are ignored and registros comes empty.
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 |
|---|---|---|---|
| topN | No | Tamanho das listas top/bottom quando estatisticas=true sem agruparPor (padrão: 10, máx: 100) | |
| 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. | |
| agruparPor | No | Com estatisticas=true, agrupa pela coluna informada (rótulo, ex: 'Unidade da Federação', 'Ano') e ranqueia os grupos por soma decrescente (grupos[0] = maior total), cada grupo com sua mini-distribuição | |
| localidades | No | Códigos das localidades ou 'all' | all |
| estatisticas | No | Computa estatísticas (mínimo/máximo/média/mediana/desvio-padrão/percentis) sobre TODOS os registros da consulta, antes da paginação, + ranking top/bottom. Use para 'qual o maior/menor', 'média', 'mediana', 'distribuição', 'ranking'. Quando true, ignora pagina, campos e formato | |
| 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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| estatisticas | No | Bloco estatístico presente quando estatisticas=true (registros vem vazio nesse modo) |
| 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, and destructiveHint. The description adds valuable context: it is a 'live GET against the public IBGE SIDRA API' and returns Markdown plus a typed structuredContent payload. It also explains that statistics mode operates on all rows before truncation and that some parameters are ignored, which is meaningful behavioral disclosure.
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 headers (Economic, Prices, Labor, Population), bullet lists, examples, and a clear statistics mode section. Each section is concise and purposeful, avoiding redundancy. The length is justified by the tool's complexity, and the content is front-loaded with 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's complexity (10 parameters, many indicator types, statistics mode, sibling tools), the description covers all essential aspects: available indicators, parameter behavior, examples, statistics mode semantics, and alternatives. It also references an output schema, so return values need not be described. The description is highly complete for effective selection and invocation.
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?
While the input schema has 100% description coverage, the tool description significantly enhances parameter understanding. It explains the 'listar' value for indicador, provides examples combining parameters, explains the semantics of agruparPor and estatisticas, and clarifies that certain parameters are ignored in statistics mode. This goes far beyond the basic schema 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 opens with a specific verb ('Queries') and clearly identifies the resource (IBGE economic and social indicators). It provides a detailed list of available indicators across categories, making the scope unmistakable. It also distinguishes itself from siblings by explicitly pointing to alternative tools for related tasks.
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 versus alternatives: 'Use a different tool when: Comparing/ranking localities → ibge_comparar, Census themes → ibge_censo, One municipality's panel → ibge_cidades'. It also includes concrete examples for common queries and a dedicated statistics mode explanation, giving clear instructions for various usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_localidadeDetalhes de 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) |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| 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?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, and the description adds useful context beyond those: it is a live GET against the public IBGE API and returns a Markdown record. This gives the agent insight into network dependency and response format without contradicting the 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 a clear opening line, feature list, examples, usage guidance, and behavior note. It is slightly longer than necessary but every section serves a purpose and the information is front-loaded, making it easy to scan.
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 does not need to explain return values in detail. It covers the tool's scope, examples, alternatives, and behavioral traits (read-only, idempotent, live GET, Markdown response), making it complete for the agent to select and invoke correctly.
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 has 100% coverage for both parameters, so the baseline is 3. The description adds value with concrete examples (São Paulo state=35, city=3550308, district=355030805) and explains that tipo is inferred from code length when not provided, which helps the agent use the parameters correctly.
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 opens with a specific verb+resource statement: 'Returns details of a specific locality by IBGE code.' It clearly distinguishes the tool from siblings by stating it returns the full record of ONE locality you already have the code for, contrasting with ibge_municipios and 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?
Usage guidelines are explicit: use when you have a code and need the full record; use different tools when you have a name or need to decompose a code. It names the alternatives (ibge_municipios, ibge_geocodigo) with specific conditions, providing clear when-to-use and when-not-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_malhasMalhas geográficasARead-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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| 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, idempotentHint, and destructiveHint=false, so the baseline is lower. The description adds that this is 'a live GET against the public IBGE Malhas API' and that it returns the requested format, but it does not disclose rate limits, error behavior, or any auth requirements. This adds some context but not rich behavioral detail beyond the 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 longer than average but well-structured with bullet sections for features, locality types, resolution, examples, and exclusions. Some redundancy exists with the schema enums (formats, quality levels, resolution values), but the added examples and explanatory notes justify the length.
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 6 parameters and 4 enum-based fields, the description covers the main usage patterns, provides concrete examples, names the sibling alternative, and states the underlying API behavior. An output schema exists, so return-value details are not needed in the description.
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?
Although schema coverage is 100%, the description greatly enriches parameter meaning: it explains locality shortcuts ('BR', '1', state abbreviations, state codes, 7-digit municipality codes), resolution semantics (0=outline, 2=states, 5=municipalities), and provides usage examples for format and resolution. This goes far 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?
The description opens with a specific verb+resource: 'Gets geographic meshes (maps) from IBGE in GeoJSON, TopoJSON, or SVG format.' It also distinguishes itself from the sibling tool by explicitly directing thematic mesh requests to ibge_malhas_tema, making the tool's scope clear.
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 includes explicit when-to-use guidance with locality types, resolution levels, and concrete examples (e.g., localidade='BR', resolucao='2'). It also provides a clear exclusion: 'Use a different tool when: Thematic meshes... → ibge_malhas_tema'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_malhas_temaMalhas temáticasARead-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) |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds behavioral context beyond annotations: 'a live GET against the public IBGE Malhas API' and 'Returns the mesh in the requested format (GeoJSON, TopoJSON, or SVG)' — enriching the agent's understanding of side effects and output.
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 (Available themes, Biome codes, Examples, Use a different tool, Behavior). Every sentence contributes useful information, and it is appropriately sized for a tool with multiple parameter options.
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 output schema exists and annotations cover safety, the description completes the picture by explaining the live GET nature, available themes, codes, and when to use a sibling tool. It is comprehensive for an agent to select and invoke correctly without further clarification.
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?
Although schema_description_coverage is 100%, the description adds significant value by providing the biome code mapping (1: Amazon, 2: Cerrado, etc.) and example parameter combinations ('tema="biomas", codigo="1"', 'tema="biomas", resolucao="5"'). This helps the agent choose correct parameter values 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 'Gets thematic geographic meshes from IBGE' with a specific verb and resource. It explicitly distinguishes from the sibling tool ibge_malhas by stating 'Use a different tool when: Administrative meshes... → ibge_malhas', making the scope unambiguous.
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 concrete usage examples for each theme, lists biome codes, and explicitly names the alternative tool for administrative boundaries ('ibge_malhas'). This gives the agent clear 'when to use' and 'when not 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_municipiosMunicípios do BrasilARead-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) |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare readOnly/idempotent, the description adds 'a live GET against the public IBGE Localidades API' and 'Returns a Markdown table', which are not in annotations or schema. It also mentions the count of 5,570 municipalities and the 7-digit code, enriching the agent's understanding of the tool's 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?
The description is well-structured with clear sections: summary, features, examples, exclusions, and behavior. Each section is concise, every sentence adds information, and there is no fluff or repetition.
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 is simple (list/filter municipalities) and the description covers purpose, usage, alternatives, behavior, and return format. The output schema exists, so not explaining return values in detail is fine. Nothing important seems missing for an agent to safely invoke it.
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 the baseline is 3. The description adds value by giving realistic example values for uf and busca and showing how to combine them (uf='MG', busca='Belo'). This goes beyond the schema's individual parameter descriptions, though the schema itself is already quite descriptive. Not quite a 5 because the schema covers most semantics.
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 opens with 'Lists Brazilian municipalities from IBGE', a specific verb+resource statement. It further clarifies functionality (by state, all Brazil, search by name) and explicitly differentiates from sibling tools by listing when to use ibge_geocodigo, ibge_localidade, and ibge_vizinhos 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?
Beyond stating its purpose, the description provides concrete examples (uf="SP", busca="Campinas", combined uf="MG"/busca="Belo") and an explicit 'Use a different tool when' section with named alternatives. This gives clear when-to-use and when-not-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_nomesFrequência e ranking de 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') |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable context beyond annotations by specifying it is a 'live GET against the public IBGE Nomes (Censo) API', returns a Markdown table, and restricts available decades to 1930-2010. This enhances understanding of behavior and constraints.
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-organized with clear sections for features, examples, and behavior. It is concise yet comprehensive, delivering all necessary information in a scannable format 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?
With two distinct modes, six parameters, complete schema descriptions, and annotations covering safety, the description is fully complete. It includes examples, parameter-mode associations, decade constraints, and return format, leaving no significant gaps for the agent to invoke correctly.
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 goes beyond schema by explicitly mapping parameters to modes (e.g., nomes for frequencia, decada for ranking), providing examples for multiple names, and stating available decades (1930-2010) which is not in the schema. This adds practical usage meaning.
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)' with specific verbs and resource, and distinguishes between two modes (frequencia and ranking). It is distinct from sibling tools like ibge_populacao or ibge_cidades by focusing specifically on name 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 provides clear context on when to use the tool (querying name frequency or rankings) and gives examples for each mode. It does not explicitly name alternative tools or exclusion criteria, but the purpose is specific and well-scoped, making the intended usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_noticiasNotícias do IBGEARead-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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| 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, idempotentHint, and destructiveHint=false; the description adds that it is 'a live GET against the public IBGE Notícias API' and 'Returns a Markdown list.' It also discloses result ordering (newest-first) and the default return count (10 most recent), providing context beyond the structured hints.
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?
Although longer than a minimal description, it is well-structured: purpose, usage guidance, parameter list, output format, examples, alternative tool, and behavior. Each sentence contributes meaningful information; parameter descriptions and examples are concise and effectively formatted.
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 7-parameter tool and no visible output schema in the prompt, the description compensates by explicitly listing what each item returns (title, type, date, section, related products, featured flag, summary, link) and header metadata (total count, current page). It also covers ordering, defaults, and pagination, making it 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?
The input schema covers all 7 parameters with descriptions (100% coverage), so the baseline is 3. The description goes further by explaining each parameter's semantics in practical terms—e.g., 'tipo: "release" (official publication of survey results) or "noticia" (general news); omit for both'—and provides concrete examples like busca="censo" and date-format examples, adding value 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 opens with a specific verb and resource: 'Searches and lists already-published IBGE news articles and press releases.' It clearly distinguishes this tool from siblings by focusing on published items, while the alternative ibge_calendario handles scheduled/upcoming releases.
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?
It explicitly states when to use the tool: 'Use this to find recent IBGE publications or announcements about a survey or topic' and mentions concrete use cases like indicator releases or searches for terms like 'censo'. It also provides an explicit exclusion: 'Use a different tool when: Scheduled/upcoming release dates (not yet published) → ibge_calendario'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_paisesDados de paísesARead-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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| 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 read-only and idempotent, but the description adds that it performs a live GET against the public API and returns Markdown. This extra context helps the agent understand the external dependency and output format 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?
The description is well-organized with bullet points and examples that are directly useful. It is slightly longer than necessary but every section provides functional guidance, and the main purpose is front-loaded.
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?
With 5 parameters, multiple operation modes, and an output schema present, the description covers all essential aspects: operations, regions, codes, examples, and output format. The tool's complexity is fully addressed, leaving no significant 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?
The schema covers 100% of parameters with descriptions, and the description adds practical examples and clarifies expected values (e.g., ISO-ALPHA-2 codes, region names). The 'tipo' enum values are mapped to example usage, enhancing understanding beyond the raw 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 the tool queries international country data via IBGE, listing specific operations (list, details, search, filter). This distinguishes it from sibling tools like ibge_estados or ibge_municipios by focusing on country-level 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 provides concrete examples for each value of the 'tipo' parameter, explains available regions, and specifies country code format. It gives clear context for when to use the tool, though it doesn't explicitly discuss exclusions or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_pesquisasPesquisas do IBGEARead-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) |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint, idempotentHint, and destructiveHint=false. The description adds beyond these by stating 'Behavior: read-only and idempotent — a live GET against the public IBGE SIDRA/Pesquisas API. Returns a Markdown list.' This reveals the network call nature and return format, though the read-only and idempotent aspects are already covered by annotations. Slight redundancy but still adds context.
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 organized with sections for features, main surveys, examples, and alternatives. It is longer than minimal but front-loaded with the core purpose and well-structured. Every section contributes, but some content (e.g., the list of main surveys) could be seen as optional context, keeping it from a 5.
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 an output schema, so return values are covered. The description covers purpose, usage, examples, alternatives, and behavioral traits. It also clarifies the tool's scope (surveys not data) and names specific sibling tools for different needs. Given the low parameter count and good annotation coverage, the description 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?
Schema coverage is 100% and both parameters are described in the schema. The description reinforces with examples (busca='população', detalhes='pnad') and feature bullets, but doesn't add substantial semantic detail beyond the schema. 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 the tool's function: 'Lists available IBGE surveys and their tables.' It uses a specific verb ('lists') and identifies the resource ('IBGE surveys and their tables'), and explicitly distinguishes itself from siblings by stating 'This lists surveys, not data' and naming alternatives like ibge_sidra_tabelas 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?
The description provides explicit guidance on when to use this tool vs alternatives: 'This lists surveys, not data. To find table codes use ibge_sidra_tabelas; to query data use ibge_sidra (or a wrapper...).' It also gives concrete usage examples for each parameter and notes that listing all requires no parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_populacaoPopulação do Brasil em tempo realARead-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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuiçã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 readOnly, idempotent, and non-destructive behavior. The description adds context beyond annotations by noting it is a 'live GET against the public IBGE population-projection API' and that it returns 'Markdown plus a typed structuredContent payload.' It does not mention rate limits or failure modes, but the added context is valuable.
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 lead sentence, bullet-pointed features, a source line, and a compact alternative-tools section. Every sentence adds useful information, and it is appropriately sized for the tool's simplicity without fluff.
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 (one optional parameter, output schema present), the description covers what the tool returns, its national-only scope, and how it differs from 20+ siblings. It even notes the response format (Markdown + structuredContent). This is complete for an agent to select and invoke the tool correctly.
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 fully describes the single parameter with an enum, default, and Portuguese-language description. The description's statement that the tool 'ONLY returns Brazil's real-time national projection' reinforces the schema's enum constraint but adds no new syntax or format details. Baseline 3 is appropriate given 100% schema coverage.
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 opens with 'Returns real-time Brazilian population projection,' a specific verb and resource. The 'Features' list enumerates exact outputs (current estimate, birth/death rates, daily increment), and it clarifies this tool ONLY returns Brazil's national projection, distinguishing it from siblings like ibge_cidades and ibge_censo.
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 states the tool's scope ('ONLY returns Brazil's real-time national projection') and provides a concrete list of when to use alternative tools ('Use a different tool when:') with named siblings and their purposes. This is strong when-to-use and when-not-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_sidraConsulta de tabelas 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"
Statistics mode: for largest/smallest/mean/median/distribution/ranking questions ("which municipality has the largest population?", "median GDP by state") use estatisticas=true — it computes min/max/mean/median/std-dev/labeled percentiles over ALL data rows BEFORE pagination and returns top/bottom rankings (default 10, cap 100 via topN), so one call answers what would otherwise require paging thousands of records. With agruparPor="" (e.g. "Unidade da Federação", "Ano") it ranks groups by descending sum, each with its own mini-distribution. Queries mixing several variables auto-group by "Variável" (units differ). SIDRA absence markers ("-", "..", "...", "X") are excluded from n. In this mode pagina/campos/formato are ignored and registros comes empty. The query itself still respects SIDRA's official cap of 100,000 values.
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 |
|---|---|---|---|
| topN | No | Tamanho das listas top/bottom quando estatisticas=true sem agruparPor (padrão: 10, máx: 100) | |
| 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 |
| agruparPor | No | Com estatisticas=true, agrupa pela coluna informada (rótulo, ex: 'Unidade da Federação', 'Ano') e ranqueia os grupos por soma decrescente (grupos[0] = maior total), cada grupo com sua mini-distribuição | |
| localidades | No | Códigos das localidades separados por vírgula, ou 'all' para todas | all |
| estatisticas | No | Computa estatísticas (mínimo/máximo/média/mediana/desvio-padrão/percentis) sobre TODOS os registros da consulta, antes da paginação, + ranking top/bottom. Use para 'qual o maior/menor', 'média', 'mediana', 'distribuição', 'ranking'. Quando true, ignora pagina, campos e formato | |
| 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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| estatisticas | No | Bloco estatístico presente quando estatisticas=true (registros vem vazio nesse modo) |
| 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 read-only, idempotent, open-world, and non-destructive. The description adds substantial behavioral detail beyond that: it is a 'live GET against the public IBGE SIDRA API', returns 'Markdown plus a typed structuredContent payload', and in statistics mode explains that pagina/campos/formato are ignored, absence markers are excluded, and the official 100,000 value cap applies. This enriches the agent's understanding 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?
While lengthy, the description is well-structured with clear sections (common tables, territorial levels, examples, statistics mode, alternatives). Every sentence earns its place, and the front-loaded one-liner establishes the core purpose immediately. The density of useful information justifies its length.
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 complex tool with 12 parameters, 1 required, and an output schema, the description is exceptionally complete. It covers purpose, usage alternatives, parameter semantics, examples, statistics mode edge cases, and return format. The presence of an output schema reduces the need to explain return values, but the description still mentions the structuredContent payload. This gives an agent everything needed to select and invoke the tool correctly.
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, but the description adds significant semantic value: common table codes with descriptions, territorial level code meanings, concrete examples, and detailed explanation of statistics mode behaviors affecting parameters like agruparPor, topN, and ignored parameters. This goes well beyond the schema 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 SIDRA tables (IBGE's Automatic Recovery System)' with a specific verb and resource. It distinguishes from siblings by explicitly labeling itself as 'the low-level engine' and listing alternative tools for different use cases.
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 usage guidance: 'Prefer a friendlier wrapper when it fits' followed by specific tool mappings (e.g., Census themes → ibge_censo, time series → ibge_indicadores). Also explains when to use statistics mode with concrete question types like 'which municipality has the largest population?' thus giving clear when-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_sidra_metadadosMetadados de tabela SIDRAARead-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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| 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?
The description adds context beyond annotations by stating 'a live GET against the public IBGE SIDRA API' and 'Returns Markdown'. While read-only and idempotent hints are already in annotations, the description enriches with the underlying mechanism and output format.
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 summary, feature list, usage guidance, examples, and a behavior note. It is somewhat longer than minimal but every section supports decision-making effectively.
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 purpose, workflow, return format, and metadata content, which is sufficient for a tool with an output schema and complete parameter descriptions. It fully integrates with the tool ecosystem.
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% and each parameter has a description. The description provides example values for 'tabela' but does not add semantic detail for the boolean flags. It relies appropriately on 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 'Returns metadata for a specific SIDRA table' and enumerates the metadata features. It distinguishes from sibling tools by positioning itself as the step between finding a table code (ibge_sidra_tabelas) and querying data (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?
Provides explicit workflow 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)'. This clearly indicates when to use the tool relative to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_sidra_tabelasBusca de tabelas SIDRAARead-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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
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 behavior. The description adds that it performs 'a live GET against the public IBGE SIDRA API' and 'Returns a Markdown table.' It also clarifies that listing shows 'code and name of each table'. This contextual information 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?
The description is well-structured with clear sections: purpose, features, survey list, examples, workflow, and behavior. Each section is concise and contributes useful information without redundancy. The front-loaded purpose sentence makes the tool's role immediately clear.
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 fully covers purpose, usage, workflow, alternatives, behavior, and return format. With an output schema present and rich annotations, there is no significant missing context. An agent can confidently select and invoke this tool based on the provided information.
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 provides 100% description coverage for parameters. The description supplements this with concrete usage examples: 'Search population tables: busca="população"' and 'Census tables: pesquisa="censo"'. It also notes that calling with no parameters lists all tables, giving practical meaning to the optional parameters.
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?
States 'Lists and searches available SIDRA tables' – a clear verb+resource pairing. It also lists specific features (list, search, filter) and distinguishes from sibling tools by positioning itself as step 1 of the SIDRA workflow with alternative wrappers mentioned.
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 defines when to use this tool: 'This is step 1 of the SIDRA workflow: find a table code → ibge_sidra_metadados (structure) → ibge_sidra (query).' It also names alternatives for common data: 'For common data, a wrapper is usually easier: ibge_censo, ibge_indicadores, ibge_comparar, ibge_cidades.' This is direct and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ibge_vizinhosMunicípios 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 |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, período, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive hints. The description adds valuable behavioral context beyond annotations: it discloses the live GET against the public IBGE Localidades API, the Markdown list return format, and the crucial caveat that proximity is approximated by mesoregion rather than exact spatial adjacency. No contradiction exists.
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 features, examples, and notes, and it front-loads the purpose. However, the mesoregion approximation point is repeated three times (in features, first note, and second note), which is mildly redundant. Still, the overall length is appropriate for the tool's complexity.
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 output schema exists, return values need not be described, but the tool is still comprehensively covered. It includes the approximation limitation, clear usage examples, an explicit alternative sibling tool, and behavioral traits like read-only and idempotent. This is a complete, self-contained description for practical use.
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 descriptions for each parameter, so the baseline is 3. The description adds value beyond the schema by showing examples that combine municipio and uf (e.g., municipio='Campinas', uf='SP'), clarifying the 7-digit code format, and illustrating the incluir_dados flag. While not deeply needed, these usage patterns reinforce parameter semantics.
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 opens with a specific verb and resource: 'Finds nearby/neighboring municipalities.' It clearly scopes the tool as a proximity lookup and notes the mesoregion approximation. It distinguishes itself from ibge_municipios by explicitly pointing users to that sibling tool for listing/searching.
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 when-to-use guidance: it notes that for exact spatial neighbors, 'mesh processing would be required' (implying a different tool like ibge_malhas), and states 'For listing/searching municipalities, use ibge_municipios.' It also gives three concrete examples covering code-based, name-based, and population-inclusive usage, making invocation conditions clear.
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!
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server that provides real-time access to Brazilian public data from 6 official sources via 11 read-only tools, including Pix, IBGE, Câmara dos Deputados, Senado Federal, Diário Oficial da União, and Agência Brasil, with no API key required.MIT
- AlicenseAqualityBmaintenanceExposes official IBGE data as MCP tools, including Brazilian localities, SIDRA statistical aggregates, and population indicators.11MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for accessing IBGE (Brazilian Institute of Geography and Statistics) data, enabling natural language queries via the Pipeworx gateway.8MIT
- AlicenseAqualityBmaintenanceLocal-first MCP server for discovering, downloading, and analyzing official IBGE microdata using DuckDB and Parquet.221MIT
Your Connectors
Sign in to create a connector for this server.