API e MCP di ProjetLab

ProjetLab pubblica un'API REST in sola lettura e un server MCP con gli stessi contenuti del sito: dati dello studio, servizi, portfolio progetti e articoli del blog. Servono ad agent e integrazioni che devono rispondere su uno studio di architettura nell'area di Napoli, Boscoreale e Torre Annunziata.

Autenticazione

Nessuna. Tutti gli endpoint sono pubblici, in sola lettura (GET) e con CORS aperto. Base URL: https://projetlab.it. Specifica completa: openapi.json (OpenAPI 3.1), catalogo /.well-known/api-catalog (RFC 9727).

Endpoint

MetodoPercorsooperationIdContenuto
GET/api/v1/infogetStudioInfoDati dello studio: indirizzo, telefoni, email, orari, zona servita
GET/api/v1/serviceslistServicesElenco dei servizi
GET/api/v1/services/{slug}getServiceDettaglio di un servizio
GET/api/v1/projects?category=listProjectsPortfolio progetti (category: residenziali, infrastrutture, retail)
GET/api/v1/projects/{id}getProjectDettaglio di un progetto
GET/api/v1/postslistPostsArticoli del blog
GET/api/v1/posts/{slug}getPostArticolo completo in markdown

Esempi

curl -s https://projetlab.it/api/v1/info curl -s https://projetlab.it/api/v1/projects?category=residenziali curl -s https://projetlab.it/api/v1/posts/bonus-ristrutturazione-2026-campania

Limiti di utilizzo

60 richieste al minuto per IP. Ogni risposta riporta gli header IETF RateLimit-Policy (es. "default";q=60;w=60) e RateLimit (richieste residue e secondi al reset). Oltre il limite la risposta è 429 con Retry-After.

Errori

Gli errori sotto /api/ sono in application/problem+json (RFC 9457) con i campi type, title, status, detail, code e resolution. Codici: not_found, service_not_found, project_not_found, post_not_found, invalid_id, invalid_category, method_not_allowed, rate_limited.

{ "type": "https://projetlab.it/docs#errori", "title": "Progetto non trovato", "status": 404, "detail": "Nessun progetto con id 9999.", "code": "project_not_found", "resolution": "Elenca gli ID validi con GET /api/v1/projects." }

Server MCP

Endpoint Streamable HTTP (JSON-RPC 2.0, senza sessione): POST https://projetlab.it/mcp. Server card: /.well-known/mcp/server-card.json, manifest per il registry: /server.json. Tool in sola lettura:

Risorse: projetlab://studio, projetlab://services, projetlab://projects e un articolo per risorsa su projetlab://blog/{slug}.

curl -s https://projetlab.it/mcp -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_studio_info","arguments":{}}}'

Pagine in markdown

Ogni pagina del sito risponde in markdown se richiesta con Accept: text/markdown. Le risposte HTML e markdown dichiarano Vary: Accept. Guida per agent: llms.txt.

curl -s -H 'Accept: text/markdown' https://projetlab.it/chi-siamo

Contatti

Per segnalazioni sull'API scrivi a info@projetlab.it. Preventivi e sopralluoghi passano solo dalla pagina Contatti.