Bsale MCP by usefulapi

io.usefulapiPublished by usefulapi.ioOfficial publisherv1.7.4Updated Nov 7, 2026

Read Bsale products, documents and stock; manage customers, prices, receipts and payments.

The publisher's own server: Ably MCP by usefulapi

VerifiedStreamable HTTPWeb executableFinanceData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Connects an assistant to Bsale sales and invoicing data: documents, clients, products, stock, price lists and payments, with some write actions.

What you can do
  • List and inspect sales documents, returns, document types and sales summaries by month, office or seller
  • Search clients, their contacts and their unpaid receivables
  • Browse products, variants (SKUs), stock levels per branch, price lists and their prices
  • Review payments received, payment methods, branches and users
  • Create or update clients, change a price list price, record a stock reception and record a payment
  • Check usage against the plan and manage the subscription
When to use it
Useful when you work with a Bsale account and want to ask questions in plain language about sales, stock, prices or customer debt, or have routine entries such as a stock reception or a payment recorded without opening the Bsale interface.
Requirements
A remote MCP endpoint added by URL only; no API key or Authorization header in the client config. Sign-in is via OAuth, and the login page asks for your Bsale credentials. A Bsale company account is required. The free plan allows 50 tool calls per month; paid plans raise the limit.
Before you install
Five tools write to Bsale: creating and updating clients, changing a price list price (affects what new sales charge), recording a stock reception, and recording a payment. Stock receptions and payments cannot be undone through this API, so confirm amounts first. New clients are visible to every user of the instance. Paid plans are billed through a payment link and are not refunded for the current period. Your Bsale credentials are entered on the provider's login page.

Installation

In SourceWeft

  1. Open Bsale MCP by usefulapi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.usefulapi%2Fbsale/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "bsale-by-usefulapi": {
      "type": "http",
      "url": "https://bsale.usefulapi.io/mcp"
    }
  }
}

README

Bsale MCP by usefulapi

Read Bsale products, documents and stock; manage customers, prices, receipts and payments.

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://bsale.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http bsale https://bsale.usefulapi.io/mcp, then run /mcp to log in.
  • VS Code: Add to VS Code.
  • Cursor and other clients: add the URL as a remote MCP server:
json
{  "mcpServers": {    "bsale": {      "url": "https://bsale.usefulapi.io/mcp"    }  }}

Add only the URL. Do not add an Authorization header or an API key to the client config: the server signs you in with OAuth, and the login page asks for your Bsale credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/bsale/

Tools

ToolTypeWhat it does
bsale_list_documentsreadList documents (sales)
bsale_get_documentreadGet document
bsale_sales_summaryreadSales summary
bsale_list_returnsreadList returns
bsale_list_document_typesreadList document types
bsale_list_clientsreadList clients
bsale_get_clientreadGet client
bsale_client_unpaid_documentsreadClient unpaid documents
bsale_list_productsreadList products
bsale_get_productreadGet product
bsale_list_variantsreadList variants (SKUs)
bsale_get_variantreadGet variant
bsale_list_stocksreadList stock levels
bsale_list_price_listsreadList price lists
bsale_list_price_list_detailsreadList price list prices
bsale_list_paymentsreadList payments
bsale_list_payment_typesreadList payment types
bsale_list_officesreadList offices (branches)
bsale_list_usersreadList users (sellers)
bsale_user_sales_summaryreadSales by seller
bsale_create_clientwriteCreate client
bsale_update_clientwriteUpdate client
bsale_update_pricewriteUpdate price list price
bsale_create_stock_receptionwriteReceive stock
bsale_create_paymentwriteRecord payment
bsale_usage_statusmetaUsage status (free-tier meter)
bsale_request_featuremetaRequest a missing feature
bsale_upgrademetaUpgrade to Pro or Pro+
bsale_cancel_subscriptionmetaCancel the Pro subscription

read tools are read-only; write tools mutate data (clients should confirm them); meta tools report usage, manage your subscription or send a feature request.

Pricing

PlanPriceLimit
Free$050 tool calls / month
Pro (per Bsale company and API host)$9/mo or $90/yr (2 months free)Unlimited*

*Pro has a fair use limit of 10,000 tool calls a month on this server. For more, write to [email protected].

Pro covers this server only. Subscribe with bsale_upgrade (it returns a Stripe Checkout link). Cancel any time with bsale_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running bsale_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT

Source: servers/bsale/README.md at commit 4046075

Tools

25

bsale_list_documents

List documents (sales)

List issued documents (boletas, facturas, notas de credito, guias...) newest-first as Bsale returns them, with number, dates, net/tax/total amounts, state, SII status and public PDF link. Filter by emission date range, document type, client, office, folio number or SII code. Use expand (details, payments, client, office, document_type) to embed related data. GET /v1/documents.json.

Parameterslimitstateexpandnumberoffsetcode_siiclient_idoffice_idemitted_toclient_codeemitted_frominformed_sii+1 more

bsale_get_document

Get document

One document by id with its amounts, dates, state and links. Use expand=[details,payments,client,office,document_type,references,sellers] to include line items, payments and related records. GET /v1/documents/{id}.json.

Parametersexpanddocument_idrequired

bsale_sales_summary

Sales summary

Totals of sales documents (net, tax, total, count) by month, document type and office for a date range; set per_document to list each document instead. Good for 'how much did we sell in September?'. GET /v1/documents/summary.json.

Parameterslimitoffsetcode_siiemitted_toemitted_fromper_document

bsale_list_returns

List returns

List returns (devoluciones) with date, motive, amounts and the credit note issued. Use expand=[reference_document,credit_note,details] for more. GET /v1/returns.json.

Parameterslimitexpandoffset

bsale_list_document_types

List document types

List document types (boleta, factura, nota de credito, guia de despacho...) with their id and tax (SII) code. Use the id when filtering documents. GET /v1/document_types.json.

Parameterslimitstateoffsetcode_sii

bsale_list_clients

List clients

List customers with name, tax id (code), email, phone, address, credit limit and loyalty points. Filter by tax id, name, last name or email. GET /v1/clients.json.

Parameterscodeemaillimitstateexpandoffsetlast_namefirst_name

bsale_get_client

Get client

One customer by id. Use expand=[contacts,attributes,addresses] to include contacts and extra attributes. GET /v1/clients/{id}.json.

Parametersexpandclient_idrequired

bsale_client_unpaid_documents

Client unpaid documents

A client's receivables: overdue and upcoming debt, total owed, and the unpaid documents with amounts. Give client_id or client_code. GET /v1/clients/unpaid_documents.json.

Parametersas_ofclient_idclient_code

bsale_list_products

List products

List products and services (name, description, class, stock control, state). SKUs live on variants: see bsale_list_variants. GET /v1/products.json.

Parameterslimitstateexpandoffsetclassificationproduct_type_id

bsale_get_product

Get product

One product by id; expand=[product_type] adds the type. GET /v1/products/{id}.json.

Parametersexpandproduct_idrequired

bsale_list_variants

List variants (SKUs)

List product variants, the sellable SKUs: description, SKU code, barcode, stock settings and product link. Search by SKU code, barcode, description or product id. GET /v1/variants.json.

Parameterscodelimitstateexpandoffsetbarcodeproduct_iddescription

bsale_get_variant

Get variant

One variant (SKU) by id; expand=[product] embeds the product. GET /v1/variants/{id}.json.

Parametersexpandvariant_idrequired

bsale_list_stocks

List stock levels

Stock per variant and office: quantity, reserved and available. Filter by office, variant id, SKU code or barcode (for a pack give a variant filter plus office_id). expand=[variant,office] adds names. GET /v1/stocks.json.

Parameterscodelimitexpandoffsetbarcodeoffice_idvariant_id

bsale_list_price_lists

List price lists

List price lists with name, currency and state. Use the id with bsale_list_price_list_details. GET /v1/price_lists.json.

Parameterslimitexpandoffsetcoin_id

bsale_list_price_list_details

List price list prices

Prices in one price list: the net price (variantValue) and price with taxes per variant, plus the detail id needed to change a price. Filter by variant id, SKU code or barcode. GET /v1/price_lists/{id}/details.json.

Parameterscodelimitexpandoffsetbarcodevariant_idprice_list_idrequired

bsale_list_payments

List payments

List payments received (amount, date, payment type, document, office, user). Filter by payment date, document id, or document tax code plus folio number. GET /v1/payments.json.

Parameterslimitexpandnumberoffsetpaid_oncode_siidocument_id

bsale_list_payment_types

List payment types

List payment methods (cash, card, transfer, credit...) with their id. The id is needed to record a payment. GET /v1/payment_types.json.

Parameterslimitstateoffset

bsale_list_offices

List offices (branches)

List branches (sucursales) with name, address and cost center. Use the id for stock and document filters. GET /v1/offices.json.

Parameterslimitstateoffset

bsale_list_users

List users (sellers)

List Bsale users (sellers/cashiers) with name and office. GET /v1/users.json.

Parameterslimitstateexpandoffsetoffice_id

bsale_user_sales_summary

Sales by seller

Sales and tax subtotal per seller for a date range (default: today, UTC), or for one user. GET /v1/users/sales_summary.json.

Parameterstofromuser_id

bsale_create_client

Create client

WRITE: create a new customer in Bsale (it is visible to every user of the instance). Give at least a first name or a company. Bsale rejects a second client with the same tax id. POST /v1/clients.json.

Parameterscitycodenoteemailphoneaddresscompanyactivitydistrictlast_namefirst_nameis_foreigner+1 more

bsale_update_client

Update client

WRITE: change fields of an existing customer; only the fields you pass are sent. This overwrites the stored values. PUT /v1/clients/{id}.json.

Parameterscitycodenoteemailphoneaddresscompanyactivitydistrictclient_idrequiredlast_namefirst_name+1 more

bsale_update_price

Update price list price

WRITE: set the net price (variantValue, without taxes) of one variant in a price list. This changes what Bsale charges on new sales using that list. Get detail_id from bsale_list_price_list_details. PUT /v1/price_lists/{id}/details/{detail_id}.json.

Parametersdetail_idrequirednet_pricerequiredprice_list_idrequired

bsale_create_stock_reception

Receive stock

WRITE: record a stock reception (ingreso de stock) that ADDS quantities to an office's inventory. Each line names the variant by id, SKU code or barcode, with quantity and unit cost. It changes stock levels and cost; Bsale has no undo through this API, so confirm the numbers first. POST /v1/stocks/receptions.json.

Parametersnotedetailsrequireddocumentoffice_idrequireddocument_number

bsale_create_payment

Record payment

WRITE: record a payment against an issued document (normally a credit sale that is still unpaid). It changes the document's receivable balance in the books and cannot be removed through this API. Check the amount with bsale_client_unpaid_documents first and get payment_type_id from bsale_list_payment_types. POST /v1/payments.json.

Parametersamountrequiredpaid_ondocument_idrequiredpayment_type_idrequired

Version history

10
  1. v1.7.4LatestNov 7, 2026
  2. v1.6.3Nov 5, 2026
  3. v1.6.2Nov 5, 2026
  4. v1.6.1Nov 4, 2026
  5. v1.6.0Nov 3, 2026
  6. v1.5.1Nov 3, 2026
  7. v1.4.0Nov 1, 2026
  8. v1.2.0Oct 31, 2026
  9. v1.1.0Oct 31, 2026
  10. v1.0.1Oct 31, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Usefulapi integrations