@ericrisco/rsc 3.7.3 → 3.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/manifest.json +4 -2
  2. package/package.json +1 -1
  3. package/skills/connect-tool/SKILL.md +119 -21
  4. package/skills/connect-tool/THIRD_PARTY.md +43 -0
  5. package/skills/connect-tool/bridge-kit/01-TOOLS-plantilla/test_connection.sh +33 -0
  6. package/skills/connect-tool/bridge-kit/LICENSE +27 -0
  7. package/skills/connect-tool/bridge-kit/README.md +48 -0
  8. package/skills/connect-tool/bridge-kit/UPSTREAM.json +8 -0
  9. package/skills/connect-tool/bridge-kit/access/access_a_sqlite.py +82 -0
  10. package/skills/connect-tool/bridge-kit/dbhub/dbhub.toml.ejemplo +65 -0
  11. package/skills/connect-tool/bridge-kit/red/cloudflared-config.yml.ejemplo +18 -0
  12. package/skills/connect-tool/bridge-kit/red/tailscale-grants.hujson +22 -0
  13. package/skills/connect-tool/bridge-kit/sqlserver/01-login-servidor.sql +25 -0
  14. package/skills/connect-tool/bridge-kit/sqlserver/02-usuario-y-vistas.sql +69 -0
  15. package/skills/connect-tool/bridge-kit/sqlserver/03-prueba-solo-lectura.sql +65 -0
  16. package/skills/connect-tool/bridge-kit/sqlserver/copia-nocturna.ps1 +68 -0
  17. package/skills/connect-tool/evals/cases.yaml +41 -4
  18. package/skills/connect-tool/references/connect-or-migrate.md +96 -0
  19. package/skills/connect-tool/references/database-bridge.md +159 -0
  20. package/skills/connect-tool/references/file-exchange.md +103 -0
  21. package/skills/connect-tool/references/messages.md +120 -0
  22. package/skills/connect-tool/references/program-types.md +97 -0
  23. package/skills/connect-tool/references/spain.md +103 -0
  24. package/skills/connect-tool/references/what-to-find-out.md +57 -0
@@ -0,0 +1,103 @@
1
+ # File exchange: reading exports, generating imports
2
+
3
+ A route of its own, with its method and its proof. Most small-business programs export to Excel or
4
+ CSV and import an official file, even when they have no API. **To read**, the program exports to a
5
+ folder and the agent reads. **To write**, the agent generates the program's official import file and
6
+ a person imports it.
7
+
8
+ Reading this way is often the best first route for an installed program: it needs no database
9
+ access, keeps the vendor's support, and takes an afternoon. Writing this way is the **only** safe
10
+ way to write into an installed accounting or invoicing program.
11
+
12
+ ## Reading: an export to a folder
13
+
14
+ 1. **Choose what comes out.** Few, useful things: sales of the day, pending invoices, stock, open
15
+ jobs. Only the columns needed (GDPR).
16
+ 2. **Find the function in the program.** Almost every program exports its list screens to Excel or
17
+ CSV. Some export by FTP, set up by the distributor. Construction software exports BC3, a plain
18
+ text standard any script can read.
19
+ 3. **Schedule it.** The program's own scheduler if it has one; otherwise the Windows Task Scheduler
20
+ or a script run by the IT person. If it cannot be automated, a weekly manual export is a valid
21
+ start.
22
+ 4. **Choose the folder.** A folder on a server or synced with OneDrive or Google Drive. The program
23
+ only writes there; the agent only reads.
24
+
25
+ Rules for the folder:
26
+
27
+ - The exporter writes to a temporary name and **renames at the end**: a half-written file must
28
+ never be read.
29
+ - File events are not reliable on network shares (SMB/NFS) or Docker volumes on Windows: read on a
30
+ schedule instead of on change.
31
+ - **Validate the structure of every file** against the described format, and warn when it changes:
32
+ a program update breaks a parser silently.
33
+ - The data is as fresh as the last export. Say so to the user.
34
+
35
+ ## Writing: the official import file
36
+
37
+ The agent does not write in the program. It reads the source (invoices, tickets, an Excel), proposes
38
+ the records, and generates the program's **official import file** in `01-TOOLS/<TOOL>/out/`
39
+ (gitignored). A person reviews it, runs the program's own validation, and imports it with the
40
+ program's button. So the program's integrity and support stay intact, the Spanish Veri\*factu record
41
+ chain is never touched, and a person always says "yes" before anything enters the books.
42
+
43
+ Rules:
44
+
45
+ 1. **Sample file first.** Before generating anything, get a file exported from the user's own
46
+ program, or the vendor's official examples, and copy its structure exactly. Fixed-width
47
+ positions change between versions.
48
+ 2. **Existing accounts only.** The file uses accounts from the current chart of accounts. A missing
49
+ one is flagged for review, never invented. (Some programs **create** an unknown account on
50
+ import: a typo becomes a new sub-account.)
51
+ 3. **Totals balance.** Base + tax = total on every invoice; debit = credit on every entry. If it does
52
+ not balance, it does not leave.
53
+ 4. **No duplicates.** A batch log (supplier + number + amount + batch) in
54
+ `01-TOOLS/<TOOL>/out/lotes.csv`, checked before every new file.
55
+ 5. **The person imports.** After the program's validation and a backup.
56
+ 6. **Never issue.** The agent does not create **issued** invoices in an invoicing program. It
57
+ prepares data or drafts; a person issues from the program.
58
+
59
+ ## Describe the format
60
+
61
+ In `01-TOOLS/<TOOL>/README.md`, for every file read or generated:
62
+
63
+ | Property | Example |
64
+ |---|---|
65
+ | Columns, in order, with type | `fecha` date · `cuenta` text(10) · `debe` decimal · `haber` decimal |
66
+ | Encoding | Windows-1252 (common in Spanish desktop programs) or UTF-8, with or without BOM |
67
+ | Separator | `;` (Spanish Excel default), `,`, tab, or fixed width |
68
+ | Decimal mark | `,` or `.`; thousands separator, if any |
69
+ | Date format | `dd/mm/yyyy`, `yyyymmdd`… |
70
+ | Fixed widths | positions and lengths, for fixed-width formats |
71
+ | Line ending | CRLF or LF |
72
+
73
+ ## The proof
74
+
75
+ `test_connection` for this route checks:
76
+
77
+ - **Reading:** the latest export exists, is **recent** (within the expected schedule) and **matches
78
+ the described format** (columns, encoding, separator). A stale or changed file fails the test.
79
+ - **Writing:** a generated file validates: structure, balances, existing accounts, no duplicates.
80
+ - **The first import** is done in the program's **test company** (most accounting programs have
81
+ one, or the user creates one), never in the real books. Only after that test import looks right
82
+ does the route go live.
83
+
84
+ ## Formats of common Spanish accounting programs
85
+
86
+ Checked against vendor documentation on 2026-10-09 (source: see `../THIRD_PARTY.md`). Formats and
87
+ positions change between versions: always generate a sample from the user's own program and
88
+ compare.
89
+
90
+ | Program | Format | What it imports | Paid? | Main risks |
91
+ |---|---|---|---|---|
92
+ | **A3 (a3asesor eco/con)** | **SUENLACE.DAT**: fixed-width ASCII, 512-byte records. Type at position 15: 0 entry without VAT, 1 invoice with VAT, 2 corrective, 9 VAT detail, C new accounts, V/B due dates, A/D analytics | Entries, issued and received invoices with VAT and SII, corrective invoices, accounts, due dates, analytics | No (standard). Excel-to-link importers are separate | An unknown account is **created automatically**. Always run the **Chequeo**. Official examples in the install: `SUENLAC5.TXT`, `SUENLAC5.EJE` |
93
+ | **a3innuva Contabilidad** | **Importia** (Excel with a column wizard and .zip templates) or the **API** with entries and invoices in **Draft** | Issued and received invoices, entries, chart of accounts, payroll link | Yes: Importia and Conectia (API) are separate subscriptions | Re-importing without "undo" duplicates. A wrong VAT operation code misclassifies |
94
+ | **Sage 50 (Spain)** | Free **entry import/export** add-on: three files (sub-accounts, journal, notes) as fixed-width .txt, .csv or .dbf, ContaPlus-compatible | Entries (VAT in the journal), sub-accounts, notes. **Not** invoices as sales documents | No (enable it in Add-ons) | Import in order: accounts → entries → notes. Shorter account codes are zero-padded and can land on the wrong sub-account. No blank template: export a sample entry and copy it |
95
+ | **Sage 200 (Spain)** | **Import manager** with Excel guides (entries, invoices plugin) | Customers and items (official); entries and invoices as entries through guides or plugins | Probably (partner guides) | Empty invoice type after import → incomplete VAT books. With its Veri\*factu module, invoices certified by other software are not imported |
96
+ | **ContaSOL** (and FactuSOL → ContaSOL) | Excel books with fixed names: **APU** (journal), **FRE + LFR** (received), **FAC + LFA** (issued), **PLA + LPL** (templates). Also ContaPlus ASCII and the ASCII Connector | Entries, invoices (VAT books), master data, opening | No (Utilities > Imports) | Different account lengths fail. Fields too long are **dropped silently**; text in a numeric field becomes 0. The Connector writes straight into the DATOS folder: back up first |
97
+ | **ContaPlus** (legacy) | XDiario, XSubCta, XDatAsi (fixed-width .txt or .dbf) | Entries, sub-accounts, comments | No | No official support for years. Still an exchange format Sage 50 and ContaSOL accept, but VAT may not reach the books and form 303 correctly |
98
+ | **Holded** | Excel/CSV templates: Journal, Accounts, Sales, Purchases, Contacts | Entries, chart of accounts, sales and purchase invoices, contacts | No | Widen account digits **before** creating data. Contacts must exist (matched by tax ID). Undo is not documented |
99
+ | **Odoo** | Generic importer (CSV/XLSX) on `account.move` and its lines | Entries, invoices, contacts, statements | No | **Imports are permanent**: use "Test" and small batches, with External IDs to avoid duplicates. Entries stay in **draft** (good for review). With Veri\*factu active, posting a customer invoice sends it to the tax agency |
100
+
101
+ Other programs: ask the distributor which import format they accept, and get a sample.
102
+
103
+ What changes with Spanish B2B e-invoicing, and why import files are unaffected: [Spain](spain.md).
@@ -0,0 +1,120 @@
1
+ # Messages: asking whoever holds the key
2
+
3
+ Used in option 2, when the connection depends on someone else. Write the message in the user's
4
+ language and register, change what is between `<…>`, remove what does not apply, and add no
5
+ requests that are not needed. Every message keeps four things: **read-only**, **a dedicated user**,
6
+ **nothing open to the internet**, and **the cost question**. If `unslop` is installed, pass the
7
+ message through it.
8
+
9
+ The person on the other side does not need to know what an "AI harness" is. Ask for concrete,
10
+ familiar things: a read-only credential, in the name of an integration, with the least access.
11
+
12
+ ## Before writing: five facts
13
+
14
+ 1. The exact name and version of the program ("Sage 200 2025", "ContaSOL 2026").
15
+ 2. Where it is installed: the vendor's cloud, an office server, someone's PC, the distributor.
16
+ 3. Who maintains it: own IT person, distributor, vendor, accounting firm.
17
+ 4. Exactly which data: "issued and received invoices for the last 12 months", not "everything".
18
+ 5. Read only, or also write. Start with read.
19
+
20
+ ## A. Installed program → IT person or distributor
21
+
22
+ > Hi `<name>`. I want to automate `<sales and collections reports / entering invoices>` with an AI
23
+ > tool. It needs to read data from `<program and version>`. In order of preference:
24
+ >
25
+ > 1. Do you or the vendor have an **API or integration module** for this program, or a cloud
26
+ > edition with an API? What does it cost?
27
+ > 2. If not, can the program **export automatically** every night `<invoices, customers, stock>`
28
+ > to CSV or Excel in a folder?
29
+ > 3. If not, can you create a **read-only database user** limited to `<these views>`, reachable
30
+ > only through a VPN?
31
+ >
32
+ > I do not need to write anything in the program. I do not want to open ports to the internet or
33
+ > use the administrator account. Which option do you see, and what would it cost?
34
+
35
+ ## B. The vendor itself (no reply from the distributor, or no distributor)
36
+
37
+ > Subject: Integration enquiry for `<program>` version `<version>`
38
+ >
39
+ > Hello. We are licensed customers (`<licence number or tax ID>`). We want to connect `<program>`
40
+ > to an analysis tool of our own, **only to read data** (`<sales / invoices / customers / jobs>`).
41
+ >
42
+ > 1. Is there a module, API, web service or automatic export? For which version and licence?
43
+ > 2. If not, can we have a **read-only database user** on views without losing support? Please
44
+ > confirm in writing.
45
+ > 3. Is there technical documentation? What does it cost (setup, fee, hours)?
46
+ > 4. Do you have a cloud edition with an API?
47
+ >
48
+ > Thank you. `<name, phone>`
49
+
50
+ Asking also leaves in writing whether support is kept.
51
+
52
+ ## C. Program hosted by the distributor (remote desktop, Citrix)
53
+
54
+ > Hi `<name>`. We use `<program>` on your hosted service. We want an AI tool to read
55
+ > `<invoices, customers, stock>` for internal reports. Since the program runs on your side:
56
+ >
57
+ > 1. Can you schedule an **automatic export** of that data to a folder we can reach (SFTP or a
58
+ > shared drive)? How often?
59
+ > 2. Do you offer an **API or integration module** for the hosted version?
60
+ > 3. Could you give us a **read-only user** on a copy of our data, on your side?
61
+ >
62
+ > We do not need to write anything. What does each option cost?
63
+
64
+ ## D. Accounting firm (the program is theirs)
65
+
66
+ > Hi `<name>`. We are automating our internal reports. Could you leave in a shared folder, every
67
+ > `<week / month>`, `<the balance sheet, the customer and supplier ledgers, filed tax returns>` in
68
+ > Excel? If your program can give the company read-only access to its own data, that works too.
69
+
70
+ When the program belongs to the accounting firm, the owner asks the firm, not their own IT person.
71
+
72
+ ## E. Web tool run by someone else (accounting firm, agency, partner)
73
+
74
+ > Hi `<name>`. Could you create in `<tool>` a **read-only API key or integration user** named
75
+ > "rsc-read"? It is for automatic reports. If the tool cannot limit permissions, tell me before and
76
+ > we discuss it.
77
+
78
+ ## F. Google Workspace → administrator
79
+
80
+ > Hi `<name>`. I need to authorise an app with **read-only permissions**
81
+ > `<gmail.readonly / drive.file / spreadsheets.readonly / calendar.events.readonly>`. In API
82
+ > controls, keep it under "Specific Google data" and, if possible, limit it to `<this folder or
83
+ > sheet>` by sharing it with a service account without domain-wide delegation. Consent screen
84
+ > "Internal".
85
+
86
+ ## G. Microsoft 365 → administrator
87
+
88
+ > Hi `<name>`. I need to register an app in **Entra ID** with read-only delegated permissions
89
+ > (`User.Read`, `Mail.Read`, `Files.Read`…) or, if it runs without a user, `Sites.Selected` with
90
+ > the "read" role on the site `<name>` only. It needs admin consent and "Assignment required" for
91
+ > my user only. No write permissions on the whole tenant.
92
+
93
+ If the company only authorises Copilot, do not force another AI: suggest Copilot Studio or Power
94
+ Automate, or ask for the exception in writing.
95
+
96
+ ## H. WhatsApp Business → provider (BSP or Tech Provider)
97
+
98
+ > Hello. We want to register our number on the WhatsApp Business Platform in **coexistence**, so we
99
+ > keep using the app on the phone. Do you do that? What does it cost per month and per
100
+ > conversation? Do we get API and webhook access, or only your dashboard? We need a system user
101
+ > with access to our WABA only.
102
+
103
+ The WhatsApp Business *app* has no API. Unofficial tools that read WhatsApp Web get the number
104
+ blocked.
105
+
106
+ ## When they say "that cannot be done"
107
+
108
+ Ask:
109
+
110
+ 1. "Can it **export** to Excel or CSV, even by hand?" If yes, there is a starting point.
111
+ 2. "Does the vendor have **partners or integrators** who connect it?"
112
+ 3. "Is there a **cloud edition** of the program?" They usually come with an API.
113
+ 4. "What would it take for it to be **read-only and with nothing open to the internet**?"
114
+
115
+ ## What is not accepted
116
+
117
+ - The administrator's password, or another person's user.
118
+ - Opening the database or remote desktop port to the internet "so it works".
119
+ - A key that can do everything when a limited option exists.
120
+ - Credentials sent by email or WhatsApp. They are pasted directly into `01-TOOLS/<TOOL>/.env`.
@@ -0,0 +1,97 @@
1
+ # Program types: recognise the program, know what it allows, know who to ask
2
+
3
+ Option 2 starts here: the user has a program with no API, no MCP and no usable docs, and does not
4
+ know what kind of program it is. Their answers to the diagnosis questions place it in one of these
5
+ types. **They are a guide, not a closed list.** A program can sit between two types (a desktop
6
+ program with a cloud backup, a hosted program that also exports files). Say which type it looks
7
+ like, how sure you are, and what would confirm it.
8
+
9
+ ## The diagnosis questions, and what each answer tells you
10
+
11
+ | Question (plain words) | If yes | If no |
12
+ |---|---|---|
13
+ | Do you log in with a username and password on a website? | Vendor web app. Docs exist more often than the user thinks: back to research | Installed somewhere |
14
+ | Does it keep working when the internet goes down? | The data is local: on this PC or an office server | Web app, or hosted by the distributor |
15
+ | Do several computers see the same data? | Client-server: a database on an office server or one shared PC | Single-PC desktop program |
16
+ | Do you open it through remote desktop, Citrix, or an icon that connects elsewhere? | **Hosted by the distributor**: the data is not in the office | Installed in the office |
17
+ | What extension do the files in its data folder have? | `.mdf` SQL Server · `.mdb`/`.accdb` Access · `.fdb`/`.gdb` Firebird · `.dbf` dBase · `.btr`/`.dat` Btrieve · `.db` Paradox or SQLite | (unknown: ask whoever installed it) |
18
+ | Who do you call when it breaks? | That person or company **holds the key** | Nobody: the owner decides alone, and support may be over |
19
+
20
+ Help the user answer: the data folder is usually under the program's install folder or a path in
21
+ its settings; *Help > About* gives the exact version; the vendor's invoice names the distributor.
22
+
23
+ ## The types
24
+
25
+ ### Vendor web app (SaaS)
26
+
27
+ - **Recognise it:** a website with a login, works from any computer, monthly subscription.
28
+ - **What it allows:** almost always an API, an official integration or an export. If research
29
+ found nothing, search again with the vendor's other product names, and look for an
30
+ "Integrations", "API" or "Developers" page inside the app's settings.
31
+ - **Who holds the key:** the account administrator. Sometimes that is the accounting firm or an
32
+ agency, not the owner.
33
+ - **Ask:** an API key or integration user, read-only, in the name of an integration, not a person.
34
+
35
+ ### Desktop program with a local database
36
+
37
+ - **Recognise it:** works offline, one PC, data folder on that PC. Common engines: SQL Server
38
+ Express (`.\SQLEXPRESS`), Access, Firebird.
39
+ - **What it allows:** file exchange (exports and official imports), or a read-only copy of the
40
+ database ([database bridge](database-bridge.md)).
41
+ - **Who holds the key:** the owner for the PC; the distributor for whether reading the database
42
+ keeps support.
43
+ - **Ask:** the database engine, whether exports can be scheduled, and the support terms in writing.
44
+
45
+ ### Client-server in the office
46
+
47
+ - **Recognise it:** several PCs see the same data; one machine (a server or "the main PC") must be
48
+ on. The database is on that machine.
49
+ - **What it allows:** the same as a desktop program, with the copy and the reader on the server.
50
+ - **Who holds the key:** the IT person who looks after the server, and the distributor for support.
51
+ - **Ask:** a read-only user on a nightly copy, reached only privately; never a port open to the
52
+ internet.
53
+
54
+ ### Hosted by the distributor (remote desktop, Citrix)
55
+
56
+ - **Recognise it:** the user opens a remote desktop or a Citrix icon; nothing of the program is in
57
+ the office; it may keep working from home.
58
+ - **What it allows:** **no database to copy and no folder the agent reaches.** The only door is the
59
+ provider: an export they schedule to a folder the client can reach (SFTP, a shared drive), an
60
+ integration module, or a read-only user on their side.
61
+ - **Who holds the key:** the distributor or hosting provider, always.
62
+ - **Ask:** whether they can drop a scheduled export somewhere the client can read; whether they
63
+ offer an API or integration module; what it costs. Never try to reach their servers any other way.
64
+
65
+ ### Old file database (dBase, Btrieve, Paradox)
66
+
67
+ - **Recognise it:** an old program, many small data files (`.dbf`, `.btr`, `.dat`), often a
68
+ Windows program from the 1990s or 2000s, sometimes still running under compatibility mode.
69
+ - **What it allows:** reading **a copy** of the files with a library for that format (dBase reads
70
+ easily; Btrieve needs its engine or the vendor's description of the records). The program's own
71
+ export is safer when it exists.
72
+ - **Who holds the key:** often nobody: the vendor may no longer exist. The person who uses it daily
73
+ knows its exports.
74
+ - **Ask:** what exports the program has; whether the vendor still supports it. This type is a
75
+ strong candidate for [connect or migrate](connect-or-migrate.md).
76
+
77
+ ### Linux server or AS/400 (IBM i)
78
+
79
+ - **Recognise it:** green-screen terminal, or a program the IT person describes as "the server".
80
+ Common in larger or older companies, distribution and manufacturing.
81
+ - **What it allows:** a database that is usually queryable (Db2 for i on AS/400; PostgreSQL,
82
+ MySQL or a proprietary engine on Linux) and scheduled exports, both set up by the IT person.
83
+ - **Who holds the key:** the IT person or the company that maintains the system.
84
+ - **Ask:** a read-only user on the views needed, or a scheduled export; how they reach it
85
+ privately.
86
+
87
+ ### Not a program: Excel or a shared folder
88
+
89
+ - **Recognise it:** "our ERP is an Excel".
90
+ - **What it allows:** move the file to OneDrive or Google Drive and connect that; or read a copy
91
+ from a synced folder. No bridge needed.
92
+
93
+ ## After placing it
94
+
95
+ Tell the user, in short sentences: the type it looks like, what can be tried, what they must
96
+ confirm, and who to ask. Then the closed questions for that person (SKILL.md, option 2, step 3),
97
+ and the case left open in `02-DOCS`.
@@ -0,0 +1,103 @@
1
+ # Spain: invoicing rules and the files Spanish programs exchange
2
+
3
+ Load this only when the business is in Spain. Dates and rules below were checked on 2026-10-09
4
+ (sources at the end). **They move: check the tax agency (AEAT) and the BOE before quoting any date
5
+ to the user**, and say which date you checked.
6
+
7
+ ## The line that matters: prepare vs issue
8
+
9
+ - **Preparing** an invoice (gathering what to bill, computing amounts, a draft, a payment reminder)
10
+ can be done by the agent, a spreadsheet or a script.
11
+ - **Issuing** it (numbering, signing, chaining, recording, and in Veri\*factu mode sending to the
12
+ AEAT) is done by **invoicing software that complies with the regulation**, with a person who
13
+ presses the button.
14
+
15
+ | Piece | Who can do it |
16
+ |---|---|
17
+ | Gather and compute what to invoice | Agent, Excel, script |
18
+ | Create the invoice as a **draft** in the program | Agent through the API, with a dedicated user and approval |
19
+ | **Issue** it (number, chain, sign, send to the AEAT) | **The invoicing program**, with a person pressing |
20
+ | Warn about collections and overdue invoices | Agent (read-only, plus drafts of the messages) |
21
+ | Build its own issuing system | Only when assuming full compliance; not recommended for a small business |
22
+
23
+ An agent never "connects to Veri\*factu" by itself. It drafts; the compliant program issues and
24
+ sends the record.
25
+
26
+ ## Veri\*factu (invoicing systems regulation)
27
+
28
+ - **What it requires** (RD 1007/2023): the software that issues invoices guarantees integrity,
29
+ conservation, accessibility, legibility, traceability and inalterability of the records. Each
30
+ invoice carries a fingerprint chained to the previous one: a numbered, stamped invoice book where
31
+ no page can be torn out or rewritten without a trace. In **Veri\*factu** mode the program also
32
+ sends every record to the AEAT almost as it issues it; the other mode keeps its own signature and
33
+ event log.
34
+ - **Responsible declaration**: the software producer signs one per version, visible inside the
35
+ program (Orden HAC/1177/2024). **The AEAT does not certify programs**: there is no "approved by
36
+ Hacienda" seal. Ask for the declaration and the exact version, in writing.
37
+ - **Dates, as checked on 2026-10-09**: before **1 January 2027** for corporate income tax payers and
38
+ **1 July 2027** for everyone else, self-employed included (RDL 15/2025). On 5 October 2026 the
39
+ Treasury **announced** a postponement to October 2028; no published rule formalised it at the date
40
+ checked. Plan with the legal dates and treat the postponement as possible, not certain.
41
+ - **Out of scope**: businesses in the SII, and the foral territories with TicketBAI or Batuz.
42
+ - **Software vendors** may only sell adapted systems with a declaration since 29 July 2025.
43
+ - **Own software**: the regulation applies to any taxpayer using an invoicing system, own or third
44
+ party. An app built with Claude Code that stores, numbers and issues invoices **is** an invoicing
45
+ system and must meet all of the above. The AEAT has FAQs on own software: read them before
46
+ deciding.
47
+ - **Never** let an agent edit invoices in an invoicing program's database: it breaks the chain.
48
+
49
+ ## B2B e-invoicing
50
+
51
+ - **RD 238/2026** and **Orden HAC/1028/2026** (BOE of 5 October 2026): e-invoicing between
52
+ businesses becomes mandatory on **6 October 2027** for those invoicing more than €8M and on
53
+ **6 October 2028** for everyone else.
54
+ - Structured format following EN 16931 (UBL, CII, EDIFACT or Facturae); the AEAT's public solution
55
+ uses UBL. A PDF no longer counts between businesses. A private platform must send a UBL copy to
56
+ the public solution.
57
+ - Each invoice is identified by issuer tax ID + series + number + date.
58
+ - The receiver reports acceptance, rejection and payment; the issuer can report collection or
59
+ non-payment. Reporting statuses becomes a new, mandatory write: a good candidate to automate,
60
+ with human approval.
61
+ - It is the real migration trigger for old programs: the program must issue and receive UBL or
62
+ Facturae. Ask the vendor in writing ([connect or migrate](connect-or-migrate.md)).
63
+
64
+ Effects on connections:
65
+
66
+ 1. **Accounting import files are not invoices** and do not change. They remain the right way for a
67
+ person to validate an entry ([file exchange](file-exchange.md)).
68
+ 2. **Received invoices will arrive as structured XML.** The agent reads tax IDs, bases and taxes
69
+ without OCR and keeps the XML as the supporting document.
70
+ 3. **Issued invoices**: the agent does not generate or sign UBL or Facturae on its own, nor call
71
+ issuing endpoints. It leaves data or drafts for the adapted program.
72
+ 4. **An invoice already issued elsewhere only enters accounting.** It is never re-issued by
73
+ importing it into another program's invoicing module.
74
+
75
+ ## File formats Spanish programs exchange
76
+
77
+ | Format | What it is | Where it appears |
78
+ |---|---|---|
79
+ | **SUENLACE.DAT** | A3's accounting link file: fixed-width ASCII, 512-byte records | a3asesor imports; accounting firms that use A3. Details in [file exchange](file-exchange.md) |
80
+ | **ContaPlus files** (XDiario, XSubCta) | Legacy fixed-width or dBase exchange format | Still accepted by Sage 50 and ContaSOL |
81
+ | **ContaSOL books** (APU, FAC/LFA, FRE/LFR) | Excel books with fixed names | ContaSOL imports; FactuSOL passes invoices to ContaSOL |
82
+ | **Norma 43** | The Spanish banking standard (AEB/CSB 43) for account statements: fixed-width text | Exported by every Spanish bank's online banking; imported by accounting programs for bank reconciliation. A clean read-only source of movements |
83
+ | **Facturae** | Spain's structured XML e-invoice, mandatory with the public administration (FACe) | Invoicing programs; accepted for B2B e-invoicing |
84
+ | **UBL** (EN 16931) | The European structured e-invoice | The AEAT public solution for B2B e-invoicing |
85
+ | **BC3** (FIEBDC-3) | The construction standard for budgets, price databases and measurements: plain text | Presto and construction software; installer software imports it |
86
+ | **SII** | Immediate VAT information supply to the AEAT | Larger companies; A3 and others carry SII fields in their import files |
87
+
88
+ Norma 43, Facturae and BC3 are public standards: a script reads them without the program that wrote
89
+ them. Still copy the structure from a real sample.
90
+
91
+ ## Sources
92
+
93
+ Checked on 2026-10-09; adapted from Executive Lab's guides (see `../THIRD_PARTY.md`).
94
+
95
+ 1. AEAT, Sistemas informáticos de facturación y Veri\*factu: https://sede.agenciatributaria.gob.es/Sede/iva/sistemas-informaticos-facturacion-verifactu.html
96
+ 2. AEAT, note on the extended adaptation period: https://sede.agenciatributaria.gob.es/Sede/iva/sistemas-informaticos-facturacion-verifactu/nota-informativa-ampliacion-plazo-adaptacion-facturacion.html
97
+ 3. BOE, Orden HAC/1028/2026: https://www.boe.es/diario_boe/txt.php?id=BOE-A-2026-20587
98
+ 4. BOE, Real Decreto 1007/2023: https://www.boe.es/buscar/act.php?id=BOE-A-2023-24840
99
+ 5. BOE, Orden HAC/1177/2024: https://www.boe.es/buscar/act.php?id=BOE-A-2024-22138
100
+ 6. BOE-A-2026-7295, cited by the source guide for B2B e-invoicing: https://www.boe.es/diario_boe/txt.php?id=BOE-A-2026-7295
101
+
102
+ Not verified at that date: the AEAT FAQ text on own software, the full text of RD 238/2026, a rule
103
+ formalising the postponement, penalties.
@@ -0,0 +1,57 @@
1
+ # What to find out, where to look, how to write it down
2
+
3
+ Research replaces any catalogue. A list of vendors is out of date within months: prices, plans,
4
+ endpoints and MCP servers change, and it only covers what someone already entered. The fields below
5
+ are what such a catalogue held. Fill them for **this** tool, now, from primary sources, and write
6
+ them into `01-TOOLS/<TOOL>/README.md`. That file is the catalogue entry for this project.
7
+
8
+ ## The fields
9
+
10
+ | Field | The question | Where to look first |
11
+ |---|---|---|
12
+ | **API** | Is there a documented API? REST, GraphQL, SOAP web service? Which plan includes it? | Vendor developer portal; "API", "Developers", "Integrations" in the app's settings |
13
+ | **MCP** | Is there an official MCP server? A maintained community one? Read-only mode? | `registry.modelcontextprotocol.io`; the vendor's docs; the vendor's GitHub |
14
+ | **Other routes** | Cloud edition with an API, vendor or distributor integration module, unified API (e.g. Chift), built-in Zapier/Make/n8n connector | Vendor site, distributor site, the unified API's coverage list |
15
+ | **Exports** | What can it export, in which format, and can it be scheduled or dropped to a folder or FTP? | The user manual; the program's list screens ("Export to Excel") |
16
+ | **Imports** | What official import formats does it accept, for which objects (entries, invoices, customers, items)? | The user manual; vendor support articles |
17
+ | **Database** | Which engine does an installed program use? Is reading it allowed by the support terms? | Install guide; the data folder's file extensions; the distributor |
18
+ | **Scoped permissions** | Can the credential be limited (read scopes, modules, sites, folders)? What **cannot** be limited? | Token or app settings; vendor docs on scopes or roles |
19
+ | **Who to ask, and what** | Who activates it (account admin, distributor, IT person, accounting firm) and the exact request | The vendor's "how to activate" page; the user's answers |
20
+ | **Free trial** | Free tier, trial, sandbox, developer account, test company. Does the trial include the API? | Pricing page; developer portal |
21
+ | **Cost** | Minimum cost with API access; module or connector fees | Pricing page; ask the distributor in writing |
22
+ | **Migration** | Is the product near end-of-life? Does a successor exist? | Vendor roadmap, end-of-support notices |
23
+ | **Spain** | Veri\*factu declaration for the exact version; B2B e-invoicing readiness | The vendor's responsible declaration; see [Spain](spain.md) |
24
+ | **Sources and confidence** | URL and date for every claim; "verified", "secondary source" or "not verified" | — |
25
+
26
+ Leave a field as **unknown** rather than guessing. "Not found after searching X, Y and Z on
27
+ <date>" is a result; an invented endpoint is a week lost.
28
+
29
+ ## Where to look, in order
30
+
31
+ 1. The vendor's own domain: developer docs, help centre, pricing, legal pages.
32
+ 2. Official registries: the MCP registry; app marketplaces of the platform (Google Workspace
33
+ Marketplace, Microsoft AppSource, Shopify App Store…).
34
+ 3. The distributor or partner's site, for modules the vendor does not list.
35
+ 4. Secondary sources (forums, blog posts, partner presentations) only to find leads. Mark anything
36
+ that comes only from them as **not verified**.
37
+
38
+ ## How to write it down
39
+
40
+ In `01-TOOLS/<TOOL>/README.md`:
41
+
42
+ ```markdown
43
+ ## Research — checked 2026-11-01
44
+
45
+ | Field | Finding | Source (date) | Confidence |
46
+ |---|---|---|---|
47
+ | API | REST, invoices and contacts read; needs the Pro plan | https://… (2026-11-01) | verified |
48
+ | MCP | None official; community server unmaintained since 2025 | https://… (2026-11-01) | verified |
49
+ | Exports | Scheduled CSV of invoices to a folder | user manual, ch. 12 (2026-11-01) | verified |
50
+ | Free trial | 30 days, API included | https://… (2026-11-01) | not verified: page says "most features" |
51
+ ```
52
+
53
+ ## The 60-day rule
54
+
55
+ Before relying on an existing `README.md`, look at its dates. **More than 60 days old: check the
56
+ sources again** before quoting a price, a plan or an endpoint, and update the dates. This is what
57
+ keeps the research current without anyone maintaining a list.