Integration catalog and marketplace
make catalog (cd go && go run ./tools/catalog) scans the repo and writes docs/integrations/catalog.json: agent integration packs (integrations/*, go/agent/*), connectors (go/internal/connectors/*, cloud pulls, change-source presets), notification channels, uptime check drivers, importers and plugin examples. Entries are grouped by tier (core, extended, community, plugin) with totals, each with {slug, vendor, kind, summary, setup}. go test ./tools/catalog fails when the file is stale or an integrations/* directory has no entry.
At API start the entries are upserted into marketplace_listings (one row per slug, idempotent). Installing a plugin adds a source = plugin listing (plugin-<name>).
GET /v1/integrations/catalog?tier&kind&q&limit&cursor(any signed-in caller)GET /v1/integrations/catalog/{slug}
The web catalog (Settings, Integration catalog) shows tier groups and per-vendor setup guidance.
OpenAPI import
PUT /v1/projects/{p}/services/{svc}/api-spec takes an OpenAPI 3.x JSON document (up to 5 MiB), validates it and stores it. GET returns the endpoint list and the distinct path templates as candidate APM endpoint_rules (nothing is applied automatically). YAML must be converted to JSON first (yq -o=json).