From 794ea61fa33ddfa4fb04b544bd5576d49c23247b Mon Sep 17 00:00:00 2001 From: Midas DipLab Date: Sat, 6 Jun 2026 14:26:10 -0300 Subject: [PATCH 1/3] =?UTF-8?q?feat(bling):=20add=20proposal=20(or=C3=A7am?= =?UTF-8?q?ento)=20tools?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add 6 new tools for commercial proposals (propostas comerciais): - list_proposals - get_proposal - create_proposal - update_proposal - delete_proposal - update_proposal_status Endpoints: /propostas-comerciais (CRUD + PATCH status) --- package-lock.json | 532 ++++++++++++++++++++++++++------ package.json | 1 + packages/erp/bling/src/index.ts | 148 +++++++++ 3 files changed, 582 insertions(+), 99 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7a965d05..44ee7aa6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,6 +23,7 @@ "packages/shared" ], "devDependencies": { + "@types/express": "^5.0.6", "vitest": "^3.1.1" } }, @@ -58,6 +59,10 @@ "resolved": "packages/payments/asaas", "link": true }, + "node_modules/@codespar/mcp-banco-do-brasil": { + "resolved": "packages/banking/banco-do-brasil", + "link": true + }, "node_modules/@codespar/mcp-bcra": { "resolved": "packages/argentina/bcra", "link": true @@ -66,6 +71,10 @@ "resolved": "packages/mexico/belvo", "link": true }, + "node_modules/@codespar/mcp-bigdatacorp": { + "resolved": "packages/identity/bigdatacorp", + "link": true + }, "node_modules/@codespar/mcp-bind-erp": { "resolved": "packages/mexico/bind-erp", "link": true @@ -94,6 +103,18 @@ "resolved": "packages/payments/braspag", "link": true }, + "node_modules/@codespar/mcp-btg": { + "resolved": "packages/banking/btg", + "link": true + }, + "node_modules/@codespar/mcp-c6": { + "resolved": "packages/banking/c6", + "link": true + }, + "node_modules/@codespar/mcp-caf": { + "resolved": "packages/identity/caf", + "link": true + }, "node_modules/@codespar/mcp-caixa": { "resolved": "packages/banking/caixa", "link": true @@ -102,6 +123,10 @@ "resolved": "packages/payments/celcoin", "link": true }, + "node_modules/@codespar/mcp-certta": { + "resolved": "packages/identity/certta", + "link": true + }, "node_modules/@codespar/mcp-chargebee": { "resolved": "packages/payments/chargebee", "link": true @@ -114,6 +139,10 @@ "resolved": "packages/crypto/circle", "link": true }, + "node_modules/@codespar/mcp-coinbase-cdp": { + "resolved": "packages/crypto/coinbase-cdp", + "link": true + }, "node_modules/@codespar/mcp-coinbase-commerce": { "resolved": "packages/crypto/coinbase-commerce", "link": true @@ -178,6 +207,10 @@ "resolved": "packages/payments/getnet", "link": true }, + "node_modules/@codespar/mcp-iniciador": { + "resolved": "packages/banking/iniciador", + "link": true + }, "node_modules/@codespar/mcp-inter-bank": { "resolved": "packages/payments/inter-bank", "link": true @@ -270,6 +303,10 @@ "resolved": "packages/payments/pagseguro", "link": true }, + "node_modules/@codespar/mcp-paypal": { + "resolved": "packages/payments/paypal", + "link": true + }, "node_modules/@codespar/mcp-persona": { "resolved": "packages/identity/persona", "link": true @@ -282,6 +319,10 @@ "resolved": "packages/payments/pix-bcb", "link": true }, + "node_modules/@codespar/mcp-pluggy": { + "resolved": "packages/banking/pluggy", + "link": true + }, "node_modules/@codespar/mcp-quickbooks": { "resolved": "packages/erp/quickbooks", "link": true @@ -322,6 +363,10 @@ "resolved": "packages/ecommerce/shopify", "link": true }, + "node_modules/@codespar/mcp-sicoob": { + "resolved": "packages/banking/sicoob", + "link": true + }, "node_modules/@codespar/mcp-siigo": { "resolved": "packages/colombia/siigo", "link": true @@ -398,6 +443,10 @@ "resolved": "packages/communication/whatsapp-cloud", "link": true }, + "node_modules/@codespar/mcp-wise": { + "resolved": "packages/payments/wise", + "link": true + }, "node_modules/@codespar/mcp-wompi": { "resolved": "packages/colombia/wompi", "link": true @@ -3281,7 +3330,7 @@ }, "packages/argentina/afip": { "name": "@codespar/mcp-afip", - "version": "0.1.0", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3313,7 +3362,7 @@ }, "packages/argentina/andreani": { "name": "@codespar/mcp-andreani", - "version": "0.1.0", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3345,7 +3394,7 @@ }, "packages/argentina/bcra": { "name": "@codespar/mcp-bcra", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3377,7 +3426,7 @@ }, "packages/argentina/colppy": { "name": "@codespar/mcp-colppy", - "version": "0.1.0", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3409,7 +3458,7 @@ }, "packages/argentina/tienda-nube": { "name": "@codespar/mcp-tienda-nube", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3439,9 +3488,34 @@ "dev": true, "license": "MIT" }, + "packages/banking/banco-do-brasil": { + "name": "@codespar/mcp-banco-do-brasil", + "version": "0.1.0-alpha.2", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0", + "zod": "^3.23.0" + }, + "bin": { + "mcp-banco-do-brasil": "dist/index.js" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.8.0" + } + }, + "packages/banking/banco-do-brasil/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "packages/banking/bradesco": { "name": "@codespar/mcp-bradesco", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3454,9 +3528,39 @@ "typescript": "^5.8.0" } }, + "packages/banking/btg": { + "name": "@codespar/mcp-btg", + "version": "0.1.0-alpha.2", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0" + }, + "bin": { + "mcp-btg": "dist/index.js" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.8.0" + } + }, + "packages/banking/c6": { + "name": "@codespar/mcp-c6", + "version": "0.1.0-alpha.2", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0" + }, + "bin": { + "mcp-c6": "dist/index.js" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.8.0" + } + }, "packages/banking/caixa": { "name": "@codespar/mcp-caixa", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3471,7 +3575,7 @@ }, "packages/banking/dock": { "name": "@codespar/mcp-dock", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3485,9 +3589,41 @@ "typescript": "^5.8.0" } }, + "packages/banking/iniciador": { + "name": "@codespar/mcp-iniciador", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0" + }, + "bin": { + "mcp-iniciador": "dist/index.js" + }, + "devDependencies": { + "@types/node": "^22.0.0", + "typescript": "^5.8.0" + } + }, + "packages/banking/iniciador/node_modules/@types/node": { + "version": "22.19.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.20.tgz", + "integrity": "sha512-6tELRwSDYWW9EdZhbeZmYGZ1/7Djkt+Ah3/ScEYT9cDord7UJzasR/4D3VONg9tQI5CDp+/CZC1AXj2pCFOvpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "packages/banking/iniciador/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/banking/itau": { "name": "@codespar/mcp-itau", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3502,7 +3638,7 @@ }, "packages/banking/matera": { "name": "@codespar/mcp-matera", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3518,7 +3654,7 @@ }, "packages/banking/open-finance": { "name": "@codespar/mcp-open-finance", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3531,9 +3667,41 @@ "typescript": "^5.8.0" } }, + "packages/banking/pluggy": { + "name": "@codespar/mcp-pluggy", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0" + }, + "bin": { + "mcp-pluggy": "dist/index.js" + }, + "devDependencies": { + "@types/node": "^22.0.0", + "typescript": "^5.8.0" + } + }, + "packages/banking/pluggy/node_modules/@types/node": { + "version": "22.19.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.20.tgz", + "integrity": "sha512-6tELRwSDYWW9EdZhbeZmYGZ1/7Djkt+Ah3/ScEYT9cDord7UJzasR/4D3VONg9tQI5CDp+/CZC1AXj2pCFOvpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "packages/banking/pluggy/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/banking/santander": { "name": "@codespar/mcp-santander", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3546,9 +3714,24 @@ "typescript": "^5.8.0" } }, + "packages/banking/sicoob": { + "name": "@codespar/mcp-sicoob", + "version": "0.1.0-alpha.2", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0" + }, + "bin": { + "mcp-sicoob": "dist/index.js" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.8.0" + } + }, "packages/banking/stark-bank": { "name": "@codespar/mcp-stark-bank", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3563,7 +3746,7 @@ }, "packages/colombia/alegra": { "name": "@codespar/mcp-alegra", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3595,7 +3778,7 @@ }, "packages/colombia/coordinadora": { "name": "@codespar/mcp-coordinadora", - "version": "0.1.0", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3627,7 +3810,7 @@ }, "packages/colombia/nequi": { "name": "@codespar/mcp-nequi", - "version": "0.1.0", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3659,7 +3842,7 @@ }, "packages/colombia/siigo": { "name": "@codespar/mcp-siigo", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3691,7 +3874,7 @@ }, "packages/colombia/wompi": { "name": "@codespar/mcp-wompi", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3723,7 +3906,7 @@ }, "packages/communication/evolution-api": { "name": "@codespar/mcp-evolution-api", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3738,7 +3921,7 @@ }, "packages/communication/rd-station": { "name": "@codespar/mcp-rd-station", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3753,7 +3936,7 @@ }, "packages/communication/sendgrid": { "name": "@codespar/mcp-sendgrid", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3768,7 +3951,7 @@ }, "packages/communication/take-blip": { "name": "@codespar/mcp-take-blip", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3783,7 +3966,7 @@ }, "packages/communication/twilio": { "name": "@codespar/mcp-twilio", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3798,7 +3981,7 @@ }, "packages/communication/whatsapp-cloud": { "name": "@codespar/mcp-whatsapp-cloud", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3813,7 +3996,7 @@ }, "packages/communication/z-api": { "name": "@codespar/mcp-z-api", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0", @@ -3838,7 +4021,7 @@ }, "packages/communication/zenvia": { "name": "@codespar/mcp-zenvia", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3853,7 +4036,7 @@ }, "packages/crypto/bitso": { "name": "@codespar/mcp-bitso", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3885,7 +4068,7 @@ }, "packages/crypto/circle": { "name": "@codespar/mcp-circle", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3915,9 +4098,34 @@ "dev": true, "license": "MIT" }, + "packages/crypto/coinbase-cdp": { + "name": "@codespar/mcp-coinbase-cdp", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0", + "jose": "^5.9.0" + }, + "bin": { + "mcp-coinbase-cdp": "dist/index.js" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.8.0" + } + }, + "packages/crypto/coinbase-cdp/node_modules/jose": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.10.0.tgz", + "integrity": "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "packages/crypto/coinbase-commerce": { "name": "@codespar/mcp-coinbase-commerce", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3932,7 +4140,7 @@ }, "packages/crypto/foxbit": { "name": "@codespar/mcp-foxbit", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3964,7 +4172,7 @@ }, "packages/crypto/mercado-bitcoin": { "name": "@codespar/mcp-mercado-bitcoin", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -3996,7 +4204,7 @@ }, "packages/crypto/moonpay": { "name": "@codespar/mcp-moonpay", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4011,7 +4219,7 @@ }, "packages/crypto/transak": { "name": "@codespar/mcp-transak", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4026,7 +4234,7 @@ }, "packages/crypto/unblockpay": { "name": "@codespar/mcp-unblockpay", - "version": "0.1.2", + "version": "0.2.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4058,7 +4266,7 @@ }, "packages/crypto/x402": { "name": "@codespar/mcp-x402", - "version": "0.1.2", + "version": "0.1.3", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4090,7 +4298,7 @@ }, "packages/ecommerce/amazon": { "name": "@codespar/mcp-amazon", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4105,7 +4313,7 @@ }, "packages/ecommerce/correios": { "name": "@codespar/mcp-correios", - "version": "0.1.2", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4120,7 +4328,7 @@ }, "packages/ecommerce/melhor-envio": { "name": "@codespar/mcp-melhor-envio", - "version": "0.1.2", + "version": "0.1.3", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0", @@ -4145,7 +4353,7 @@ }, "packages/ecommerce/shopee": { "name": "@codespar/mcp-shopee", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4160,7 +4368,7 @@ }, "packages/ecommerce/shopify": { "name": "@codespar/mcp-shopify", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4175,7 +4383,7 @@ }, "packages/ecommerce/vtex": { "name": "@codespar/mcp-vtex", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4190,7 +4398,7 @@ }, "packages/erp/bling": { "name": "@codespar/mcp-bling", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4205,7 +4413,7 @@ }, "packages/erp/omie": { "name": "@codespar/mcp-omie", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4220,7 +4428,7 @@ }, "packages/erp/quickbooks": { "name": "@codespar/mcp-quickbooks", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4235,7 +4443,7 @@ }, "packages/erp/tiny": { "name": "@codespar/mcp-tiny", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4250,7 +4458,7 @@ }, "packages/erp/xero": { "name": "@codespar/mcp-xero", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4265,7 +4473,7 @@ }, "packages/fiscal/conta-azul": { "name": "@codespar/mcp-conta-azul", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4280,7 +4488,7 @@ }, "packages/fiscal/focus-nfe": { "name": "@codespar/mcp-focus-nfe", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4295,7 +4503,7 @@ }, "packages/fiscal/nfe-io": { "name": "@codespar/mcp-nfe-io", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4310,7 +4518,7 @@ }, "packages/fiscal/nuvem-fiscal": { "name": "@codespar/mcp-nuvem-fiscal", - "version": "0.2.0", + "version": "0.3.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4323,9 +4531,41 @@ "typescript": "^5.8.0" } }, + "packages/identity/bigdatacorp": { + "name": "@codespar/mcp-bigdatacorp", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0" + }, + "bin": { + "mcp-bigdatacorp": "dist/index.js" + }, + "devDependencies": { + "@types/node": "^22.0.0", + "typescript": "^5.8.0" + } + }, + "packages/identity/bigdatacorp/node_modules/@types/node": { + "version": "22.19.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.20.tgz", + "integrity": "sha512-6tELRwSDYWW9EdZhbeZmYGZ1/7Djkt+Ah3/ScEYT9cDord7UJzasR/4D3VONg9tQI5CDp+/CZC1AXj2pCFOvpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "packages/identity/bigdatacorp/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/identity/brasil-api": { "name": "@codespar/mcp-brasil-api", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0", @@ -4348,9 +4588,73 @@ "url": "https://github.com/sponsors/colinhacks" } }, + "packages/identity/caf": { + "name": "@codespar/mcp-caf", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0" + }, + "bin": { + "mcp-caf": "dist/index.js" + }, + "devDependencies": { + "@types/node": "^22.0.0", + "typescript": "^5.8.0" + } + }, + "packages/identity/caf/node_modules/@types/node": { + "version": "22.19.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.20.tgz", + "integrity": "sha512-6tELRwSDYWW9EdZhbeZmYGZ1/7Djkt+Ah3/ScEYT9cDord7UJzasR/4D3VONg9tQI5CDp+/CZC1AXj2pCFOvpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "packages/identity/caf/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "packages/identity/certta": { + "name": "@codespar/mcp-certta", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0" + }, + "bin": { + "mcp-certta": "dist/index.js" + }, + "devDependencies": { + "@types/node": "^22.0.0", + "typescript": "^5.8.0" + } + }, + "packages/identity/certta/node_modules/@types/node": { + "version": "22.19.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.20.tgz", + "integrity": "sha512-6tELRwSDYWW9EdZhbeZmYGZ1/7Djkt+Ah3/ScEYT9cDord7UJzasR/4D3VONg9tQI5CDp+/CZC1AXj2pCFOvpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "packages/identity/certta/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/identity/jumio": { "name": "@codespar/mcp-jumio", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4365,7 +4669,7 @@ }, "packages/identity/onfido": { "name": "@codespar/mcp-onfido", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4380,7 +4684,7 @@ }, "packages/identity/persona": { "name": "@codespar/mcp-persona", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4395,7 +4699,7 @@ }, "packages/identity/unico": { "name": "@codespar/mcp-unico", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4410,7 +4714,7 @@ }, "packages/mexico/belvo": { "name": "@codespar/mcp-belvo", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4442,7 +4746,7 @@ }, "packages/mexico/bind-erp": { "name": "@codespar/mcp-bind-erp", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4474,7 +4778,7 @@ }, "packages/mexico/conekta": { "name": "@codespar/mcp-conekta", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4506,7 +4810,7 @@ }, "packages/mexico/facturapi": { "name": "@codespar/mcp-facturapi", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4538,7 +4842,7 @@ }, "packages/mexico/skydropx": { "name": "@codespar/mcp-skydropx", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4570,7 +4874,7 @@ }, "packages/mexico/stp-spei": { "name": "@codespar/mcp-stp-spei", - "version": "0.1.0", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4602,7 +4906,7 @@ }, "packages/payments/adyen": { "name": "@codespar/mcp-adyen", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4617,7 +4921,7 @@ }, "packages/payments/airwallex": { "name": "@codespar/mcp-airwallex", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4632,7 +4936,7 @@ }, "packages/payments/ap2": { "name": "@codespar/mcp-ap2", - "version": "0.1.2", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4664,7 +4968,7 @@ }, "packages/payments/asaas": { "name": "@codespar/mcp-asaas", - "version": "0.1.2", + "version": "0.2.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0", @@ -4689,7 +4993,7 @@ }, "packages/payments/braintree": { "name": "@codespar/mcp-braintree", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4704,7 +5008,7 @@ }, "packages/payments/braspag": { "name": "@codespar/mcp-braspag", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4736,7 +5040,7 @@ }, "packages/payments/celcoin": { "name": "@codespar/mcp-celcoin", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4751,7 +5055,7 @@ }, "packages/payments/chargebee": { "name": "@codespar/mcp-chargebee", - "version": "0.1.0", + "version": "0.1.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4766,7 +5070,7 @@ }, "packages/payments/cielo": { "name": "@codespar/mcp-cielo", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4781,7 +5085,7 @@ }, "packages/payments/culqi": { "name": "@codespar/mcp-culqi", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4796,7 +5100,7 @@ }, "packages/payments/dlocal": { "name": "@codespar/mcp-dlocal", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4811,7 +5115,7 @@ }, "packages/payments/ebanx": { "name": "@codespar/mcp-ebanx", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4826,7 +5130,7 @@ }, "packages/payments/efi": { "name": "@codespar/mcp-efi", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4841,7 +5145,7 @@ }, "packages/payments/getnet": { "name": "@codespar/mcp-getnet", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4856,7 +5160,7 @@ }, "packages/payments/inter-bank": { "name": "@codespar/mcp-inter-bank", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4888,7 +5192,7 @@ }, "packages/payments/iugu": { "name": "@codespar/mcp-iugu", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4903,7 +5207,7 @@ }, "packages/payments/izipay": { "name": "@codespar/mcp-izipay", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4918,7 +5222,7 @@ }, "packages/payments/khipu": { "name": "@codespar/mcp-khipu", - "version": "0.1.0", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4933,7 +5237,7 @@ }, "packages/payments/mercado-libre": { "name": "@codespar/mcp-mercado-libre", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4965,7 +5269,7 @@ }, "packages/payments/mercado-pago": { "name": "@codespar/mcp-mercado-pago", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -4997,7 +5301,7 @@ }, "packages/payments/nubank": { "name": "@codespar/mcp-nubank", - "version": "0.1.0", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5029,7 +5333,7 @@ }, "packages/payments/nupay": { "name": "@codespar/mcp-nupay", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5044,7 +5348,7 @@ }, "packages/payments/openpay": { "name": "@codespar/mcp-openpay", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5059,7 +5363,7 @@ }, "packages/payments/pagar-me": { "name": "@codespar/mcp-pagar-me", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5074,7 +5378,7 @@ }, "packages/payments/pagseguro": { "name": "@codespar/mcp-pagseguro", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5087,9 +5391,24 @@ "typescript": "^5.8.0" } }, + "packages/payments/paypal": { + "name": "@codespar/mcp-paypal", + "version": "0.1.1", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0" + }, + "bin": { + "mcp-paypal": "dist/index.js" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.8.0" + } + }, "packages/payments/picpay": { "name": "@codespar/mcp-picpay", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5104,7 +5423,7 @@ }, "packages/payments/pix-bcb": { "name": "@codespar/mcp-pix-bcb", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5119,7 +5438,7 @@ }, "packages/payments/rapyd": { "name": "@codespar/mcp-rapyd", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5134,7 +5453,7 @@ }, "packages/payments/rede": { "name": "@codespar/mcp-rede", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5149,7 +5468,7 @@ }, "packages/payments/safrapay": { "name": "@codespar/mcp-safrapay", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5164,7 +5483,7 @@ }, "packages/payments/stone": { "name": "@codespar/mcp-stone", - "version": "0.2.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5179,7 +5498,7 @@ }, "packages/payments/stripe": { "name": "@codespar/mcp-stripe", - "version": "0.1.0", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5194,7 +5513,7 @@ }, "packages/payments/stripe-acp": { "name": "@codespar/mcp-stripe-acp", - "version": "0.1.2", + "version": "0.1.3", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5226,7 +5545,7 @@ }, "packages/payments/transbank": { "name": "@codespar/mcp-transbank", - "version": "0.1.0", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5241,7 +5560,7 @@ }, "packages/payments/ucp": { "name": "@codespar/mcp-ucp", - "version": "0.1.2", + "version": "0.1.3", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5273,7 +5592,7 @@ }, "packages/payments/vindi": { "name": "@codespar/mcp-vindi", - "version": "0.1.2", + "version": "0.2.1", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5286,9 +5605,24 @@ "typescript": "^5.8.0" } }, + "packages/payments/wise": { + "name": "@codespar/mcp-wise", + "version": "0.1.1", + "license": "MIT", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.0.0" + }, + "bin": { + "mcp-wise": "dist/index.js" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.8.0" + } + }, "packages/payments/worldpay": { "name": "@codespar/mcp-worldpay", - "version": "0.1.0-alpha.1", + "version": "0.2.0-alpha.2", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0" @@ -5303,7 +5637,7 @@ }, "packages/payments/zoop": { "name": "@codespar/mcp-zoop", - "version": "0.1.2", + "version": "0.1.3", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "^1.0.0", diff --git a/package.json b/package.json index c64974c4..7f72554d 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "audit:catalog:write": "python3 scripts/audit-catalog.py --out docs/catalog-audit.md" }, "devDependencies": { + "@types/express": "^5.0.6", "vitest": "^3.1.1" }, "license": "MIT", diff --git a/packages/erp/bling/src/index.ts b/packages/erp/bling/src/index.ts index 0320f4a4..31df38fa 100644 --- a/packages/erp/bling/src/index.ts +++ b/packages/erp/bling/src/index.ts @@ -9,6 +9,9 @@ * - list_categories, create_category * Sales * - list_orders, create_order + * Proposals + * - list_proposals, get_proposal, create_proposal + * - update_proposal, delete_proposal, update_proposal_status * Purchasing * - list_purchase_orders, create_purchase_order * Contacts @@ -523,6 +526,128 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({ required: ["webhookId"], }, }, + + // ---------------- Proposals ---------------- + { + name: "list_proposals", + description: "List commercial proposals (propostas comerciais / orçamentos) in Bling", + inputSchema: { + type: "object", + properties: { + page: { type: "number", description: "Page number" }, + limit: { type: "number", description: "Items per page" }, + situacao: { type: "string", description: "Filter by status (e.g., Rascunho, Aguardando, Aprovado, Concluído)" }, + }, + }, + }, + { + name: "get_proposal", + description: "Get a single commercial proposal by ID", + inputSchema: { + type: "object", + properties: { + proposalId: { type: "number", description: "Proposal ID" }, + }, + required: ["proposalId"], + }, + }, + { + name: "create_proposal", + description: "Create a commercial proposal (proposta comercial / orçamento)", + inputSchema: { + type: "object", + properties: { + contato: { type: "object", description: "Customer contact", properties: { id: { type: "number" } } }, + itens: { + type: "array", description: "Proposal items", + items: { + type: "object", + properties: { + produto: { type: "object", properties: { id: { type: "number" } } }, + quantidade: { type: "number" }, + valor: { type: "number" }, + desconto: { type: "number" }, + }, + }, + }, + parcelas: { + type: "array", description: "Payment installments", + items: { + type: "object", + properties: { + dataVencimento: { type: "string" }, + valor: { type: "number" }, + formaPagamento: { type: "object", properties: { id: { type: "number" } } }, + }, + }, + }, + observacoes: { type: "string", description: "Notes" }, + desconto: { type: "number", description: "Discount" }, + data: { type: "string", description: "Proposal date (YYYY-MM-DD)" }, + }, + required: ["itens", "parcelas"], + }, + }, + { + name: "update_proposal", + description: "Update an existing commercial proposal", + inputSchema: { + type: "object", + properties: { + proposalId: { type: "number", description: "Proposal ID" }, + contato: { type: "object", description: "Customer contact", properties: { id: { type: "number" } } }, + itens: { + type: "array", description: "Proposal items", + items: { + type: "object", + properties: { + produto: { type: "object", properties: { id: { type: "number" } } }, + quantidade: { type: "number" }, + valor: { type: "number" }, + desconto: { type: "number" }, + }, + }, + }, + parcelas: { + type: "array", description: "Payment installments", + items: { + type: "object", + properties: { + dataVencimento: { type: "string" }, + valor: { type: "number" }, + formaPagamento: { type: "object", properties: { id: { type: "number" } } }, + }, + }, + }, + observacoes: { type: "string", description: "Notes" }, + desconto: { type: "number", description: "Discount" }, + }, + required: ["proposalId"], + }, + }, + { + name: "delete_proposal", + description: "Delete a commercial proposal", + inputSchema: { + type: "object", + properties: { + proposalId: { type: "number", description: "Proposal ID" }, + }, + required: ["proposalId"], + }, + }, + { + name: "update_proposal_status", + description: "Update proposal status (e.g., Rascunho, Aguardando, Aprovado, Concluído, Cancelado)", + inputSchema: { + type: "object", + properties: { + proposalId: { type: "number", description: "Proposal ID" }, + situacao: { type: "string", description: "New status (e.g., Rascunho, Aguardando, Aprovado, Concluído, Cancelado)" }, + }, + required: ["proposalId", "situacao"], + }, + }, ], })); @@ -683,6 +808,29 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => { case "unsubscribe_webhook": return text(await blingRequest("DELETE", `/notificacoes/${a.webhookId}`)); + // ---- Proposals ---- + case "list_proposals": { + const p = new URLSearchParams(); + if (a.page) p.set("pagina", String(a.page)); + if (a.limit) p.set("limite", String(a.limit)); + if (a.situacao) p.set("situacao", String(a.situacao)); + return text(await blingRequest("GET", `/propostas-comerciais?${p}`)); + } + case "get_proposal": + return text(await blingRequest("GET", `/propostas-comerciais/${a.proposalId}`)); + case "create_proposal": + return text(await blingRequest("POST", "/propostas-comerciais", a)); + case "update_proposal": { + const { proposalId, ...rest } = a; + return text(await blingRequest("PUT", `/propostas-comerciais/${proposalId}`, rest)); + } + case "delete_proposal": + return text(await blingRequest("DELETE", `/propostas-comerciais/${a.proposalId}`)); + case "update_proposal_status": { + const { proposalId, situacao, ...rest } = a; + return text(await blingRequest("PATCH", `/propostas-comerciais/${proposalId}/situacoes`, { situacao })); + } + default: return { content: [{ type: "text", text: `Unknown tool: ${name}` }], isError: true }; } From 84aece32706028bcb08e03aaade31e4bbaeb6793 Mon Sep 17 00:00:00 2001 From: Midas DipLab Date: Sat, 6 Jun 2026 14:43:38 -0300 Subject: [PATCH 2/3] feat(bling): add expandContact to list_proposals Resolves contact names inline when expandContact=true. Uses sequential lookups to avoid rate limiting. --- packages/erp/bling/src/index.ts | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/erp/bling/src/index.ts b/packages/erp/bling/src/index.ts index 31df38fa..35c1fb8e 100644 --- a/packages/erp/bling/src/index.ts +++ b/packages/erp/bling/src/index.ts @@ -537,6 +537,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({ page: { type: "number", description: "Page number" }, limit: { type: "number", description: "Items per page" }, situacao: { type: "string", description: "Filter by status (e.g., Rascunho, Aguardando, Aprovado, Concluído)" }, + expandContact: { type: "boolean", description: "If true, resolve contact names inline (default: false)" }, }, }, }, @@ -814,7 +815,24 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => { if (a.page) p.set("pagina", String(a.page)); if (a.limit) p.set("limite", String(a.limit)); if (a.situacao) p.set("situacao", String(a.situacao)); - return text(await blingRequest("GET", `/propostas-comerciais?${p}`)); + const result: any = await blingRequest("GET", `/propostas-comerciais?${p}`); + // Expand contact names if requested + if (a.expandContact === true && result?.data?.length > 0) { + const rawIds = result.data.map((prop: any) => prop.contato?.id).filter((id: any) => id != null); + const contactIds = Array.from(new Set(rawIds)) as number[]; + const contacts: Record = {}; + for (const id of contactIds) { + try { + const c: any = await blingRequest("GET", `/contatos/${id}`); + if (c?.data?.nome) contacts[id] = c.data.nome; + } catch { /* skip failed contact lookups */ } + } + for (const prop of result.data) { + const cid = prop.contato?.id; + if (cid && contacts[cid]) prop.contato.nome = contacts[cid]; + } + } + return text(result); } case "get_proposal": return text(await blingRequest("GET", `/propostas-comerciais/${a.proposalId}`)); From 1d8086cee2c0d832d3d3009fbd3ce93fccc1f502 Mon Sep 17 00:00:00 2001 From: Raphael Fialho Date: Mon, 13 Jul 2026 12:23:44 -0300 Subject: [PATCH 3/3] chore(bling): update tool-count assertion to 34 for the new proposal tools Co-Authored-By: Claude Opus 4.8 --- packages/erp/bling/src/__tests__/index.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/erp/bling/src/__tests__/index.test.ts b/packages/erp/bling/src/__tests__/index.test.ts index d7bff1de..e84c241d 100644 --- a/packages/erp/bling/src/__tests__/index.test.ts +++ b/packages/erp/bling/src/__tests__/index.test.ts @@ -32,9 +32,9 @@ beforeEach(async () => { }); describe("mcp-bling", () => { - it("should register 28 tools", async () => { + it("should register 34 tools", async () => { const result = await listToolsHandler(); - expect(result.tools).toHaveLength(28); + expect(result.tools).toHaveLength(34); }); it("should call correct API endpoint for list_products", async () => {