Bling ERP integration via API v3. Manage products, sales orders, contacts, fiscal invoices (NF-e), and stock.
SkillScore91Maintained
Automatic
◆Finance & Accounting pack
Last verified 8/19/2026
What it changes
Passed 21 of 23 test cases with the skill, and 11 of 23 without it.
Without skill48%
With skill91%
Checks it passed that the model alone missed
Identifies K for Kit
Uses query parameter tipoPessoa=J
Targets POST /pedidos/vendas endpoint
and 8 more in the full report
10 fixed11 passed either way2 still failing0 broke
Pass-rate lift
+43 pp
Tokens
+119%
Agent turns
0%
Response time
-62%
Model gemini-3.6-flashMeasured 8/19/2026v121 of 23 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 10 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 10
Prompt
We want to list corporate entity contacts (CNPJ) from Bling API v3. What exact query parameter key and value should be attached to GET /contatos to filter by legal entity person type?
What was checked, without and with the skill
Checked
Without skill
With skill
Uses query parameter tipoPessoa=J
Missed
Passed
case-12 · gemini-3.6-flash · 8/19/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md324 lines3 filesincludes scripts
Bling ERP Skill
Integration with Bling ERP via REST API v3 (OAuth2 Bearer).
When to use
List or create products, services, or kits in Bling
Create or query sales orders
Manage contacts (customers/suppliers)
Issue or list fiscal invoices (NF-e)
Check or update stock levels
Setup
This skill uses a Python client (scripts/bling_client.py) that handles OAuth2 Bearer auth with automatic refresh on 401. You do OAuth once via the CLI, then the skill refreshes tokens transparently forever.
Set the app's redirect URI to: http://localhost:8787/callback
Copy the Client ID and Client Secret into .env:
BLING_CLIENT_ID=...
BLING_CLIENT_SECRET=...
Run the login helper:
make bling-auth
This opens your browser, captures the authorization code via a local callback server, exchanges it for access_token + refresh_token, and persists both to .env.