BORME API
REMOTE · MCP.BORMEAPI.COM · 2 COMPONENTS
Spain's company registry gazette (BORME): more than 9.6 million events since 2009. API key or OAuth.
Available components
Last scanned (8 hours ago)
Scores higher than 73% of remote servers
Reachable. Last reached 6 Nov 2026.
Category CRM and Sales
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Nothing on it is marked destructive, but we can't show that an anonymous caller can only read: full credit needs the server to list at least one tool and every tool to be verifiably read-only. We use a best-effort check of tool names and descriptions to tell read-only tools from tools that change things, so some genuinely read-only tools may not get full credit. Names that start with a read verb (get, list, read, search and similar) and accurate readOnlyHint annotations help. Meet that to earn full credit, or require authorisation. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability78
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4972 tokens (~310/item across 16 items; 13 tools + 3 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 13 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 14 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Checks we ran (13)
- TLS certificate
- Authorization
- HTTPS
- HSTS header
- DNSSEC
- Transport
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Does not apply to this hosted endpoint (2)
- Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
- Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 6 Nov 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 5 Nov 26 0
- Schema quality: 280 → 310 ▼ functional
- New prompt “visit_briefing” functional
- New tool “company_signals” functional
- New tool “company_snapshot” functional
- New tool “act_stats” functional
- 4 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Nov 26 0
- Tool “company_by_nif” rewrote its description, which is the text the model reads security
- Tool “company_brands” rewrote its description, which is the text the model reads security
- “search_events” reworded the description of “act_types” cosmetic
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Oct 26 0
- Tool “registry_stats” rewrote its description, which is the text the model reads security
- Tool “search_events” rewrote its description, which is the text the model reads security
- Tool “company_history” rewrote its description, which is the text the model reads security
- 30 Oct 26 +10
- Authorization: unverified → partial ▲ security
- Tool “company_history” rewrote its description, which is the text the model reads security
- Tool “daily_digest” rewrote its description, which is the text the model reads security
- Tool “list_act_types” rewrote its description, which is the text the model reads security
- Tool “recent_signals” rewrote its description, which is the text the model reads security
- Tool “search_companies” rewrote its description, which is the text the model reads security
- Tool “search_events” rewrote its description, which is the text the model reads security
- Tool “registry_stats” rewrote its description, which is the text the model reads security
- Tool “brand_owner” rewrote its description, which is the text the model reads security
- Tool “company_brands” rewrote its description, which is the text the model reads security
- Tool “company_by_nif” rewrote its description, which is the text the model reads security
- Schema quality: 2605 → 3579 ▼ functional
- Stability: unverified → 0.03 ▲ functional
- First check of Schema quality: 100 functional
- New prompt “board_changes” functional
- New prompt “check_nif” functional
- New prompt “company_due_diligence” functional
- New prompt “new_companies_digest” functional
- New resource “act-types” functional
- New resource “coverage” functional
- New resource “provinces” functional
- “company_by_nif” reworded the description of “nif” cosmetic
- “company_history” reworded the description of “company” cosmetic
- “company_history” reworded the description of “limit” cosmetic
- “company_history” reworded the description of “offset” cosmetic
- “company_history” reworded the description of “order” cosmetic
- “daily_digest” reworded the description of “date” cosmetic
- “recent_signals” reworded the description of “signal_type” cosmetic
- “search_companies” reworded the description of “limit” cosmetic
- “search_companies” reworded the description of “name” cosmetic
- “search_companies” reworded the description of “offset” cosmetic
- “search_companies” reworded the description of “province” cosmetic
- “search_companies” reworded the description of “status” cosmetic
- “search_events” reworded the description of “company_name_contains” cosmetic
- “search_events” reworded the description of “date_from” cosmetic
- “search_events” reworded the description of “date_to” cosmetic
- “search_events” reworded the description of “limit” cosmetic
- “search_events” reworded the description of “provinces” cosmetic
- “search_events” reworded the description of “act_types” cosmetic
- “brand_owner” reworded the description of “brand” cosmetic
- “brand_owner” reworded the description of “limit” cosmetic
- “company_brands” reworded the description of “company” cosmetic
- “company_brands” reworded the description of “limit” cosmetic
- Tool “company_by_nif” changed its title: Find a company by NIF cosmetic
- Tool “company_history” changed its title: Company registry timeline cosmetic
- Tool “daily_digest” changed its title: Daily BORME digest cosmetic
- Tool “list_act_types” changed its title: List act types cosmetic
- Tool “recent_signals” changed its title: Recent risk signals cosmetic
- Tool “registry_stats” changed its title: Data coverage and freshness cosmetic
- Tool “search_companies” changed its title: Search companies by name cosmetic
- Tool “search_events” changed its title: Search registry events cosmetic
- Tool “brand_owner” changed its title: Find a brand's company cosmetic
- Tool “company_brands” changed its title: A company's brands cosmetic
- 29 Oct 26 65
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 6 Nov 2026 · Probed https://mcp.bormeapi.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=bormeapi.com | CN=WE1,O=Google Trust Services,C=US | 1 Nov 2026 | 30 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | 335a6859cb2777d91356b239fe7f84f9 |
| SANs: bormeapi.com, *.bormeapi.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.bormeapi.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | Trust anchor | 20326, 38696 | 8, 8 | Verified |
| com. | DS published | 19718 | 13 | Verified |
| bormeapi.com. | No DS | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| content-security-policy | frame-ancestors 'none' |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.bormeapi.com/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.bormeapi.com/mcp | HTTPS enforced | 308 | https://mcp.bormeapi.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
act_stats Act counts by type, period and province ~522
Count BORME acts by act type, period (month, quarter or year) and province: how many companies and entries had mergers, spin-offs, capital increases or any other act type, newest period first. Use it for trends ("mergers per quarter in Spain since 2020"). To read the acts themselves use search_events. Returns JSON {grain, count, truncated, rows: [{period, act_type, province, companies, events}], data_through, built_from, built_to, note, plan_window}, plus hidden_by_plan when the plan left buckets out, and not_built (no rows, never zeros) when the range reaches years outside built_from..built_to. period is the bucket's first day by BORME publication date. companies counts distinct companies in that bucket: never add rows up. Province "*" is all of Spain; a community gives one row per province, not a total. Read-only; one request per call. Needs the pro plan or higher: send your key in the X-API-Key header (https://bormeapi.com/account).
| Name | Type | Req | Description |
|---|---|---|---|
| act_types | array | – | Optional list of act type enums to count, e.g. ["MERGER_BY_ABSORPTION", "TOTAL_SPIN_OFF"]; omit for every act type. Full list: list_act_types. |
| by_province | boolean | – | Without provinces: true gives one row per province instead of the all-provinces rows, e.g. true (default false). |
| date_from | string | – | Optional YYYY-MM-DD, e.g. 2024-01-01; the period holding this day is the first one. Data starts on 2009-01-02. |
| date_to | string | – | Optional YYYY-MM-DD, e.g. 2025-12-31; periods starting on or before this day. |
| grain | string | – | The length of each period, one of "month" (default), "quarter", "year", e.g. "quarter". |
| limit | integer | – | Maximum rows, integer 1-5000, e.g. 200 (default 1000); truncated is true when more matched. |
| provinces | array | – | Optional list of BORME province names, accent- and case-insensitive, e.g. ["MADRID", "BARCELONA"]; an autonomous community gives one row per province, e.g. ["Cataluña"]. Omit for the all-provinces ro… |
No output schema declared.
No examples provided.
brand_owner Find a brand's company ~298
Find the Spanish company a trademark or trading name is linked to, in the Spanish patent office's (OEPM) trademark and commercial-name records we hold (the archive starts in 1987). Use it when the user names a brand; for a company's own name use search_companies, for a known company's brands use company_brands. Returns JSON {found, brand, matches: [{brand, kind, company_slug, company_name, company_status, file}], truncated, source, note}. kind commercial_name identifies a business; trademark distinguishes goods or services (NESCAFÉ is not another name for Nestlé): say which kind a hit is. Links come from holder-name matching (the office publishes no tax IDs); ambiguous holders stay unlinked: present a hit as a name match, not confirmed ownership. found false is not proof the brand is unused. On a hit, use company_history with the slug. Read-only; one request per call. Needs the basic plan or higher: send your API key in the X-API-Key header (https://bormeapi.com/account).
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | yes | Brand or trading name, or part of it, at least 3 letters or digits after punctuation is removed, case-insensitive, e.g. "ZARA". |
| limit | integer | – | Maximum matches, integer 1-200, e.g. 10 (default 20). |
No output schema declared.
No examples provided.
company_brands A company's brands ~292
List the trademarks and trading names that the Spanish patent office (OEPM) records under a holder with this company's name. Use it for a known company (a slug from search_companies or company_history); to go from a brand to its company use brand_owner. Returns JSON {company_slug, commercial_names, trademarks (each {name, file, status, since}), counts, truncated, limit_per_kind, source, note}. The office publishes no tax IDs, so every link is a name match, not confirmed ownership. An empty result means none is linked in our data, not that the company holds none; {error, suggested_companies} means no company was found with that slug, so nothing was looked up. limit applies to each kind separately, newest first; counts is what this answer lists, not the company's total, and truncated true for a kind means more are linked: raise limit. Read-only; one request per call. Needs the basic plan or higher: send your API key in the X-API-Key header (https://bormeapi.com/account).
| Name | Type | Req | Description |
|---|---|---|---|
| company | string | yes | Company slug, as returned by search_companies or company_history, e.g. vaz-metales-sl. |
| limit | integer | – | Maximum results per kind (trademarks, trading names), integer 1-200, e.g. 10 (default 50). |
No output schema declared.
No examples provided.
company_by_nif Find a company by NIF ~314
Look up a Spanish company by its NIF/CIF tax ID. Use it when the user gives a tax ID (with a name use search_companies); on a hit, call company_history with company_slug. Returns JSON {found, company_slug, current_name, status, nif_source, nif_caveat, ...}; use current_name. BORME has no dedicated tax-ID field: more than 580,000 NIF mappings from public sources and the text of BORME notices cover a minority of companies, so a miss (reason nif_unmapped) means "not matched yet", not "does not exist". reason nif_revoked: AEAT records a revocation; relay tell_the_user. On a company match, relay nif_status.note if present. invalid_input true: not a NIF/CIF. reason nif_check_character_failed: relay tell_the_user and did_you_mean. reason not_registry_entity: explain entity_type. ambiguous true: ask which candidate. nif_caveat present: say the link is not settled. Read-only. Needs the basic plan or higher: send your API key in the X-API-Key header (https://bormeapi.com/account).
| Name | Type | Req | Description |
|---|---|---|---|
| nif | string | yes | Spanish NIF/CIF, normally 9 characters, e.g. B12345674. Spaces, hyphens, dots and the ES VAT prefix (ESB12345674) are accepted; other country prefixes are not. |
No output schema declared.
No examples provided.
company_history Company registry timeline ~399
Get one company's BORME timeline: its published registry events within your plan's window. Use it once the company is known (a slug from search_companies or company_by_nif); across many companies use search_events. A name is searched too: several matches return {ambiguous: true, candidates}, none returns {error, suggested_companies}. Returns JSON {company_slug, total_events, first_seen, last_seen, truncated, next_offset, count, events} (as in search_events), with former_slugs for a merged company (an old slug returns the merged timeline) and plan_window on a limited plan. total_events, first_seen and last_seen cover the whole timeline in your window, not this page. To page, keep limit and order and pass next_offset as offset (at most 10000) until it is null. Read-only; one request per call. Without an API key (X-API-Key header) only the last 7 days; basic covers 365 days, pro and risk the full history back to 2009. If all its events are outside your window, the refusal counts them.
| Name | Type | Req | Description |
|---|---|---|---|
| company | string | yes | Company slug, e.g. vaz-metales-sl (from search_companies), or a name of at least 3 letters or digits, e.g. "Mercadona", searched case-insensitively. |
| limit | integer | – | Events per page, integer 1-200, e.g. 20 (default 100). |
| offset | integer | – | Events to skip, integer 0-10000 (default 0); pass the previous page's next_offset, e.g. 100. |
| order | string | – | "desc" (default, newest first) or "asc" (oldest first), e.g. "asc" to start from the earliest event in your plan's window. |
No output schema declared.
No examples provided.
company_signals A company's signals ~507
Get one company's derived signals within your plan's window, newest first: the REST API's GET /v1/companies/{slug}/signals. Use it for one company's ownership changes, mass exits, insolvency declarations and the like; across all companies use recent_signals. A name is searched as in company_history: several matches return {ambiguous: true, candidates}, none returns {error, suggested_companies}. Returns JSON {company_slug, total, count, next_offset, signals: [{event_id, signal_type, date, company_slug, company_name, province, details}]}, with former_slugs for a merged company (every slug is read), and plan_window or hidden_by_plan when your plan's window applied: relay their notes. AEAT_DEBTOR: say the company was on the list published on that date, never that the debt is outstanding. count 0 is not proof of good health. Read-only; one request per call. Needs the pro plan or higher; key in the X-API-Key header (https://bormeapi.com/account).
| Name | Type | Req | Description |
|---|---|---|---|
| company | string | yes | Company slug, e.g. vaz-metales-sl (from search_companies), or a name of at least 3 letters or digits, e.g. "Mercadona", searched case-insensitively as in company_history. |
| date_from | string | – | Earliest signal date, inclusive, YYYY-MM-DD, e.g. 2024-11-01. Optional; moved up to the start of your plan's window when earlier (plan_window says so). |
| date_to | string | – | Latest signal date, inclusive, YYYY-MM-DD, e.g. 2026-10-31. Optional. |
| limit | integer | – | Signals per page, integer 1-200, e.g. 20 (default 50). |
| offset | integer | – | Signals to skip, integer 0-10000 (default 0); pass the previous page's next_offset, e.g. 50. |
| signal_types | array | – | Optional list; each one of INSOLVENCY_FILED, ACCORDION, MASS_EXIT, OWNERSHIP_CHANGE, DISTRESS_COMBO, PHOENIX, ADDRESS_CLUSTER, AEAT_DEBTOR, PUBLIC_CONTRACT_AWARD, e.g. ["OWNERSHIP_CHANGE", "MASS_EXIT… |
No output schema declared.
No examples provided.
company_snapshot Company registry card ~294
Get one company's current registry card: the same answer as the REST API's GET /v1/companies/{slug}. Use it for "who runs it, who owns it, what capital": officers (the current roles derived from the published acts), sole_shareholder as printed, capital_eur, address, status, NIF with its source, public_contracts and a size_hint estimate. For the dated acts use company_history. A name is searched as in company_history: several matches return {ambiguous: true, candidates, candidate_names with name, province and status}, none returns {error, suggested_companies}. Returns JSON with company_slug, company_name, current_name, status, officers, sole_shareholder, capital_eur, nif, nif_caveat, sources and the other snapshot fields, plus former_slugs for a merged company. BORME publishes no minority shareholdings, employees or revenue. Read-only; one request per call. Needs the basic plan or higher: send your API key in the X-API-Key header (https://bormeapi.com/account).
| Name | Type | Req | Description |
|---|---|---|---|
| company | string | yes | Company slug, e.g. vaz-metales-sl (from search_companies), or a name of at least 3 letters or digits, e.g. "Mercadona", searched case-insensitively as in company_history. |
No output schema declared.
No examples provided.
daily_digest Daily BORME digest ~296
Summarise one BORME publication day: total events, counts by act type, the top 10 provinces and the day's insolvency-proceedings notices. Use it for "what was published today" or a day's figures; to read the notices use search_events with date_from = date_to = that day. Returns JSON {date, total_events, by_type, top_provinces, insolvencies: [{company, province}]}. insolvencies lists the events with INSOLVENCY_DECLARATION or INSOLVENCY_STATUS (not SUSPENSION_OF_PAYMENTS, BANKRUPTCY_LEGACY or PROVISIONAL_SHEET_CLOSURE_INSOLVENCY). An INSOLVENCY_STATUS notice can record any stage, from a request for a declaration to the conclusion: before saying a company was declared insolvent, read the act's payload with search_events. A day without a gazette (weekends, holidays) returns total_events 0. Read-only; one request per call. Without an API key only days within the last 7 days; send your key in the X-API-Key header (https://bormeapi.com/account) for your plan's window.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | Publication day, YYYY-MM-DD, e.g. 2026-10-27; omit for the latest day in the database. |
No output schema declared.
No examples provided.
list_act_types List act types ~121
List every normalized BORME act type: the enum used by the act_types filter of search_events (act_type), its Spanish label (spanish) and its English label (english). Use it to choose act_types values or to translate act types in an answer; it reads no registry data. Returns a JSON array of {act_type, spanish, english}, sorted by act_type. Read-only, open to everyone, no key needed and not counted against a quota. The same list is the resource borme://act-types.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
recent_signals Recent risk signals ~325
Get a sample of the latest risk signals derived from BORME and public sources: at most 10 rows dated within the last 7 days. Use it for "what risk signals appeared this week"; not a per-company check (use company_history) and not the full feed (the hosted API's /v1/signals). Returns JSON {count, window, sample_cap, signals: [{signal_type, date, company_slug, company_name, province, details}], full_feed}. AEAT_DEBTOR comes from the AEAT's yearly debtors list (art. 95 bis LGT): details carry listed_on, list_year, is_current_list (true for 12 months from listed_on) and debt_eur, the published total at 31 December of the prior year. Say the company was on the list published on that date; never say the debt is still outstanding. count 0 means none in the window, not that a company is risk-free; an unknown signal_type is refused with the valid list. Read-only; one request per call. Needs the risk plan: send your API key in the X-API-Key header (https://bormeapi.com/account).
| Name | Type | Req | Description |
|---|---|---|---|
| signal_type | string | – | Optional, one of INSOLVENCY_FILED, ACCORDION, MASS_EXIT, OWNERSHIP_CHANGE, DISTRESS_COMBO, PHOENIX, ADDRESS_CLUSTER, AEAT_DEBTOR, PUBLIC_CONTRACT_AWARD, e.g. MASS_EXIT; omit for all types. |
No output schema declared.
No examples provided.
registry_stats Data coverage and freshness ~190
Report the coverage and freshness of the BORME data behind this server. Use it to answer "how much data is there?", "how fresh is it?" and "can I trust date filters for period X?" before running searches; it says nothing about any one company. Returns JSON {events_approx, companies_approx, coverage: {from, to}, parse_completeness_last_30d, source}: exact event and company counts from the latest hourly snapshot (planner estimates if no snapshot exists), the first and latest publication day held (YYYY-MM-DD), and the event-weighted parse completeness over the 30 days up to the latest run (e.g. 0.9987). Takes no arguments. Read-only, open to everyone, no key needed and not counted against a quota. The same report is the resource borme://coverage.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
search_companies Search companies by name ~544
Find Spanish companies by name and return ranked company cards. Use it first when the user gives a company name, then company_history with its company_slug; with a tax ID use company_by_nif, with a brand use brand_owner. Matches current names, former names and variants, ignoring accents, case, punctuation and the legal form. Returns JSON {query, count, total, total_is_at_least, truncated, limit, offset, companies: [{company_slug, name, legal_form, province, municipality, status, in_insolvency, last_act_date, match, matched_on}]}. match is exact, prefix, contains or fuzzy (a lead, not an identification; say so). Ranked by match, then active companies, then newest act. Read-only; one request per call; not limited by the free plan's 7 days of history. The free plan shows at most the first 5 ranked cards; hidden_by_plan counts the rest: relay its note. The NIF is on the card from the basic plan up (X-API-Key header). An empty answer is not proof that a business does not exist.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Cards per page, integer 1-50, e.g. 5 (default 10). |
| name | string | yes | The bare company name or part of it, at least 3 letters or digits and at most 200 characters, e.g. "inditex" or "Talleres Jarama": no city, parentheses or notes. Matching allows for case, accents and… |
| offset | integer | – | Cards to skip, integer 0-200 (default 0), e.g. 10. At most 200 cards are ranked; truncated true means a candidate cap was reached or a search step ran out of time, so add another word from the name. |
| province | string | – | Optional province, accent-insensitive, e.g. MADRID or VIZCAYA, or an autonomous community for all of its provinces, e.g. Catalonia; several values separated by commas, e.g. BIZKAIA,GIPUZKOA. Applied… |
| status | string | – | Optional, one of active, dissolved, extinct, sheet_closed, e.g. active; applied like province. |
No output schema declared.
No examples provided.
search_events Search registry events ~661
Search BORME registry events (since 2009) across companies by publication date, province, act type and company name, newest first. Use it for questions about many companies ("insolvency notices in Valencia in September"). For one known company use company_history; to find a company use search_companies; for one day's totals use daily_digest. Returns JSON {count, events: [{event_id, date, borme_id, province, company_name, company_slug, acts: [{act_type, act_type_raw, roles, payload}], registral}]}, plus company_name_match, plan_window and hidden_by_plan when they apply. No next page: when count equals limit, narrow the filters. Read-only; one request per call against your daily quota. Without an API key (X-API-Key header, https://bormeapi.com/account) only the last 7 days are searched (plan_window). For an empty page with hidden_by_plan or company_name_match (matched_companies or suggested_companies), relay its note. Invalid dates, provinces or act types are refused with a reason.
| Name | Type | Req | Description |
|---|---|---|---|
| act_types | array | – | Optional list of act type enums; an event matches if it has any of them, e.g. ["INCORPORATION"] or ["INSOLVENCY_DECLARATION", "INSOLVENCY_STATUS"]. Full list: list_act_types. Barcelona prints some ac… |
| company_name_contains | string | – | Optional part of the company name, case- and accent-insensitive, e.g. "mercadona"; use at least 3 letters or digits for a selective search. % and _ match literally. It filters events; to look a compa… |
| date_from | string | – | Earliest publication date, inclusive, YYYY-MM-DD, e.g. 2026-09-01. Optional; data starts on 2009-01-02. Without a key it is moved up to 7 days ago (plan_window says so). |
| date_to | string | – | Latest publication date, inclusive, YYYY-MM-DD, e.g. 2026-09-30. Optional; defaults to the latest day held. |
| limit | integer | – | Maximum events returned, integer 1-200, e.g. 20 (default 50). |
| provinces | array | – | Optional list of BORME province names, accent- and case-insensitive, e.g. ["MADRID", "CADIZ", "VIZCAYA"]. An autonomous community stands for all of its provinces, e.g. ["Basque Country"] or ["Cataluñ… |
No output schema declared.
No examples provided.
How do I install the BORME API MCP server?
BORME API is a hosted endpoint at https://mcp.bormeapi.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.bormeapi.com
claude mcp add --transport http com-bormeapi-borme-mcp 'https://mcp.bormeapi.com/mcp'
What is the BORME API MCP server?
BORME API is an MCP server listed in the public MCP registry as com.bormeapi/borme-mcp. Spain's company registry gazette (BORME): more than 9.6 million events since 2009. API key or OAuth. This page covers its hosted endpoint (https://mcp.bormeapi.com/mcp).
Is the BORME API MCP server safe to use?
BORME API scores 78 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the BORME API MCP server expose?
BORME API exposes 13 tools: search_events, company_history, company_snapshot, company_signals, company_by_nif, and 8 more. Their descriptions and schemas cost roughly 4,763 tokens of context every time the server is loaded.
Does the BORME API MCP server require authentication?
No. We connected to BORME API without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the BORME API MCP server still maintained?
BORME API is still listed as active in the MCP registry. We last reached this channel on 6 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What did VerifyMCP test on the BORME API MCP server?
VerifyMCP ran 13 checks on BORME API, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.