{"openapi":"3.1.0","info":{"title":"Brasil API","version":"0.1.0","description":"Brazilian daily life and business: CEP, CNPJ, CPF/CNPJ validation, boleto and Pix decoding, DDD, holidays, banks, rates, FIPE, IBGE, ISBN, NCM, .br domains.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://brasil.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/brasil/docs"},"termsOfService":"https://connectorbay.com/brasil/terms"},"servers":[{"url":"https://brasil.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/brasil/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/cep_lookup":{"post":{"operationId":"cep_lookup","summary":"Address for a CEP: street, neighborhood, city, state, IBGE code, time zone and coordinates. Use for \"qual endereço é","description":"Address for a CEP: street, neighborhood, city, state, IBGE code, time zone and coordinates. Use for \"qual endereço é\n    esse CEP\", filling forms, \"onde fica o CEP 70040-912\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cep":{"description":"CEP, 8 digits with or without the hyphen.","examples":["01001-000","70040912"],"title":"Cep","type":"string"}},"required":["cep"],"title":"cep_lookupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/cnpj_lookup":{"post":{"operationId":"cnpj_lookup","summary":"A company from its CNPJ at the Receita Federal: legal and trade name, registration status and date, when it opened,","description":"A company from its CNPJ at the Receita Federal: legal and trade name, registration status and date, when it opened,\n    legal nature, size (MEI/ME/EPP…), Simples Nacional, share capital, main and secondary activities (CNAE), address,\n    contact, and the partners/administrators (QSA). Use for \"essa empresa existe\", \"quem são os sócios\", \"está ativa?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"cnpj":{"description":"CNPJ, 14 characters with or without punctuation (alphanumeric CNPJs accepted).","examples":["19.131.243/0001-97"],"title":"Cnpj","type":"string"}},"required":["cnpj"],"title":"cnpj_lookupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/validate_document":{"post":{"operationId":"validate_document","summary":"Whether a CPF or CNPJ is well-formed: the check digits are recomputed locally (no lookup, nothing sent anywhere), with t","description":"Whether a CPF or CNPJ is well-formed: the check digits are recomputed locally (no lookup, nothing sent anywhere), with the\n    formatted version. Use for \"esse CPF é válido\", \"esse CNPJ está certo\", before a form is submitted. A valid checksum does\n    not mean the number belongs to anyone in particular.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"value":{"description":"A CPF (11 digits) or CNPJ (14 characters), with or without punctuation.","examples":["529.982.247-25","19.131.243/0001-97"],"title":"Value","type":"string"}},"required":["value"],"title":"validate_documentArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/boleto_decode":{"post":{"operationId":"boleto_decode","summary":"What a boleto says, before paying it: bank, amount, due date, whether it is a bank slip or an arrecadação (utility, tax)","description":"What a boleto says, before paying it: bank, amount, due date, whether it is a bank slip or an arrecadação (utility, tax),\n    and whether every check digit passes — a first screen against tampered or fake slips. Use for \"esse boleto é verdadeiro\",\n    \"quanto é e quando vence\", \"de que banco é\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"code":{"description":"The linha digitável (47 or 48 digits) or barcode (44 digits), spaces and dots allowed.","examples":["23793.38128 60007.827136 95000.063305 6 84350000026000"],"title":"Code","type":"string"}},"required":["code"],"title":"boleto_decodeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/pix_decode":{"post":{"operationId":"pix_decode","summary":"Who a Pix code pays and how much, before paying: payee name and city, amount (if fixed), key type (CPF, CNPJ, phone,","description":"Who a Pix code pays and how much, before paying: payee name and city, amount (if fixed), key type (CPF, CNPJ, phone,\n    email, random) or dynamic URL, transaction id, whether it is single-use, and whether the CRC is intact. Use for \"quem\n    recebe esse Pix\", \"esse código Pix é seguro\", \"quanto é\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"payload":{"description":"The Pix 'copia e cola' text (starts with 000201).","examples":["00020126580014br.gov.bcb.pix0136123e4567-e12b-12d1-a456-426655440000520400005303986540510.005802BR5913Fulano de Tal6008BRASILIA62070503***6304"],"title":"Payload","type":"string"}},"required":["payload"],"title":"pix_decodeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/ddd_lookup":{"post":{"operationId":"ddd_lookup","summary":"Which state a DDD belongs to and the cities it covers. Use for \"DDD 71 é de onde\", \"esse número é de que estado\".","description":"Which state a DDD belongs to and the cities it covers. Use for \"DDD 71 é de onde\", \"esse número é de que estado\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ddd":{"description":"Two-digit area code.","examples":["11","71"],"title":"Ddd","type":"string"}},"required":["ddd"],"title":"ddd_lookupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/holidays":{"post":{"operationId":"holidays","summary":"Brazil's national holidays for a year with weekday, plus the next one and long weekends (holidays falling Monday/Friday","description":"Brazil's national holidays for a year with weekday, plus the next one and long weekends (holidays falling Monday/Friday\n    or adjacent to one). Use for \"feriados de 2027\", \"quando é o próximo feriado\", \"tem feriadão em novembro?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"year":{"description":"Year.","maximum":2199,"minimum":1900,"title":"Year","type":"integer"},"from_today":{"default":false,"description":"Only holidays from today onward.","title":"From Today","type":"boolean"}},"required":["year"],"title":"holidaysArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/bank_lookup":{"post":{"operationId":"bank_lookup","summary":"Find a bank or payment institution by COMPE code, ISPB or name, with whether it participates in Pix and how. Use for","description":"Find a bank or payment institution by COMPE code, ISPB or name, with whether it participates in Pix and how. Use for\n    \"que banco é o 260\", \"Nubank é banco de que código\", \"o Mercado Pago faz Pix direto?\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Bank code (3 digits), ISPB, or part of the name.","examples":["001","Nubank","260"],"title":"Query","type":"string"}},"required":["query"],"title":"bank_lookupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/rates":{"post":{"operationId":"rates","summary":"Today's SELIC, CDI and IPCA, and the Banco Central PTAX exchange rates for the currencies asked (buy/sell, by bulletin)","description":"Today's SELIC, CDI and IPCA, and the Banco Central PTAX exchange rates for the currencies asked (buy/sell, by bulletin)\n    for a date. Use for \"quanto está a Selic\", \"cotação do dólar hoje\", \"euro PTAX em 15/08/2026\", \"CDI atual\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"fx_currencies":{"default":["USD","EUR"],"description":"Currencies to quote in BRL from Banco Central PTAX, e.g. ['USD', 'EUR'].","items":{"type":"string"},"maxItems":6,"title":"Fx Currencies","type":"array"},"day":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Date for the exchange rate as YYYY-MM-DD (latest business day when omitted).","title":"Day"}},"title":"ratesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/fipe_price":{"post":{"operationId":"fipe_price","summary":"FIPE reference price for a vehicle from its name: the best-matching model with its price for the year asked (or the","description":"FIPE reference price for a vehicle from its name: the best-matching model with its price for the year asked (or the\n    latest years), FIPE code and reference month, plus the other models that matched so the person can pick the exact\n    version. Use for \"tabela FIPE do Onix 2020\", \"quanto vale minha CG 160\", \"preço FIPE da Toro\". FIPE is the base for\n    negotiations, insurance and IPVA.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"vehicle":{"description":"Brand and model words, e.g. 'Chevrolet Onix', 'Honda CG 160', 'Fiat Toro'.","examples":["Chevrolet Onix","Honda CG 160"],"title":"Vehicle","type":"string"},"kind":{"default":"carros","description":"carros, motos or caminhoes.","examples":["carros"],"title":"Kind","type":"string"},"year":{"anyOf":[{"maximum":2028,"minimum":1950,"type":"integer"},{"type":"null"}],"default":null,"description":"Model year, if known (otherwise the newest few years are priced).","title":"Year"}},"required":["vehicle"],"title":"fipe_priceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/ibge":{"post":{"operationId":"ibge","summary":"IBGE data for a state (name, region, capital, population estimate) and, optionally, a municipality's IBGE code — the","description":"IBGE data for a state (name, region, capital, population estimate) and, optionally, a municipality's IBGE code — the\n    code many forms, NF-e and government systems require. Use for \"código IBGE de Campinas\", \"população estimada da Bahia\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"uf":{"description":"State abbreviation.","examples":["SP","BA"],"title":"Uf","type":"string"},"municipality":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Municipality name to find its IBGE code (optional).","title":"Municipality"}},"required":["uf"],"title":"ibgeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/isbn_lookup":{"post":{"operationId":"isbn_lookup","summary":"A book by ISBN from the Brazilian ISBN agency and open catalogs: title, authors, publisher, year, pages, subjects and","description":"A book by ISBN from the Brazilian ISBN agency and open catalogs: title, authors, publisher, year, pages, subjects and\n    synopsis. Use for \"que livro é esse ISBN\", cataloguing, checking an edition.","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"isbn":{"description":"ISBN-10 or ISBN-13.","examples":["9788545702870"],"title":"Isbn","type":"string"}},"required":["isbn"],"title":"isbn_lookupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/ncm_search":{"post":{"operationId":"ncm_search","summary":"NCM (Mercosur tariff) codes matching a product description or code prefix, with validity dates — the code that goes on","description":"NCM (Mercosur tariff) codes matching a product description or code prefix, with validity dates — the code that goes on\n    NF-e and import declarations. Use for \"NCM de café torrado\", \"o que é o NCM 8471.30\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"description":"Product words or an NCM code prefix.","examples":["café","8471"],"title":"Query","type":"string"}},"required":["query"],"title":"ncm_searchArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/domain_check":{"post":{"operationId":"domain_check","summary":"Whether a .br domain is available at Registro.br, and if taken, its publication status, expiry and name servers. Use for","description":"Whether a .br domain is available at Registro.br, and if taken, its publication status, expiry and name servers. Use for\n    \"esse domínio .com.br está livre\", \"quando expira o domínio X\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"description":"A .br domain, e.g. 'minhaloja.com.br'.","examples":["minhaloja.com.br"],"title":"Domain","type":"string"}},"required":["domain"],"title":"domain_checkArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}