BeeL MCP server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| beel_activate_by_idA | Switches an existing company (NIF) on in the mode carried in the body. The mode is always explicit and never taken from the credential's environment, so a Test key can switch a NIF on in Live.
Endpoint: POST /v1/companies/{company_id}/activations |
| beel_cancel_representationB | Cancels the active AEAT representation of a company (NIF). Until a new document is generated and signed, the company can no longer submit invoices to AEAT in production; its activation and its ability to issue non-VeriFactu invoices are untouched. A company with no active representation is rejected with Endpoint: DELETE /v1/companies/{company_id}/representation |
| beel_change_managed_access_levelA | Updates the Requires the Endpoint: PATCH /v1/accounts/{account_id}/access-level |
| beel_convert_proforma_to_invoiceA | Converts an accepted proforma of this company into a real invoice. Only proformas in status
The call creates a new Endpoint: POST /v1/companies/{company_id}/invoices/{invoice_id}/convert-to-invoice ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_create_claim_tokenA | Issues a single-use Tokens last 30 days and only the last one issued is live: issuing again invalidates the previous token, so the old link stops working the moment you ask for a new one. This hands the account itself over to its holder; to add a further person to an account that already has one, invite them with Requires the Endpoint: POST /v1/accounts/{account_id}/claim-tokens |
| beel_create_invitationA | Creates a single-use invitation for a person to join the account with the given By default BeeL sends no email and you deliver the token or Endpoint: POST /v1/accounts/{account_id}/invitations |
| beel_create_webhook_subscriptionA | Registers an HTTPS endpoint to receive event notifications for the events
listed in An account holds at most 10 active subscriptions; creating an eleventh is rejected. Registering the same URL twice creates two subscriptions, and the endpoint then receives each event twice. Endpoint: POST /v1/accounts/{account_id}/webhooks |
| beel_create_companyA | Creates a company (NIF) under the account in the path and, unless A NIF that already exists in the account is rejected with Endpoint: POST /v1/accounts/{account_id}/companies ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_create_corrective_invoiceA | Issues a corrective invoice that amends the invoice in the path. It is a new fiscal
document with its own number, not an edit of the original. A Only an ordinary or a simplified invoice in Omitting Endpoint: POST /v1/companies/{company_id}/invoices/{invoice_id}/corrective ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_create_customerA | Creates a new customer under this company (NIF). An Endpoint: POST /v1/companies/{company_id}/customers ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_create_customers_bulkA | Creates up to 500 customers of this company (NIF) in a single call. The operation is
atomic: if any customer fails validation the whole batch is rejected with With Endpoint: POST /v1/companies/{company_id}/customers/bulk ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_create_invoiceA | Creates an invoice under this company (NIF); the issuer data is taken from the company in
the path. With A proforma ( Endpoint: POST /v1/companies/{company_id}/invoices ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_create_invoice_batchA | Applies one operation — Not atomic: each invoice is processed in its own transaction, and since issuing is
irreversible, the ones already issued stay issued if a later one fails. Downloading PDFs,
sending email and exporting are not operations of this batch: use Endpoint: POST /v1/companies/{company_id}/invoices/batches |
| beel_create_invoice_deliveryA | Sends one email carrying the PDFs of up to 200 invoices of this company as attachments, to
the addresses given in Endpoint: POST /v1/companies/{company_id}/invoices/deliveries |
| beel_create_invoice_derivationA | Creates a draft invoice derived from an existing invoice of this company, named in
The series — the one sent in Endpoint: POST /v1/companies/{company_id}/invoices/derivations ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_create_productB | Creates a new product or service in the catalog of this company (NIF). Endpoint: POST /v1/companies/{company_id}/products |
| beel_create_products_bulkA | Creates up to 100 products in the catalog of this company (NIF). The operation is partial: each product is processed and reported independently, so a row the domain rejects — a rate the law does not allow, a duplicate code — comes back inside the report while the rest are created. Endpoint: POST /v1/companies/{company_id}/products/bulk |
| beel_create_recurring_invoiceA | Creates a recurring invoice template under this company (NIF) with its template data
(lines, recipient, series, payment) and its recurrence. Generation runs monthly on
A Endpoint: POST /v1/companies/{company_id}/recurring-invoices ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_create_recurring_invoice_derivationA | Creates a recurring invoice template of this company taking its lines, recipient, series
and payment data from the invoice named in Omitting Endpoint: POST /v1/companies/{company_id}/recurring-invoices/derivations ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_create_seriesA | Creates an invoice series under a company (NIF). The series code must be unique within the
company — a code already taken answers The first series created for a company is automatically marked as default. Endpoint: POST /v1/companies/{company_id}/series ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_deactivate_by_idA | Switches the company (NIF) off in the mode given by Endpoint: DELETE /v1/companies/{company_id}/activations |
| beel_delete_invitationA | Revokes a Endpoint: DELETE /v1/accounts/{account_id}/invitations/{invitation_id} |
| beel_delete_memberA | Removes a member's access to the account. The account's last Endpoint: DELETE /v1/accounts/{account_id}/members/{member_id} |
| beel_delete_member_grantA | Revokes a Endpoint: DELETE /v1/accounts/{account_id}/members/{member_id}/grants/{company_id} |
| beel_delete_webhook_subscriptionA | Permanently deletes a webhook subscription. No further events are
delivered to its URL. To stop deliveries reversibly, set Endpoint: DELETE /v1/accounts/{account_id}/webhooks/{webhook_id} |
| beel_delete_by_idA | Removes a company (NIF) from the account: it stops appearing and stops being billed. Invoices already issued are retained, but the company-scoped API can no longer resolve them once the NIF is removed. A NIF activated in Live cannot be removed ( Without an Endpoint: DELETE /v1/companies/{company_id} ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_delete_customerA | Deletes a customer of this company (NIF) that has no invoices. The customer is retained
internally for tax record-keeping purposes, but is no longer exposed by the API: subsequent
requests to it return A customer that has invoices cannot be deleted and answers Endpoint: DELETE /v1/companies/{company_id}/customers/{customer_id} |
| beel_delete_customers_bulkA | Deletes the customers listed in Each deletion has the same semantics as
Endpoint: DELETE /v1/companies/{company_id}/customers/bulk |
| beel_delete_invoiceA | Deletes a draft invoice of this company. The record is marked as deleted rather than
removed. An issued invoice is never deleted: it is voided with
If the draft came from converting a proforma ( Endpoint: DELETE /v1/companies/{company_id}/invoices/{invoice_id} ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_delete_invoice_scheduleA | Removes the scheduling of an invoice, returning it to a plain draft. Idempotent: an invoice
that is not scheduled answers Endpoint: DELETE /v1/companies/{company_id}/invoices/{invoice_id}/schedule ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_delete_logo_by_idA | Removes the logo of a company (NIF). Invoices rendered afterwards carry no logo, and
already issued documents are unchanged. Deleting an absent logo also returns Endpoint: DELETE /v1/companies/{company_id}/logo |
| beel_delete_productB | Deletes a product from the catalog of this company (NIF). Endpoint: DELETE /v1/companies/{company_id}/products/{product_id} |
| beel_delete_products_bulkA | Deletes the products listed in Endpoint: DELETE /v1/companies/{company_id}/products/bulk |
| beel_delete_recurring_invoiceA | Permanently deletes a recurring invoice template of this company (NIF) and cancels any pending scheduled generations. Invoices already generated from it are not affected. Endpoint: DELETE /v1/companies/{company_id}/recurring-invoices/{recurring_invoice_id} ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_delete_seriesA | Soft-deletes an invoice series, deactivating it first if it is active. The code is not
released: it stays taken after the deletion because it identifies the invoices already
issued under it, so recreating a series with the same code answers
A default series cannot be deleted while another active series of the same document type
exists — promote that other one first. If it is the only series of its type it is deleted
and the type is left with none, a valid state in which issuing without an explicit
Endpoint: DELETE /v1/companies/{company_id}/series/{series_id} ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_disconnect_payment_connectionA | Disconnects the payment provider connection ( The authorization the holder granted at the provider is not revoked on the provider's side. To withdraw it, the holder must remove BeeL's access from the provider's own dashboard (in Stripe, Settings → Connected applications). Endpoint: DELETE /v1/companies/{company_id}/payment-connections/{provider} |
| beel_download_representation_documentA | Returns a presigned URL, valid for 5 minutes, to download the representation PDF of a company (NIF). While the document is unsigned it serves the generated one; once the signed copy has been submitted it serves that. A company that has not generated the document yet is rejected with Endpoint: GET /v1/companies/{company_id}/representation/document |
| beel_end_managementA | Ends the management relationship over an account you provisioned: you lose access to it and its NIFs stop counting towards your billable usage from the next billing cycle. The account holder keeps the account, its NIFs and its invoices, and becomes responsible for their own subscription. Nothing is deleted or anonymised. It is reversible only while the account stays unclaimed: provisioning the same email again reactivates it (see Requires the Endpoint: DELETE /v1/accounts/{account_id}/management |
| beel_ensure_default_seriesA | Ensures the company (NIF) has a default invoice series for A document type that already has a default keeps it, and it is returned unchanged. A
missing one is created with code Endpoint: PUT /v1/companies/{company_id}/series/defaults ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_generate_payment_event_draftA | Builds a draft invoice from a payment event that could not be invoiced automatically, applying the same recipient resolution and tax treatment the automatic flow would have applied, under the NIF in the path. The document is left as a draft: it is not issued, not numbered against the series and not emailed — issue it yourself once it is right. Only events that produced no invoice can produce a draft; otherwise the request returns
Endpoint: POST /v1/companies/{company_id}/payment-connections/{provider}/events/{event_id}/draft |
| beel_generate_recurring_invoice_nowA | Runs the generation of this recurring template immediately, out of its schedule. It is a fiscal act: the generated invoice consumes numbering from the series of the template and, when the template says so, is issued and sent. It brings the upcoming occurrence forward — it does not add one. The call consumes the
period that was pending: the invoice is created now and For an extra invoice outside the calendar, do not use this endpoint: create a normal
invoice, or derive a draft from one the template already generated with
Endpoint: POST /v1/companies/{company_id}/recurring-invoices/{recurring_invoice_id}/generate ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_generate_representationA | Generates the unsigned AEAT representation PDF of a company (NIF), which is then
downloaded from The fiscal identity of the company must be complete before the document can be produced;
an incomplete one is rejected with Endpoint: POST /v1/companies/{company_id}/representation |
| beel_get_accountA | Returns one account you provisioned, with the same shape the list returns: its lifecycle Endpoint: GET /v1/accounts/{account_id} |
| beel_get_email_deliveryA | Returns one recorded email with its message body (HTML and plain text), its attachments and, for batch emails, the invoices it carried. The body is fetched live and is only available while the message has a
provider message id and the provider still retains it; otherwise
Endpoint: GET /v1/accounts/{account_id}/emails/{email_id} |
| beel_get_email_delivery_indicatorsA | Returns, for each related entity id given, how many emails the history holds for it, the status of the most recent one and when it was sent. Lets you show the state of an entity's email without loading its full history.
Endpoint: GET /v1/accounts/{account_id}/email-indicators |
| beel_get_invitationA | Returns one invitation of the account, with the same shape the list returns. An invitation stays readable for its whole life: Endpoint: GET /v1/accounts/{account_id}/invitations/{invitation_id} |
| beel_get_memberA | Returns one member of the account, with the same shape the list returns. Endpoint: GET /v1/accounts/{account_id}/members/{member_id} |
| beel_get_request_logA | Returns the full detail (bodies and headers) of a request made by you, with any of your
API keys in this environment — including one made with a key other than the one you are
authenticating with, because the axis is the person, not the individual credential. The
This is the widest read the Endpoint: GET /v1/accounts/{account_id}/request-logs/{request_id} |
| beel_get_usageA | Returns how many accounts you have provisioned and the billable count that follows from them — the figure behind your offline B2B invoice. The billable unit is the provisioned account, not the real NIF: every account you provision counts as one, empty and unclaimed ones included. Usage is a property of the provisioner, not of each provisioned account, so Requires the Endpoint: GET /v1/accounts/{account_id}/usage |
| beel_get_webhook_subscriptionA | Returns a single webhook subscription. The signing secret is never included. Endpoint: GET /v1/accounts/{account_id}/webhooks/{webhook_id} |
| beel_get_by_idA | Returns the identity and activation state of a company (NIF): its fiscal data, whether it is switched on in Test and in Live, and its VeriFactu registration state. Its invoice series are not part of this response: read them from
Endpoint: GET /v1/companies/{company_id} ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_get_customerA | Retrieves the complete details of a customer of this company (NIF). Endpoint: GET /v1/companies/{company_id}/customers/{customer_id} |
| beel_get_default_seriesA | Reports, for each The environment is resolved from the request context and takes no input. Endpoint: GET /v1/companies/{company_id}/series/defaults ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_get_fiscal_summaryA | Returns the VAT and IRPF summary of the invoices issued under this company (NIF) over the requested period, together with the annual IRPF projection and its progressive bracket breakdown.
The period defaults to the current month and may not exceed 365 days; a longer or inverted range answers Endpoint: GET /v1/companies/{company_id}/fiscal-summary |
| beel_get_invoiceB | Retrieves the full details of an invoice of this company (NIF). Endpoint: GET /v1/companies/{company_id}/invoices/{invoice_id} ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_get_invoice_customizationA | Returns how the invoices of a company (NIF) are rendered and delivered: PDF template, accent colour, invoice language, email language and current logo. Customization is a per-NIF property, so each company of the account carries its own. The catalogue of available templates and suggested colours is served by
Endpoint: GET /v1/companies/{company_id}/invoice-customization |
| beel_get_invoice_pdfA | Returns a temporary pre-signed URL to download the invoice PDF. The URL expires in five
minutes and only allows A Endpoint: GET /v1/companies/{company_id}/invoices/{invoice_id}/pdf |
| beel_get_invoice_previewA | Returns a temporary pre-signed URL to a preview image (WebP) of the invoice, suitable for
inline rendering. The image is generated and cached on first request, so a later call
returns the cached image. The URL expires in five minutes and only allows Endpoint: GET /v1/companies/{company_id}/invoices/{invoice_id}/preview |
| beel_get_invoice_scheduleA | Returns the date and generation mode currently scheduled for this invoice. An invoice with
no scheduling answers Endpoint: GET /v1/companies/{company_id}/invoices/{invoice_id}/schedule ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_get_issuing_readinessA | Returns whether a company (NIF) can issue its STANDARD invoice right now in the
environment of the request, and the Issuing any fiscal document requires the company to be activated in the environment of
that document, whether or not it goes to VeriFactu. The VeriFactu capability chain — AEAT
census and signed representation — is additionally demanded only when the company applies
VeriFactu by default, the same derivation invoice creation uses when This does not evaluate the account's quota or subscription, nor the payload of any particular invoice. Endpoint: GET /v1/companies/{company_id}/issuing-readiness ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_get_payment_eventA | Retrieves a single payment event of the NIF's connection, including the outcome of its automatic invoicing and, when it failed, the stable failure code you can act on. An event that does not belong to this NIF's connection returns Endpoint: GET /v1/companies/{company_id}/payment-connections/{provider}/events/{event_id} |
| beel_get_productA | Retrieves the details of a product of this company (NIF). Endpoint: GET /v1/companies/{company_id}/products/{product_id} |
| beel_get_recurring_invoiceA | Retrieves the full details of a recurring invoice template of this company (NIF), including its schedule, template lines and next generation date. Endpoint: GET /v1/companies/{company_id}/recurring-invoices/{recurring_invoice_id} ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_get_recurring_invoice_historyA | Returns the invoices previously generated from this recurring template, including their status and generation dates. Endpoint: GET /v1/companies/{company_id}/recurring-invoices/{recurring_invoice_id}/history ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_get_recurring_next_occurrenceA | Returns the invoice that would be produced by the next generation of this recurring template, computed from the current issuer, recipient and series data. Nothing is persisted and no numbering is consumed. Endpoint: GET /v1/companies/{company_id}/recurring-invoices/{recurring_invoice_id}/next-occurrence ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_get_representationA | Returns the state of the AEAT fiscal representation of a company (NIF): whether the document has been generated, signed and submitted, and whether AEAT accepted it or it was cancelled. A company that never started the process is not an error: it answers Endpoint: GET /v1/companies/{company_id}/representation |
| beel_get_seriesA | Returns one invoice series of a company (NIF), with its code, format, counter state, document type and whether it is the default of that type. Endpoint: GET /v1/companies/{company_id}/series/{series_id} ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_get_tax_configurationA | Returns the tax configuration of a company (NIF): its default tax regime with the default main percentage and regime key, plus its IRPF and equivalence surcharge settings. The catalogue of tax types this configuration draws from is not company data and lives outside this resource. Endpoint: GET /v1/companies/{company_id}/tax-configuration |
| beel_get_verifactu_configurationA | Retrieves the VeriFactu configuration of this company (NIF). The configuration belongs to the NIF, so the NIF in the path is what decides which one is returned. Endpoint: GET /v1/companies/{company_id}/verifactu-configuration ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_get_my_identityA | Returns the identity of the authenticated principal: the account the credential
belongs to, the person's email, name, logo and interface language, and a
description of the credential itself. Unlike every other operation, it requires
no scope — any valid credential resolves, so a
Endpoint: GET /v1/me/identity |
| beel_initiate_payment_connectionA | Opens an authorization session so the holder of a NIF (company) your account
manages can connect a payment provider ( The connection is created only when the holder authorizes, so it does not appear in
The NIF must be activated in the mode of your API key ( Endpoint: POST /v1/companies/{company_id}/payment-connections/authorizations |
| beel_issue_invoiceA | Finalizes a draft invoice of this company: assigns its definitive number from the configured series and makes it immutable. Irreversible — an issued invoice is corrected with a corrective invoice or voided, never edited. PDF and VeriFactu submission are asynchronous: a Endpoint: POST /v1/companies/{company_id}/invoices/{invoice_id}/issue ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_list_email_deliveriesA | Returns the emails the system recorded on behalf of the account in the
path: invoice deliveries, verification, onboarding. Every attempt is
recorded, not only the ones that went out — an email stopped by policy is
listed with Results are ordered by Endpoint: GET /v1/accounts/{account_id}/emails |
| beel_list_invitationsA | Lists the invitations sent to join the account, whatever their Endpoint: GET /v1/accounts/{account_id}/invitations |
| beel_list_member_grantsA | Lists the companies (NIFs) granted to a Endpoint: GET /v1/accounts/{account_id}/members/{member_id}/grants |
| beel_list_membersA | Lists the people with access to the account, each with their Endpoint: GET /v1/accounts/{account_id}/members |
| beel_list_request_logsA | Returns the history of public API requests made by you, with any of your API keys in
this environment — not only the key you are authenticating with. The axis is the person,
not the individual credential: a second key of yours sees the same history, and narrowing
it to one key is a filter ( It is still not the account's traffic: requests made by other users of the same account, or
by their API keys, are never returned. The Only Environment is not a filter: results are always scoped to the environment of the
credential you authenticate with — a Cursor pagination: navigate with the opaque Endpoint: GET /v1/accounts/{account_id}/request-logs |
| beel_list_accountsA | Returns the accounts you provisioned, each with its lifecycle Endpoint: GET /v1/accounts |
| beel_list_webhook_deliveriesA | Returns the delivery attempts of this subscription, newest first. Each
entry records one attempt with the response it got, so a retried event
appears once per attempt. Narrow it with Endpoint: GET /v1/accounts/{account_id}/webhooks/{webhook_id}/deliveries |
| beel_list_webhook_subscriptionsA | Returns the webhook subscriptions of the account in the path, active and inactive alike. Every member of the account sees the same list: who registered a subscription is authorship, not visibility. The signing secrets are never included. Endpoint: GET /v1/accounts/{account_id}/webhooks |
| beel_list_companiesA | Returns a page of the companies (NIFs) belonging to the account in the path, ordered with
the primary company first. The invoice series of each company are not part of this response: read them from
Endpoint: GET /v1/accounts/{account_id}/companies ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_list_customersA | Returns a paginated list of the customers of this company (NIF), with optional filters. Only the customers of the company in the path are returned. Endpoint: GET /v1/companies/{company_id}/customers |
| beel_list_invoicesA | Returns a paginated list of the invoices of this company (NIF), filterable by status, type, series, customer, date range and free text. Only the documents of the company in the path are returned. Endpoint: GET /v1/companies/{company_id}/invoices ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_list_payment_connectionsA | Returns the payment provider connections of a NIF (company) your account
owns or manages, with the provider-side account each one points at and its
Test and Live connections are independent, so only the ones living in the mode of
the key you ask with are returned; Endpoint: GET /v1/companies/{company_id}/payment-connections |
| beel_list_payment_eventsA | Lists the payment events received through the payment provider connection of a NIF (company) that your account owns or manages, most recent first. Use it to audit the charges that produced an invoice and to find the ones that did not. Events belong to the connection, not to the NIF directly. The If the NIF has no connection for the provider, returns Endpoint: GET /v1/companies/{company_id}/payment-connections/{provider}/events |
| beel_list_productsA | Returns a paginated list of the products/services of this company (NIF), with optional filters. Searching is Endpoint: GET /v1/companies/{company_id}/products |
| beel_list_recurring_invoicesA | Lists the recurring invoice templates of this company (NIF), with filters and pagination. Only the templates of the company in the path are returned. Endpoint: GET /v1/companies/{company_id}/recurring-invoices ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_list_seriesA | Returns the invoice series of a company (NIF), optionally filtered by Pagination is opt-in here: send Endpoint: GET /v1/companies/{company_id}/series ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_list_statsA | Returns, for each company (NIF) of the account, how many fiscal documents it has issued and when it last issued one. Drafts, scheduled invoices and proformas are not counted; a rectifying invoice counts as a document of its own, and a voided invoice counts only when a live rectifying invoice compensates it. The count is therefore not monotonic — voiding an uncompensated invoice lowers it and
moves Endpoint: GET /v1/accounts/{account_id}/companies/stats |
| beel_list_invoice_customization_optionsA | Returns the PDF templates a NIF can be rendered with. For each one, the The accepted values are already in the Endpoint: GET /v1/invoice-customization-options |
| beel_list_tax_typesA | Returns the tax regimes and percentages that Spanish law allows on an invoice: VAT (mainland), IGIC (Canary Islands), IPSI (Ceuta and Melilla), the withholding (IRPF) percentages, the equivalence surcharge that corresponds to each VAT rate, and the exemption reasons with the classification each one implies. The catalogue is the same for every credential and does not depend on any account or on any NIF, so the operation takes no identifier and works before the first NIF exists. Use it to validate a rate before sending it, or to build your own picker instead of hard-coding the percentages. VAT lists 4, 5, 10 and 21, and deliberately not 0. Under VAT (and IPSI) a 0 % is not a
rate but the exemption/non-subject sentinel, and on its own it says nothing: a 0 % line is
only valid together with an Endpoint: GET /v1/tax-types |
| beel_patch_memberA | Changes a member's Endpoint: PATCH /v1/accounts/{account_id}/members/{member_id} |
| beel_patch_webhook_subscriptionA | Updates the fields present in the body — The signing secret is not touched here; rotate it with
Endpoint: PATCH /v1/accounts/{account_id}/webhooks/{webhook_id} |
| beel_patch_by_idA | Updates the editable fields of a company (NIF); the set is the one
Once the company is activated in Live, a test credential may only write the fields that
affect how the invoice looks: The Endpoint: PATCH /v1/companies/{company_id} ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_patch_customerA | Updates only the fields present in the body, leaving every other field of the customer as it
is. A field sent as This is the canonical way to edit a customer. There is no Endpoint: PATCH /v1/companies/{company_id}/customers/{customer_id} |
| beel_patch_invoiceA | Updates only the fields present in the body, leaving every other field of the invoice as it is. Only a draft invoice can be modified: an issued one is amended with a corrective invoice or voided. Changing Endpoint: PATCH /v1/companies/{company_id}/invoices/{invoice_id} ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_patch_productA | Updates only the fields present in the body, leaving every other field of the product as it
is — in particular A field sent as Endpoint: PATCH /v1/companies/{company_id}/products/{product_id} |
| beel_patch_recurring_invoiceA | Updates only the fields present in the body, leaving every other field of the recurring
invoice as it is — in particular the recipient, which survives a change of Endpoint: PATCH /v1/companies/{company_id}/recurring-invoices/{recurring_invoice_id} ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_patch_seriesA | Updates only the fields present in the body, leaving every other field of the series as
it is. A field sent as
Endpoint: PATCH /v1/companies/{company_id}/series/{series_id} ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_provision_accountA | Provisions a new account on BeeL and, when it is born with a holder, returns a single-use If you previously ended your management of this account ( Requires the Endpoint: POST /v1/accounts |
| beel_put_member_grantA | Grants a Endpoint: PUT /v1/accounts/{account_id}/members/{member_id}/grants/{company_id} |
| beel_put_ownerA | Makes the member in the body the account's Unlike the rest of this API, this operation is available only from a signed-in dashboard session: no API key, live or test, can perform it, whatever scopes it holds. To hand an account over to its holder from an integration, issue a claim token with Endpoint: PUT /v1/accounts/{account_id}/owner |
| beel_retry_webhook_deliveryA | Re-sends the original payload of a delivery immediately and records the outcome as a new entry in the delivery history; the original entry is kept as it was. The payload is the one captured when the event happened, not a fresh snapshot, so changes made to the entity since then are not reflected. Endpoint: POST /v1/accounts/{account_id}/webhooks/{webhook_id}/deliveries/{delivery_id}/retry |
| beel_retry_payment_eventA | Reprocesses a payment event whose automatic invoicing did not complete, applying the configuration of the NIF as it stands now. Use it after fixing what caused the failure, for example a missing invoice series. Only events whose Endpoint: POST /v1/companies/{company_id}/payment-connections/{provider}/events/{event_id}/retry |
| beel_rotate_webhook_secretA | Generates a new HMAC secret for a webhook subscription. The old secret is immediately invalidated — update your signature verification logic before rotating to avoid missing events during the transition. The new secret is only returned once in this response. Endpoint: POST /v1/accounts/{account_id}/webhooks/{webhook_id}/secret |
| beel_send_invoiceA | Sends the invoice by email, attaching its PDF by default. When no recipient is given, the addresses configured on the customer are used. Endpoint: POST /v1/companies/{company_id}/invoices/{invoice_id}/send |
| beel_set_default_seriesA | Marks an invoice series as the default of its document type for this company (NIF), and
unmarks the previous one. Only one series can be the default per company and document
type, and the series must be active — an inactive one is rejected with Endpoint: PUT /v1/companies/{company_id}/series/{series_id}/default ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_set_invoice_scheduleA | Replaces the scheduling of a draft invoice, whether it had one or not, moving it to
Requires the Endpoint: PUT /v1/companies/{company_id}/invoices/{invoice_id}/schedule ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_set_invoice_statusA | Sets the commercial status of an invoice: Issuing and voiding are not statuses set here: they are fiscal acts with their own operations, and issuing is never undone. Endpoint: PUT /v1/companies/{company_id}/invoices/{invoice_id}/status ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_set_recurring_invoice_statusA | Sets the lifecycle status of a recurring invoice template, which is how generation is paused and resumed:
Endpoint: PUT /v1/companies/{company_id}/recurring-invoices/{recurring_invoice_id}/status ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_skip_recurring_invoiceA | Skips the next scheduled invoice generation and advances the generation date to the following period. Nothing is issued. Endpoint: POST /v1/companies/{company_id}/recurring-invoices/{recurring_invoice_id}/skip ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_test_webhook_subscriptionA | Sends a synthetic payload to the subscription's URL immediately, outside the normal delivery queue. Use it to verify that your endpoint is reachable and handles deliveries correctly before you rely on real events. The payload carries Repeating the call with the same Endpoint: POST /v1/accounts/{account_id}/webhooks/{webhook_id}/test |
| beel_update_invoice_customizationA | Updates how the invoices of a company (NIF) are rendered and delivered: PDF template,
accent colour, invoice language and email language. Only the properties present in the
request body are modified, and the logo is managed through the The change applies to invoices rendered after it and does not alter already issued documents. Endpoint: PUT /v1/companies/{company_id}/invoice-customization |
| beel_update_tax_configurationA | Replaces the tax configuration of a company (NIF): default tax regime, main percentage and regime key, IRPF and equivalence surcharge. The main tax and its VeriFactu regime key must be coherent. Regime key Endpoint: PUT /v1/companies/{company_id}/tax-configuration |
| beel_update_verifactu_configurationA | Replaces the VeriFactu configuration of a company (NIF). Only Setting Endpoint: PUT /v1/companies/{company_id}/verifactu-configuration ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_update_meA | Updates the preferences of the authenticated person. Today the only mutable
preference is It applies to the interface, to template names and colours in invoice customisation, and to the emails the person receives. It belongs to the person, not to a fiscal profile: the languages of invoices and of emails are separate settings of each company. Endpoint: PATCH /v1/me |
| beel_validate_nifA | Checks a NIF or CIF against the AEAT register through VeriFactu and returns what the
register says about it. What A NIF with bad syntax is an answer, not an error: it comes back Endpoint: POST /v1/nif/validate ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_void_invoiceA | Voids an issued invoice of this company. The document is kept and its number is never reused; when VeriFactu is enabled a cancellation record is submitted to AEAT. Use it when the operation never took place; if it did take place but with errors, issue a corrective invoice instead. Voiding an Endpoint: POST /v1/companies/{company_id}/invoices/{invoice_id}/void ⚠️ Fiscal guardrails — read before calling:
For the exhaustive rules and worked examples, call beel_docs_search. |
| beel_docs_searchA | Search the BeeL API documentation (VeriFactu, invoice types, taxes, regime keys, corrective invoices, international customers, worked examples). Returns the most relevant sections. Use this before building non-trivial invoices or when unsure about a fiscal rule. |
| beel_docs_getA | Fetch a full documentation page by title (all its sections), e.g. "Invoice types" or "Regime keys". Use after beel_docs_list or beel_docs_search to read a page in full. |
| beel_docs_listA | List the available BeeL documentation pages (titles and URLs). |
| beel_get_setup_statusA | Read-only setup status across your account: for each NIF (company) it reports whether it can issue Live, exactly what is missing (issuing-readiness blockers, default series, VeriFactu, payment connection) and the single recommended next action. Use this to drive onboarding instead of guessing. Aggregates several endpoints; degrades gracefully on partial failures. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| issue-invoice | Guided flow to issue a compliant invoice: pick F1 vs F2, validate the NIF, set regime keys, and check the VeriFactu gates before issuing. |
| fix-invoice | Decide how to fix an already-issued invoice: void (anulación) vs corrective (rectificativa R1–R5), and apply it correctly. |
| onboard-nif | Guided end-to-end setup to get a NIF (company) ready to issue: identity → account → add the NIF → issuing-readiness → default series → VeriFactu gate → payments → first TEST invoice → go Live. Leans on the readiness/status tools instead of guessing. |
| invite-member | Guided flow to invite a collaborator (gestoría) or teammate to the account and grant the right role (OWNER/ADMIN/MEMBER), account-wide or per-NIF. |
| setup-representation | Guided flow to set up the AEAT fiscal representation (apoderamiento) a NIF needs to issue Live with VeriFactu: generate the unsigned PDF, download it, sign it, upload the signed copy, and confirm it is valid. Resolves the NIF_REPRESENTATION_REQUIRED blocker. |
| connect-payments | Guided flow to connect a payment provider (Stripe): understand per-NIF-with-focus vs account-wide, list existing connections, initiate, and verify it is active. |
| upgrade-integration | Update an existing BeeL. API integration to current best practices: idempotency, API-key security, error handling, webhook signature verification, invoice lifecycle rules, and migrating off deprecated endpoints to the company-scoped API. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| BeeL fiscal guardrails (index) | Index of the Spanish-invoicing invariants that govern the BeeL API: invoice lifecycle, void vs rectify, invoice types F1/F2/R1–R5, invoice lines, regime keys, series numbering, NIF validation, VeriFactu gates and multi-NIF accounts. |
| BeeL error codes and what to do about each | The BeeL error codes this server can add a tool-call remedy or retry advice to, each linked to its canonical documentation page. Consult it when a call fails. |
| Void vs amend (rectificativa) | Choosing wrong here misreports to AEAT. The 30-second decision. |
| Invoice lines — pricing, discounts and SUPLIDO | How a line states its price, and which field combinations are rejected. |
| Invoice lifecycle & state machine | When an invoice can still be changed, and what to do once it cannot. |
| Invoice types F1 / F2 / R1-R5 | How BeeL derives the AEAT invoice type, and the rules each type imposes. |
| Multi-NIF accounts and company scope | Which company an operation acts on, and how that is selected. |
| NIF / DNI validation against the AEAT census | Why a name that does not match the census makes an invoice unsubmittable. |
| Tax regime keys and cross-field validations | What regime_key means, where it lives, and which combinations are rejected. |
| Series and invoice numbering | How invoice numbers are formed, and why numbering can never be rewritten. |
| VeriFactu submission — the three gates | Why an issued invoice may never reach AEAT, and how to tell before issuing. |
| Invoice viewer (PDF) | Interactive panel that renders the invoice PDF. Opened by the host when beel_get_company_invoice_pdf is called. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/beel-es/beel-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server