Skip to content

Commit a6e7f3f

Browse files
feat(skills): add domain skills for Openapi services with auth, company, documents, risk, trust, geo, messaging, esignature, invoicing, automotive and utilities
1 parent adf47f0 commit a6e7f3f

12 files changed

Lines changed: 372 additions & 1 deletion

File tree

README.md

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,30 @@
1-
# openapi-skiils
1+
# openapi-skills
2+
3+
Agent skills for using and integrating the services of the [Openapi](https://openapi.com) API marketplace — the largest certified API marketplace in Europe.
4+
5+
## Repository layout
6+
7+
| Folder | Purpose |
8+
|---|---|
9+
| [`knowledge/`](knowledge/) | Curated knowledge base: company profile, services catalog, platform guide (auth, billing, sandbox), FAQ, references, per-service endpoint docs and vendored OpenAPI specs |
10+
| [`skills/`](skills/) | The agent skills, one folder per domain, each with a `SKILL.md` |
11+
12+
## Skills
13+
14+
| Skill | Covers |
15+
|---|---|
16+
| [openapi-auth](skills/openapi-auth/SKILL.md) | OAuth v2 token lifecycle, scopes, wallet, usage stats (required by all others) |
17+
| [openapi-company](skills/openapi-company/SKILL.md) | Company data: Italy, EU, worldwide |
18+
| [openapi-documents](skills/openapi-documents/SKILL.md) | Official documents: visure camerali, balance sheets, DURC, protests (DocuEngine, Visure Camerali, Visengine) |
19+
| [openapi-risk](skills/openapi-risk/SKILL.md) | Credit scores, CRIF reports, KYC, negative events |
20+
| [openapi-trust](skills/openapi-trust/SKILL.md) | Validation of emails, phones, IPs, URLs, PEC, fiscal codes, plates |
21+
| [openapi-geo](skills/openapi-geo/SKILL.md) | Geocoding, zip codes, Italian cadastre, real estate valuations |
22+
| [openapi-messaging](skills/openapi-messaging/SKILL.md) | SMS v2, PEC, Massive REM, postal mail via Poste Italiane |
23+
| [openapi-esignature](skills/openapi-esignature/SKILL.md) | eIDAS e-signatures and qualified time stamping |
24+
| [openapi-invoicing](skills/openapi-invoicing/SKILL.md) | Electronic invoicing (Invoice, SDI) and bill payments |
25+
| [openapi-automotive](skills/openapi-automotive/SKILL.md) | Vehicle data by license plate |
26+
| [openapi-utilities](skills/openapi-utilities/SKILL.md) | Exchange rates, HTML-to-PDF, .it domains, managed RAG |
27+
28+
## Credentials
29+
30+
Skills expect `OPENAPI_EMAIL` and `OPENAPI_API_KEY` (account credentials for `oauth.openapi.com`) and/or a ready-made `OPENAPI_TOKEN` Bearer token in the environment. See [knowledge/platform-guide.md](knowledge/platform-guide.md).

skills/openapi-auth/SKILL.md

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
name: openapi-auth
3+
description: Authenticate with the Openapi marketplace (oauth.openapi.com). Use when you need to create, inspect, renew or delete Bearer tokens, list available scopes, check wallet credit, subscriptions, or API usage stats. Required by every other openapi-* skill.
4+
---
5+
6+
# Openapi authentication (OAuth v2)
7+
8+
All Openapi services require a Bearer token created through OAuth v2. This skill manages that token lifecycle.
9+
10+
## Credentials
11+
12+
Two layers — never confuse them:
13+
14+
1. **Account credentials** (email + API key) → used only against `https://oauth.openapi.com`, as HTTP Basic auth (`username = email`, `password = API key`).
15+
2. **Bearer token** (created here, with scopes) → used against every service API as `Authorization: Bearer <token>`.
16+
17+
Expect credentials in the environment as `OPENAPI_EMAIL`, `OPENAPI_API_KEY` (and optionally a ready-made `OPENAPI_TOKEN`). Never print or commit them.
18+
19+
## Create a token
20+
21+
```bash
22+
curl -s -u "$OPENAPI_EMAIL:$OPENAPI_API_KEY" https://oauth.openapi.com/tokens \
23+
-H 'Content-Type: application/json' \
24+
-d '{
25+
"scopes": ["GET:company.openapi.com/IT-start"],
26+
"name": "agent token",
27+
"ttl": 86400
28+
}'
29+
```
30+
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`.
32+
- 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.
34+
35+
## Useful management endpoints (Basic auth)
36+
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
42+
43+
## Notes
44+
45+
- 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)

skills/openapi-automotive/SKILL.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
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.
4+
---
5+
6+
# Openapi Automotive
7+
8+
Base URL: `https://automotive.openapi.com` — vehicle information by license plate, sourced from the Ministry of Transport (European basis).
9+
10+
Authentication: Bearer token — see the `openapi-auth` skill.
11+
12+
## Endpoints (14 — see reference for the full list)
13+
14+
- Cars: vehicle technical data by plate
15+
- Motorcycles: same for two-wheelers
16+
- Insurance: check insurance coverage status of a plate
17+
18+
## Sandbox
19+
20+
A dedicated sandbox simulates requests with test plates — use it to validate integrations before paying for real lookups.
21+
22+
## References
23+
24+
Full spec: [knowledge/oas/automotive.openapi.json](../../knowledge/oas/automotive.openapi.json) · endpoint list: [knowledge/services/automotive.md](../../knowledge/services/automotive.md)

skills/openapi-company/SKILL.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
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".
4+
---
5+
6+
# Openapi Company data
7+
8+
Base URL: `https://company.openapi.com` — company master data from official registers (Chamber of Commerce, CRIF, INPS and more).
9+
10+
Authentication: Bearer token with `company.openapi.com` scopes — see the `openapi-auth` skill.
11+
12+
## Choosing the right endpoint
13+
14+
| Need | Endpoint |
15+
|---|---|
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).
27+
28+
## Example
29+
30+
```bash
31+
curl -s https://company.openapi.com/IT-start/12485671007 \
32+
-H "Authorization: Bearer $OPENAPI_TOKEN"
33+
```
34+
35+
## Notes
36+
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)

skills/openapi-documents/SKILL.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
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.
4+
---
5+
6+
# Openapi official documents
7+
8+
Three services deliver official documents; all are **asynchronous** (request → poll → download PDF).
9+
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 |
15+
16+
Authentication: Bearer token — see the `openapi-auth` skill.
17+
18+
## DocuEngine workflow
19+
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.
24+
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.
26+
27+
## Notes
28+
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/).

skills/openapi-esignature/SKILL.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
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.
4+
---
5+
6+
# Openapi eSignature & time stamping
7+
8+
Bearer token required (see the `openapi-auth` skill). Signing and stamping are paid, legally binding actions — confirm with the user before submitting documents.
9+
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 |
14+
15+
## eSignature workflow (typical)
16+
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.
20+
21+
Legacy **Digital Signature** (`ws.firmadigitale.com` — Infocert/Aruba kits, digital identities) is **deprecated**; use eSignature for new integrations.
22+
23+
## References
24+
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/).

skills/openapi-geo/SKILL.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
name: openapi-geo
3+
description: Italian geographic and property data through Openapi - geocoding/reverse geocoding, zip codes (CAP), municipalities/provinces/regions with ISTAT codes, Italian cadastre (catasto) property and owner lookups, real estate valuations and comparables.
4+
---
5+
6+
# Openapi geo & real estate data
7+
8+
Four services; all use a Bearer token (see the `openapi-auth` skill).
9+
10+
| Service | Base URL | Use for |
11+
|---|---|---|
12+
| Geocoding | `https://geocoding.openapi.it` | Address → coordinates (`/geocode`) and coordinates → address (`/reverse`) |
13+
| Zip Codes (CAP) | `https://cap.openapi.it` | Italian municipalities, zip codes, provinces, regions, metropolitan cities, ISTAT codes, suppressed municipalities |
14+
| Catasto | `https://catasto.openapi.it` | Italian cadastre: cadastral data of buildings/land and their registered holders (by property or by subject) |
15+
| Real Estate | `https://realestate.openapi.com` | Property valuations and comparables by type, location, contract type |
16+
17+
## Typical lookups
18+
19+
- Zip → municipalities: `GET /comuni?cap=...` style search; municipality ↔ ISTAT code lookups; full lists of regions/provinces.
20+
- Cadastre queries are official paid lookups, several async — confirm before running many of them; subject searches return personal data (GDPR care).
21+
- Real estate valuation: query `/valuation` with property type, location and contract type.
22+
23+
## Notes
24+
25+
- CAP sandbox has a limited dataset; some parameters return fixed data.
26+
- Specs: [geocoding](../../knowledge/oas/geocoding.openapi.json) · [cap](../../knowledge/oas/cap.openapi.json) · [catasto](../../knowledge/oas/catasto.openapi.json) · [realestate](../../knowledge/oas/realestate.openapi.json) — endpoint lists in [knowledge/services/](../../knowledge/services/).

skills/openapi-invoicing/SKILL.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
name: openapi-invoicing
3+
description: Italian electronic invoicing and payments through Openapi - send/receive electronic invoices via SDI (Sistema di Interscambio), digital receipts, legal storage, and bill payments (MAV, RAV, PagoPA, car tax). Use for fatturazione elettronica and bill payment tasks.
4+
---
5+
6+
# Openapi invoicing & payments
7+
8+
Bearer token required (see the `openapi-auth` skill). Sending invoices to the Revenue Agency and paying bills are **irreversible fiscal/financial actions — always confirm with the user first**.
9+
10+
| Service | Base URL | Use for |
11+
|---|---|---|
12+
| Invoice (preferred) | `https://invoice.openapi.com` | Active/passive electronic invoices, digital receipts, SDI transmission, digital signature, legal storage |
13+
| SDI | `https://sdi.openapi.it` | Lower-level interaction with the Sistema di Interscambio |
14+
| Paying Bills | `https://ws.pagasubito.it` | Pay bollettini, MAV, RAV, PagoPA, car tax (bollo auto) |
15+
16+
## Key facts
17+
18+
- **Receiving supplier invoices** requires registering Openapi's Recipient Code (Codice Destinatario) on the Revenue Agency website — the SDI spec description contains the step-by-step guide.
19+
- Invoices are FatturaPA XML; the Invoice API handles signing, transmission and status monitoring (delivery receipts, rejections) and can forward to legal storage (`api_configuration`).
20+
- Status updates can be pushed to a `callback` URL.
21+
22+
## References
23+
24+
Specs: [invoice](../../knowledge/oas/invoice.openapi.json) · [sdi](../../knowledge/oas/sdi.openapi.json) · [bollettini](../../knowledge/oas/bollettini.openapi.json) — endpoint lists in [knowledge/services/](../../knowledge/services/).

skills/openapi-messaging/SKILL.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
name: openapi-messaging
3+
description: Send communications through Openapi - SMS with custom sender (SMS v2), Italian certified e-mail (PEC/Legalmail), bulk certified mail (Massive REM), and physical mail via Poste Italiane (registered letters, telegrams, priority mail). Use when the user wants to send a message, letter or certified communication.
4+
---
5+
6+
# Openapi messaging & communications
7+
8+
All services use a Bearer token (see the `openapi-auth` skill). **Every send is an outward-facing, paid action: always confirm recipient, content and cost with the user before sending.**
9+
10+
| Service | Base URL | Use for |
11+
|---|---|---|
12+
| SMS v2 | `https://sms.openapi.com` | SMS with custom sender, delivery reports; IT/ES dedicated endpoints + worldwide |
13+
| PEC | `https://pec.openapi.it` | Activate and manage Legalmail certified e-mail boxes |
14+
| Massive REM | `https://ws.pecmassiva.com` | Bulk certified e-mail with delivery/receipt verification |
15+
| Postal Service | `https://ws.ufficiopostale.com` | Raccomandate, telegrams, priority mail via Poste Italiane |
16+
17+
## SMS v2
18+
19+
```bash
20+
curl -s -X POST https://sms.openapi.com/messages \
21+
-H "Authorization: Bearer $OPENAPI_TOKEN" \
22+
-H 'Content-Type: application/json' \
23+
-d '{"sender": "MyBrand", "body": "Hello!", "recipients": ["+39333…"]}'
24+
```
25+
26+
SMS v1 (`ws.messaggisms.com`) is **deprecated** — use SMS v2.
27+
28+
## Postal Service workflow
29+
30+
1. `POST` a new mail item (recipient, document).
31+
2. Check the returned prices and confirm with a `PATCH` (or pass `autoconfirm: true`).
32+
3. Receive status updates via the `callback` URL you provide.
33+
34+
## References
35+
36+
Specs: [smsv2](../../knowledge/oas/smsv2.openapi.json) · [pec](../../knowledge/oas/pec.openapi.json) · [pecmassiva](../../knowledge/oas/pecmassiva.openapi.json) · [ufficiopostale](../../knowledge/oas/ufficiopostale.openapi.json) — endpoint lists in [knowledge/services/](../../knowledge/services/).

skills/openapi-risk/SKILL.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
name: openapi-risk
3+
description: Assess the reliability of Italian/worldwide companies and individuals through Openapi Risk - credit scores, CRIF reports, KYC checks, negative events, protests, personal/economic data. Use for due diligence, creditworthiness, AML/KYC questions.
4+
---
5+
6+
# Openapi Risk
7+
8+
Base URL: `https://risk.openapi.com` — reports and scores on natural and legal persons, sourced from CRIF, the Protest Register and other official registers.
9+
10+
Authentication: Bearer token — see the `openapi-auth` skill.
11+
12+
## Main capabilities (56 endpoints — see reference for the full list)
13+
14+
- **Credit score**: `GET /IT-creditscore-top/{vat_or_taxcode}` for a quick Italian company score; deeper CRIF-based reports via async endpoints.
15+
- **KYC**: `POST /WW-kyc-full` for worldwide know-your-customer checks.
16+
- **Negative events**: protests, prejudicial acts, bankruptcies on companies and individuals.
17+
- **Person data**: personal data, phones, economic indicators of natural/legal persons.
18+
19+
Most heavy reports follow the async pattern (start → poll with `id` or `callback`) described in the [platform guide](../../knowledge/platform-guide.md#async-request-pattern).
20+
21+
## Compliance
22+
23+
- Several Risk services fall under the Italian **TULPS** regulation: the account must have completed identity-document verification in the console before activation ([FAQ](../../knowledge/faq.md)).
24+
- Reports are paid per request and can be expensive — check wallet credit and confirm with the user before launching them.
25+
- Personal data returned is subject to GDPR: use it only for the stated, legitimate purpose; do not store it in the repo.
26+
27+
## References
28+
29+
Full spec: [knowledge/oas/risk.openapi.json](../../knowledge/oas/risk.openapi.json) · endpoint list: [knowledge/services/risk.md](../../knowledge/services/risk.md)

0 commit comments

Comments
 (0)