Skip to content

Commit 0dfad19

Browse files
refactor(skills): make skills self-contained with inlined endpoints and official external references only, document knowledge/skills separation in README
1 parent a6e7f3f commit 0dfad19

12 files changed

Lines changed: 270 additions & 153 deletions

File tree

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,16 @@ Agent skills for using and integrating the services of the [Openapi](https://ope
99
| [`knowledge/`](knowledge/) | Curated knowledge base: company profile, services catalog, platform guide (auth, billing, sandbox), FAQ, references, per-service endpoint docs and vendored OpenAPI specs |
1010
| [`skills/`](skills/) | The agent skills, one folder per domain, each with a `SKILL.md` |
1111

12+
## Knowledge / skills separation
13+
14+
The two folders have strictly separated roles:
15+
16+
- **`knowledge/` is build-time material.** It is the mass of curated information used to *create and align* the skills (and to refresh them when Openapi changes). It is consulted by maintainers of this repo, not by agents executing a skill.
17+
- **`skills/` are self-contained deliverables.** Each `SKILL.md` is *populated from* the knowledge but never *links to* it: an agent must be able to use a skill without this repository's `knowledge/` folder being available.
18+
- **External references are allowed in skills, but never routed through `knowledge/`.** Skills point directly to official sources — e.g. the canonical specs at `https://console.openapi.com/oas/en/<service>.openapi.json`, the docs portal, the status page — not to local copies of them.
19+
20+
Maintenance flow: update `knowledge/` from the official sources first, then propagate the relevant content into the affected `SKILL.md` files.
21+
1222
## Skills
1323

1424
| Skill | Covers |

skills/openapi-auth/SKILL.md

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,31 @@ curl -s -u "$OPENAPI_EMAIL:$OPENAPI_API_KEY" https://oauth.openapi.com/tokens \
2828
}'
2929
```
3030

31-
- Scope format: `METHOD:host/path-prefix` (e.g. `POST:sms.openapi.com/messages`). Request only the scopes the task needs, with a short `ttl`.
31+
- Scope format: `METHOD:host/path-prefix` (e.g. `POST:sms.openapi.com/IT-messages`). Request only the scopes the task needs, with a short `ttl` (max 1 year).
3232
- Discover valid scopes: `GET https://oauth.openapi.com/scopes` (Basic auth).
33-
- A refresh token can renew an expired token: `PATCH /tokens/{id}` with the refresh token as Bearer.
33+
- Optional `limits` object restricts token usage further.
34+
- A refresh token can renew a token: `PATCH /tokens/{id}` with the refresh token as Bearer.
35+
- Tokens can also be created from the console UI (Authentication → "+New Token") at https://console.openapi.com.
3436

35-
## Useful management endpoints (Basic auth)
37+
## Management endpoints (Basic auth)
3638

37-
- `GET /tokens`, `GET|PATCH|DELETE /tokens/{token}` — token lifecycle
38-
- `GET /wallet`, `GET /wallet/transactions` — credit balance (check before expensive paid calls)
39-
- `GET /subscriptions` — active plans and remaining requests
40-
- `GET /stats`, `GET /stats/apis/{domain}` — usage analytics
41-
- `GET /errors`, `GET /callbacks` — error log and callback monitoring
39+
| Endpoint | Purpose |
40+
|---|---|
41+
| `GET /tokens`, `GET\|PATCH\|DELETE /tokens/{token}` | Token lifecycle |
42+
| `GET /scopes`, `GET /scopes/{id}` | Available scopes |
43+
| `GET /wallet`, `GET /wallet/transactions` | Credit balance — check before expensive paid calls |
44+
| `GET /subscriptions`, `GET /subscriptions/{id}` | Active plans and remaining requests |
45+
| `GET /stats`, `GET /stats/apis`, `GET /stats/apis/{domain}`, `GET /stats/ips` | Usage analytics |
46+
| `GET /errors`, `GET /callbacks` | Error log and callback monitoring |
47+
48+
## Billing model (affects every service)
49+
50+
- Requests are paid from the **wallet** (per request) or from a **subscription** (monthly: 30 days no rollover; annual: 365 days, any pace). Both can coexist; the wallet is the fallback when subscription requests run out.
51+
- Some APIs have free daily/monthly tiers; rate limits, when present, are stated in each API's description.
52+
- **Sandbox**: free test requests, but "sandbox credit" must be enabled in the console first; responses are illustrative.
4253

4354
## Notes
4455

4556
- OAuth v1 (`oauth.openapi.it`) is deprecated — always use `oauth.openapi.com`.
46-
- Sandbox testing requires enabling "sandbox credit" in the console first; see [platform guide](../../knowledge/platform-guide.md).
47-
- Full spec: [knowledge/oas/oauthv2.openapi.json](../../knowledge/oas/oauthv2.openapi.json) · endpoint list: [knowledge/services/oauthv2.md](../../knowledge/services/oauthv2.md)
57+
- Service health: https://openapi-com.statuspage.io
58+
- Full spec: https://console.openapi.com/oas/en/oauthv2.openapi.json

skills/openapi-automotive/SKILL.md

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: openapi-automotive
3-
description: Vehicle data through Openapi Automotive - look up cars, motorcycles and insurance status by license plate (Italian and European). Use for "whose car is this plate", vehicle technical data, insurance validity checks.
3+
description: Vehicle data through Openapi Automotive - look up cars, motorcycles, insurance and MOT status by license plate across Italy, UK, Germany, France, Spain, Portugal. Use for vehicle technical data and insurance validity checks by plate.
44
---
55

66
# Openapi Automotive
@@ -9,16 +9,26 @@ Base URL: `https://automotive.openapi.com` — vehicle information by license pl
99

1010
Authentication: Bearer token — see the `openapi-auth` skill.
1111

12-
## Endpoints (14 — see reference for the full list)
12+
## Endpoints
1313

14-
- Cars: vehicle technical data by plate
15-
- Motorcycles: same for two-wheelers
16-
- Insurance: check insurance coverage status of a plate
14+
| Country | Endpoints |
15+
|---|---|
16+
| Italy | `GET /IT-car/{plate}` · `GET /IT-bike/{plate}` · `GET /IT-insurance/{plate}` |
17+
| United Kingdom | `GET /UK-car/{plate}` · `GET /UK-bike/{plate}` · `GET /UK-mot/{plate}` |
18+
| Germany | `GET /DE-car/{KBANumber}` (KBA number, not plate) |
19+
| France | `GET /FR-car/{plate}` · `GET /FR-bike/{plate}` |
20+
| Spain | `GET /ES-car/{plate}` · `GET /ES-bike/{plate}` |
21+
| Portugal | `GET /PT-car/{plate}` · `GET /PT-insurance/{plate}` |
1722

18-
## Sandbox
23+
Async requests can be checked with `GET /check_id/{id}`.
24+
25+
```bash
26+
curl -s https://automotive.openapi.com/IT-car/AB123CD \
27+
-H "Authorization: Bearer $OPENAPI_TOKEN"
28+
```
1929

20-
A dedicated sandbox simulates requests with test plates — use it to validate integrations before paying for real lookups.
30+
## Sandbox
2131

22-
## References
32+
The sandbox returns predefined dummy data for test plates (or KBA numbers for Germany) — validate integrations there before paying for real lookups.
2333

24-
Full spec: [knowledge/oas/automotive.openapi.json](../../knowledge/oas/automotive.openapi.json) · endpoint list: [knowledge/services/automotive.md](../../knowledge/services/automotive.md)
34+
Full spec: https://console.openapi.com/oas/en/automotive.openapi.json

skills/openapi-company/SKILL.md

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,39 @@
11
---
22
name: openapi-company
3-
description: Look up company/business data through Openapi - Italian companies by VAT/tax code or name, European and worldwide company search, legal forms, company credit scores. Use for questions like "find data about company X", "who owns VAT number Y", "search companies in France/EU/worldwide".
3+
description: Look up company/business data through Openapi - Italian companies by VAT/tax code or name, European and worldwide company search, shareholders, UBO, AML, PEC/SDI codes, company monitoring. Use for questions like "find data about company X", "who owns VAT number Y", "search companies in France/EU/worldwide".
44
---
55

66
# Openapi Company data
77

88
Base URL: `https://company.openapi.com` — company master data from official registers (Chamber of Commerce, CRIF, INPS and more).
99

10-
Authentication: Bearer token with `company.openapi.com` scopes — see the `openapi-auth` skill.
10+
Authentication: `Authorization: Bearer <token>` with `company.openapi.com` scopes — see the `openapi-auth` skill.
1111

12-
## Choosing the right endpoint
12+
## Italian companies (by VAT or tax code)
1313

14-
| Need | Endpoint |
14+
| Endpoint | Returns |
1515
|---|---|
16-
| Quick Italian company lookup (cheap) | `GET /IT-start/{vat_or_taxcode}` |
17-
| Full Italian company report | `GET /IT-full/{vat_or_taxcode}` |
18-
| Advanced Italian data (async) | `GET /IT-advanced/{id}` after starting a request |
19-
| Search Italian companies by name/filters | `GET /IT-search` |
20-
| Italian legal forms list | `GET /IT-legalforms` |
21-
| French companies | `GET /FR-search` |
22-
| Other EU countries (async start/advanced) | `EU-start``EU-advanced` |
23-
| Worldwide (async) | `WW-start``WW-advanced`; quick top-level: `WW-top` |
24-
| Credit score (top-level) | see `risk` service (`openapi-risk` skill) |
25-
26-
The async pattern (start → poll advanced with the returned `id`, or pass a `callback` URL) is described in the [platform guide](../../knowledge/platform-guide.md#async-request-pattern).
16+
| `GET /IT-start/{vatCode_taxCode_or_id}` | Basic data (cheap, start here) |
17+
| `GET /IT-advanced/{vatCode_taxCode_or_id}` | Advanced data |
18+
| `GET /IT-full/{vatCode_or_taxCode}` | Everything (most expensive) |
19+
| `GET /IT-search` | Search by name/filters |
20+
| `GET /IT-shareholders/…` / `GET /IT-ubo/…` | Shareholders / ultimate beneficial owners |
21+
| `GET /IT-aml/…` | Anti-money-laundering data |
22+
| `GET /IT-pec/…` / `GET /IT-sdicode/…` | Certified e-mail / SDI invoicing code |
23+
| `GET /IT-address/…`, `/IT-name/…`, `/IT-closed/…`, `/IT-vatgroup/…`, `/IT-splitpayment/…`, `/IT-pa/…` | Address, name, activity cessation, VAT group, split payment, public administration |
24+
| `GET /IT-legalforms` | Italian legal forms list |
25+
| `GET /IT-check_id/{id}` | Status of an async request |
26+
27+
POST variants of `/IT-full`, `/IT-aml`, `/IT-marketing`, `/IT-stakeholders` run asynchronously: pass a `callback` URL or poll `GET /IT-check_id/{id}`.
28+
29+
## Other countries
30+
31+
- Dedicated start/advanced pairs: `FR` (also `/FR-search`), `DE`, `ES`, `PT`, `GB`, `BE`, `AT`, `CH`, `PL` — e.g. `GET /FR-start/{siret_siren_or_vat}`.
32+
- Worldwide: `GET /WW-start/{country}/{id}`, `GET /WW-advanced/{country}/{id}`, `GET /WW-top/{country}/{id}`.
33+
34+
## Monitoring
35+
36+
`POST /monitor` registers a company for change notifications; `GET /monitor`, `GET/DELETE /monitor/{id}` manage registrations.
2737

2838
## Example
2939

@@ -34,5 +44,6 @@ curl -s https://company.openapi.com/IT-start/12485671007 \
3444

3545
## Notes
3646

37-
- The legacy `imprese.openapi.it` API offers similar Italian lookups; prefer `company.openapi.com`. Sandbox test VAT numbers: https://docs.openapi.it/imprese-sandbox-examples.html
38-
- Full spec: [knowledge/oas/company.openapi.json](../../knowledge/oas/company.openapi.json) · endpoints: [knowledge/services/company.md](../../knowledge/services/company.md) · legacy: [knowledge/services/imprese.md](../../knowledge/services/imprese.md)
47+
- Sandbox test companies: https://docs.openapi.it/company-sandbox-examples.html
48+
- The legacy `imprese.openapi.it` API offers similar Italian lookups; prefer `company.openapi.com`.
49+
- Full spec: https://console.openapi.com/oas/en/company.openapi.json

skills/openapi-documents/SKILL.md

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,37 @@
11
---
22
name: openapi-documents
3-
description: Obtain official Italian documents through Openapi - chamber of commerce reports (visure camerali), financial statements/balance sheets, company files (fascicoli), bylaws, DURC, protest reports, cadastral documents. Use when the user needs an official PDF document about an Italian company or person.
3+
description: Obtain official Italian documents through Openapi - chamber of commerce reports (visure camerali), financial statements/balance sheets, company files (fascicoli), bylaws, DURC, protest reports. Use when the user needs an official PDF document about an Italian company or person.
44
---
55

66
# Openapi official documents
77

8-
Three services deliver official documents; all are **asynchronous** (request → poll → download PDF).
8+
Two main services deliver official documents; both are **asynchronous** (request → poll → download PDF) and **paid per document** — check wallet credit (`openapi-auth` skill) and confirm with the user before bulk requests.
99

10-
| Service | Base URL | Use for |
11-
|---|---|---|
12-
| DocuEngine (preferred) | `https://docuengine.openapi.com` | All documents: Business Register, Revenue Agency, Municipalities, INPS (DURC), protests, balance sheets |
13-
| Visure Camerali | `https://visurecamerali.openapi.it` | Chamber of commerce registrations and financial statements |
14-
| Visengine (legacy) | `https://visengine2.altravia.com` | Older engine for the same document families |
10+
## DocuEngine (preferred) — `https://docuengine.openapi.com`
1511

16-
Authentication: Bearer token — see the `openapi-auth` skill.
12+
Official documents from the Business Register, Revenue Agency, Municipalities and INPS, behind one uniform API:
1713

18-
## DocuEngine workflow
14+
1. `GET /documents` — list available document services (codes, prices).
15+
2. `POST /requests` — create a request with the service code and subject (VAT/tax code); optionally pass a `callback` URL.
16+
3. `GET /requests/{id}` — poll until the request state is fulfilled (`EVASA`).
17+
4. `GET /requests/{id}/documents` — download the resulting documents.
18+
5. `PATCH /requests/{id}` — update a request when the service asks for it (e.g. optical balance-sheet processing).
1919

20-
1. `GET /services` — discover available document types and prices.
21-
2. `POST /documents` with the service code and subject (VAT/tax code) — returns a request `id`. Optionally pass a `callback` URL.
22-
3. `GET /documents/{id}` — poll status until the document is ready.
23-
4. Download the PDF from the returned URL/payload.
20+
Document families: visura camerale (ordinaria/storica, per company type, also in English), fascicolo società (current/historical), bilancio (XBRL, ottico, riclassificato), statuto, certificato di iscrizione, certificato artigiano, DURC online, visura protesti and pregiudizievoli (companies and natural persons), cariche/quote/soci attivi, eventi negativi, atto ottico.
2421

25-
Document families include: visura camerale (ordinaria/storica, by company type), fascicolo (company file, current/historical), bilancio (XBRL, ottico, riclassificato), statuto (bylaws), certificato di iscrizione, DURC online, protesti and pregiudizievoli (companies and persons), cariche/quote/soci (offices, shares, shareholders), eventi negativi.
22+
## Visure Camerali — `https://visurecamerali.openapi.it`
23+
24+
Direct chamber-of-commerce endpoints, one resource per document type, all with the same pattern `POST /<type>``GET /<type>/{id}``GET /<type>/{id}/allegati` (download):
25+
26+
- `ordinaria-impresa-individuale`, `storica-impresa-individuale`
27+
- `ordinaria-societa-capitale`, `storica-societa-capitale`
28+
- `ordinaria-societa-persone`, `storica-societa-persone`
29+
- `bilancio-ottico`, `certificato-iscrizione`, `certificato-iscrizione-vigenza`, …
30+
- Company search first: `GET /impresa?...` or `GET /impresa/{cf_piva_id}` to identify the subject.
31+
32+
Visengine (`https://visengine2.altravia.com`) is the older engine for the same families — prefer DocuEngine for new work.
2633

2734
## Notes
2835

29-
- These calls are **paid per document** — check wallet credit first (`openapi-auth`) and confirm with the user before bulk requests.
30-
- Sandbox responses are illustrative; enable sandbox credit first.
31-
- Specs: [docuengine](../../knowledge/oas/docuengine.openapi.json) · [visurecamerali](../../knowledge/oas/visurecamerali.openapi.json) · [visengine](../../knowledge/oas/visengine.openapi.json) — endpoint lists in [knowledge/services/](../../knowledge/services/).
36+
- Sandbox responses are illustrative; enable sandbox credit in the console first.
37+
- Full specs: https://console.openapi.com/oas/en/docuengine.openapi.json · https://console.openapi.com/oas/en/visurecamerali.openapi.json · https://console.openapi.com/oas/en/visengine.openapi.json

skills/openapi-esignature/SKILL.md

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,38 @@
11
---
22
name: openapi-esignature
3-
description: Digital signatures and time stamps through Openapi - eIDAS-compliant electronic signature workflows (eSignature) and qualified time stamping of documents (Marche Temporali). Use when the user needs a document signed electronically or time-stamped with legal validity.
3+
description: Digital signatures and time stamps through Openapi - eIDAS-compliant electronic signatures (SES with OTP, qualified QES, e-seals, massive automatic signing) and qualified time stamping of documents. Use when the user needs a document signed electronically or time-stamped with legal validity.
44
---
55

66
# Openapi eSignature & time stamping
77

88
Bearer token required (see the `openapi-auth` skill). Signing and stamping are paid, legally binding actions — confirm with the user before submitting documents.
99

10-
| Service | Base URL | Use for |
11-
|---|---|---|
12-
| eSignature | `https://esignature.openapi.com` | eIDAS-compliant signature processes (simple to qualified), signer invitations, signed-document retrieval |
13-
| Time Stamping | `https://ws.marchetemporali.com` | Purchase qualified timestamps and apply them to documents |
10+
## eSignature — `https://esignature.openapi.com`
1411

15-
## eSignature workflow (typical)
12+
eIDAS-compliant signatures with European legal validity.
1613

17-
1. Create a signature process/envelope with the document (PDF) and signer details.
18-
2. Signers receive an invitation and sign according to the configured signature level.
19-
3. Track process status (webhooks/polling) and download the signed document when complete.
14+
### Signature types
2015

21-
Legacy **Digital Signature** (`ws.firmadigitale.com` — Infocert/Aruba kits, digital identities) is **deprecated**; use eSignature for new integrations.
16+
- `POST /EU-SES` — Simple Electronic Signature for one or more signers, secured via OTP
17+
- `POST /EU-QES_otp` — Qualified Electronic Signature with remote OTP certificate
18+
- `POST /EU-QES_automatic` — massive automatic QES (high volume)
19+
- `POST /EU-QES_eseal` — qualified electronic seal (legal-entity seal)
20+
- `POST /verify` — verify an existing signature
2221

23-
## References
22+
### Certificates and results
2423

25-
Specs: [esignature](../../knowledge/oas/esignature.openapi.json) · [marchetemporali](../../knowledge/oas/marchetemporali.openapi.json) · legacy [firmadigitale](../../knowledge/oas/firmadigitale.openapi.json) — endpoint lists in [knowledge/services/](../../knowledge/services/).
24+
- `POST /certificates/namirial-otp` / `POST /certificates/namirial-automatic` — purchase signing certificates
25+
- `GET /certificates`, `GET /certificates/{id}` — list/inspect certificates
26+
- `GET /signatures` — list signature processes
27+
- `GET /signatures/{id}/{actionType}` — download the signed document, details, audit trail, or validated document
28+
- `DELETE /signatures/{id}` — delete signature artifacts
29+
30+
Typical flow: ensure a certificate exists → create the signature request with the PDF and signer details → signers complete via OTP where applicable → download the signed document and audit trail.
31+
32+
## Time Stamping (Marche Temporali) — `https://ws.marchetemporali.com`
33+
34+
Purchase qualified timestamps and apply them to documents (buy batches, stamp a document, verify stamps).
35+
36+
Legacy **Digital Signature** (`ws.firmadigitale.com` — Infocert/Aruba kits) is **deprecated**; use eSignature for new integrations.
37+
38+
Full specs: https://console.openapi.com/oas/en/esignature.openapi.json · https://console.openapi.com/oas/en/marchetemporali.openapi.json

0 commit comments

Comments
 (0)