Skip to main content
Glama
BeeL MCP server

BeeL MCP server

Official
by beel-es

beel_preview_account_import

Previews an account import without writing data: validates CSV rows, reports importable accounts and pending Live activations, and confirms what would be created or billed.

Instructions

Reads the same files as POST /v1/accounts/imports and answers the same shape without writing anything: no account is provisioned, no NIF is switched on, no series and no customer are created, and nothing is billed.

  • Result shape: metadata.is_dry_run is true, every write counter in statistics is 0, and statistics.importable is what a real import would create.

  • Per row: it resolves the row's own data — including the repairs a spreadsheet export needs, which accounts_file describes — whether the tax id is in the AEAT register, whether the external_ref is already an account of yours, and the Live activation verdict that decides whether the import would execute the row at all.

  • statistics.live_activations_pending: read it before importing. Every NIF switched on in Live adds an item to your subscription, and this is the only place to see the total before it is charged.

  • The customers file is checked once for the whole import: whether a customer is new to a given account depends on the account, and that only shows up when the import runs.

BeeL API endpoint: POST /v1/accounts/imports/preview (reference: https://docs.beel.es)

Input Schema

NameRequiredDescriptionDefault
bodyYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.10.0

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description itself is unusually rich about side effects: nothing is provisioned, no NIF is switched on, no series or customer created, nothing billed, `metadata.is_dry_run` is `true` and all write counters are `0`. However, this directly conflicts with the supplied `readOnlyHint: false` annotation, so an agent gets contradictory signals about whether the call mutates state; flagged as an annotation contradiction. `idempotentHint: false` is also left unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core dry-run guarantee, then bulleted by topic (result shape, per row, live activations, customers file), so it scans well. A few clauses are denser than necessary — e.g. "including the repairs a spreadsheet export needs, which `accounts_file` describes" — but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a nested-object schema, no output schema, and real billing consequences, the description covers what is returned (`metadata.is_dry_run`, `statistics`), per-row verdicts, and the customers-file caveat, which is enough to call it correctly. The remaining gap is the mismatch with `readOnlyHint` and unmentioned `idempotentHint`, which leave the safety profile ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage registers as 0% at the top level (a single `body` parameter), so the description must carry weight; it references `accounts_file` and `external_ref` and explains that per-row data is resolved (AEAT register lookup, existing `external_ref`, Live activation verdict) and that the customers file is "checked once for the whole import." It adds nothing about the `options` object (series, access_level, apply_customers_to_own_company), leaving the nested schema to explain those.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource plus the exact relationship to the write path: it "reads the same files as `POST /v1/accounts/imports` and answers the same shape without writing anything," and names the concrete endpoint `POST /v1/accounts/imports/preview`. An agent can immediately tell this apart from the real import sibling (`beel_create_account_import`) and from `beel_preview_customer_import`.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear situational rule — read `statistics.live_activations_pending` before importing, since it is "the only place to see the total before it is charged" — which effectively says this tool is the pre-flight step for an account import. It does not state explicit exclusions (e.g., when previewing is unnecessary or when the customer preview tool is the better choice), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools