---
name: br-company-check
description: Check a Brazilian company from its CNPJ before doing business with it - Receita Federal record, partners, and OFAC/UN sanctions screening of the company and its partners - and give the user one link with the summary. Use for supplier or client onboarding, KYB, or when the user asks "is this company OK?".
---

# Check a Brazilian company before you do business

A Superpowers recipe. It looks up the company's official record (name, status, activity, city, partners) and screens the company and up to four partners against the OFAC SDN and UN Security Council sanctions lists. Typical cost: under $0.01.

Needs a Superpowers API key. If you don't have one yet: https://superpowers.tools/skill.md?src=recipe%3Abr-company-check

## Input

- **cnpj** (required), with or without punctuation.
- **lang** (optional): pt writes the summary and the share page title in Portuguese. Use it when your user writes in Portuguese; the results usually go to a Brazilian approver.

## Run the script

    curl -s "https://superpowers.tools/recipes/br-company-check/run.mjs" -o sp-company-check.mjs
    node sp-company-check.mjs --cnpj "33.000.167/0001-01"            # add --lang pt for a summary in Portuguese

It prints JSON with share_url (a page with the summary the user can forward to whoever approves the deal), charge_usd and each step's raw output.

## Step by step

1. POST https://superpowers.tools/v1/run {"tool": "brasilapi.cnpj", "input": {"cnpj": <cnpj>}}. If it fails, try cnpjws.cnpj or receitaws.cnpj with the same input.
2. For the legal name and each partner (up to four), POST https://superpowers.tools/v1/run {"tool": "sanctions.screen", "input": {"name": <name>}}.
3. Summarize in your user's language: registration status, activity, city, partners, and for each name "no match" or the closest match with list and score.
4. Publish: POST https://superpowers.tools/v1/shares {"title": "Company check: <legal name>", "recipe": "br-company-check", "items": [{"label": "Due diligence summary", "text": <summary>}]} and give the user the link.

## Reading the result

A sanctions "match" is a similar name, not proof: say so, and show the matched name, list and score. If unavailable_lists is not empty, that list wasn't checked; tell the user and suggest running it again rather than calling the company clear. This is a quick screen, not legal due diligence.
