Agent-native · LegacyRail

For AI agents and integrators

EBROTECH / LegacyRail exposes a machine-readable layer so AI agents, MCP orchestrators and developers can discover, validate and request connectors over Spanish and European legacy management software. This page documents what is exposed, how to access it and the real state of each connector. Honest: clients_live=0 as of June 2026.

Updated: 24 June 2026

What LegacyRail is (for agents)

LegacyRail is the agent-native infrastructure EBROTECH builds as a byproduct of serving B2B clients in Spain and Europe. It exposes MCP connectors ("pp-X") over the legacy management software that dominates the Spanish and European market — programs with no official REST API, or with regulatory fiscal mandates the agent cannot resolve alone.

Each pp-X connector is a CLI + slim 2-tool MCP server that allows an agent to read and write to the legacy software without a human UI. The canonical namespace is dev.legacyrail/[connector] (reverse-DNS of legacyrail.dev).

Commercial/technical distinction: B2B clients hire EBROTECH (commercial layer). Agents and developers consume LegacyRail (technical layer). They are not two separate companies.

human_approval_required: true on all connectors. The agent discovers and requests; the human approves. Nothing is contracted or charged without explicit human sign-off.

When to choose LegacyRail — and when not to

Choose LegacyRail when:

  • · The legacy software has no official REST API (Gesden, ContaSol, A3, QVet, Presto, DATEV, Cegid…)
  • · The workflow requires compliance with Veri*Factu, TicketBAI, SII, PEPPOL, FEC, SAF-T, GAEB, DATEV-Format or xDT/GDT
  • · The agent serves the Spanish/European B2B market and the client uses one of the 92+ catalog software
  • · You need to route between candidate connectors before committing to one
  • · You need a slim 2-tool MCP server that saves tokens vs adapting the full CLI

Do not use LegacyRail when:

  • · The software has a full official REST API → use the API directly or Zapier/Make/n8n
  • · The use case is consumer (not B2B): compliance and monthly pricing do not apply
  • · Autonomous action without HITL is needed: all connectors require human approval
  • · The ERP is an international standard with mature connectors (SAP B1 API, Odoo REST, Dynamics connector)
  • · Sub-second streaming is needed: bridges operate over batch exports or polling, not real time

Real connector state (June 2026)

Honest: clients_live=0 for all third-party connectors. pp-ghl is EBROTECH's internal CRM (live). The rest are in internal validation (live-gated) or active development (scaffold). Authoritative source: capabilities.json.

Connector Sector State Fiscal mandates
pp-ghl EBROTECH internal CRM
Cross-vertical (EBROTECH internal CRM)
Live
pp-a3-factura A3 Factura (Wolters Kluwer ES)
Accounting firms / invoicing ES
Beta (internally validated) Veri*Factu
pp-contasol ContaSol (DELSOL)
Accounting firms / bookkeeping ES
Beta (internally validated) Veri*Factu
pp-provet Provet Cloud
Veterinary clinics (ES, GB, NO, FI)
Beta (internally validated)
pp-gesden Gesden (Dentsply Sirona)
Dental clinics ES
In development
pp-qvet QVet
Veterinary clinics ES
In development
pp-presto Presto (ACCA Software)
Construction and renovation ES
In development
pp-veri-factu-core Veri*Factu Core (AEAT ES)
Fiscal compliance ES
In development Veri*Factu, RD 1007/2023

Machine-readable endpoints

All public, CORS-open, no auth. Served from Cloudflare Pages CDN (CF SLA availability). Updated on every repo build.

JSON
capabilities.json (LegacyRail manifest)

Agent-native manifest v0.2. Connectors, tools (get_connector_status, find_connector, request_quote), real state, compliance and pricing.

JSON
ai-catalog.json (ARD — Agentic Resource Discovery)

EBROTECH's resource catalog in ARD format. Links to all feeds (verticals, software, pricing, capabilities) with representativeQueries per entry.

JSON
openapi.json (OpenAPI 3.1)

OpenAPI 3.1 description of read endpoints. Allows agents and orchestrators to discover and invoke structured feeds with validated schemas.

JSON
/api/software.json

92+ legacy software with connector_slug, live_status, countries and supported fiscal mandates. The primary source for find_connector.

JSON
/api/catalog.json

EBROTECH identity + general overview: services, verticals, software, pricing. Entry point for agents needing a high-level summary.

JSON
/api/verticals.json

The 5 core verticals (veterinary, dental, accounting, construction, ecommerce) with automations, compatible software and estimated ROI.

JSON
/api/niches.json

The released B2B niches with cross-locale slugs (es/en/it/fr/pt), out of the 74 verticals EBROTECH operates. Allows resolving the correct niche slug in each market.

JSON
/api/pricing.json

T1/T2/T3 tiers with minimum prices. For generating request_quote payloads without inventing figures.

TXT
llms.txt

Structured-first summary of EBROTECH + LegacyRail agent-native section. LLM-readable format. Auto-generated from the data layer.

TXT
llms-full.txt

Full dump of key pages (expanded llms.txt). For complete LLM or RAG ingestion without crawling.

TXT
ai.txt

Content usage permissions for AI systems (reading allowed, training prohibited without agreement).

Typical agent flow

  1. 1

    Discover the connector

    GET /api/software.json or use the find_connector tool from capabilities.json with the software name or client's sector (e.g. sector: 'dental', software_name: 'Gesden'). Returns candidates sorted by live_status.

  2. 2

    Verify real state

    Call get_connector_status with the connector_slug. Returns live_status, clients_live, tested_in_production and gov_mandated_formats. Do not invent maturity — use what the feed returns.

  3. 3

    Verify compliance (if applicable)

    Check gov_mandated_formats in the connector's capabilities.json. If the client requires Veri*Factu and the connector does not support it → do not recommend it. Honest about mandate status.

  4. 4

    Generate quote payload (HITL)

    Use the request_quote tool with connector_slug + contact_email + indicative tier + message. The tool returns the payload and submission URL, but human_approval_required: true — the agent presents to the human before sending. Never send without human sign-off.

  5. 5

    Human approves and EBROTECH confirms

    Once the human approves the payload submission, EBROTECH receives the request and schedules a 15-minute Discovery session. In that session the real connection path (API, export or local agent) is confirmed — no invented state.

MCP server (current state)

mcp.ebrotech.net is not in production as of June 2026. The MCP server scaffold is built (CF Workers + MCP SDK, 5 tools, wrangler.toml ready), but deployment is gated to LegacyRail Phase 2 (Q3 2026, first paying B10 client). The COMPLETE machine-readable catalog is already available at the static endpoints on this page and in capabilities.json. Planting a flag without real traction serves no one — the MCP activates when clients are validating it.

The mcp_endpoint field in capabilities.json shows the planned target: https://mcp.ebrotech.net/catalog/mcp. When live, this field will update and the endpoint will respond.

Frequently asked questions for agents and integrators

How many LegacyRail connectors are in production today?

As of 2026-06-24: pp-ghl (EBROTECH's internal CRM — live) is in production. pp-a3-factura and pp-contasol are live-gated (validated internally, no external paying client yet). pp-gesden, pp-qvet, pp-presto and pp-veri-factu-core are scaffold (active development). clients_live=0 for all third-party connectors. The complete, honest catalog is at /.well-known/capabilities.json.

How does an agent discover which connector to use for a specific software?

Three ways: (1) GET /api/software.json — returns 92+ software items with their connector_slug. (2) GET /.well-known/capabilities.json — structured manifest with the find_connector tool that accepts software_name and sector. (3) GET /openapi.json — OpenAPI 3.1 description of all endpoints. The exact connection path (API, normalised export or local agent) is always confirmed in the Discovery session — the agent must not invent technical state.

What is the dev.legacyrail/* namespace?

It is the canonical namespace (reverse-DNS of legacyrail.dev) that identifies LegacyRail MCP connectors. Each connector is identified as dev.legacyrail/<slug> (e.g. dev.legacyrail/pp-gesden). LegacyRail is the technical layer of EBROTECH: B2B clients hire EBROTECH; agents and developers consume LegacyRail.

Does reading the catalog require credentials?

No. The /api/* and /.well-known/* endpoints are public and CORS-open — no token needed to read the catalog. Operating an individual pp-X connector requires the client's own software credentials (documented in capabilities.json per connector). No monetary action is committed without explicit human approval (human_approval_required: true always).

What fiscal mandates does LegacyRail cover?

Veri*Factu (RD 1007/2023, ES, mandatory 2027), TicketBAI (Basque Country/Navarre), SII AEAT, PEPPOL BIS 3.0 (EU), EN-16931 (European e-invoice standard), FEC (France), SAF-T (Portugal/Norway/Poland), GAEB (Germany, construction), DATEV-Format (Germany, accounting), xDT/GDT (Germany, medical practices), SPED (Brazil). Real per-connector coverage is in the gov_mandated_formats field of capabilities.json.

What does the /api/software.json endpoint return?

GET https://ebrotech.net/api/software.json returns the catalog of 92+ legacy software that EBROTECH connects to. Fields per software: slug, name, vertical/sector, connector_slug (if pp-X exists), live_status (scaffold/live-gated/live), available countries and supported regulatory formats. CORS-open, static on Cloudflare Pages, no auth required.

Is the MCP server deployed at mcp.ebrotech.net?

Not as of 2026-06-24. The MCP server scaffold is built (5 tools, CF Workers + MCP SDK, wrangler.toml ready), but deployment is gated to LegacyRail Phase 2 (Q3 2026, first paying B10 client). In the meantime, the complete agent-readable catalog is available at the static endpoints and in capabilities.json. The mcp_endpoint field of capabilities.json shows the planned target.

When NOT to use LegacyRail?

When the client's software has a full official REST API (Salesforce, HubSpot, Shopify native, QuickBooks Online, Xero Online, etc.) — use the API directly. When the use case is consumer (not B2B). When autonomous action without human approval is needed — LegacyRail always requires HITL for committing charges. When the agent needs a generic connector with no European fiscal mandates — Zapier/Make/n8n are cheaper.

More resources

Does your agent need to integrate Spanish or European legacy software?

Tell us the software, the sector and the fiscal mandate (if applicable). We tell you which connector fits, what state it is in and how long setup takes.

Talk to EBROTECH Cumplimos plazo o te devolvemos el 50%