Resource URIs expose domains, analytics, and security as structured reads
Where tools answer questions with logic, resources are plain structured reads addressed by URI. resources/list enumerates them concretely (this server does not implement resources/templates/list), and resources/read returns JSON contents for one URI.
The URIs#
Workspace-level:
weboptiva://domains— every domain registered to the tenant.weboptiva://analytics/overview— tenant-wide request/cache/security analytics.weboptiva://security/events— recent WAF, rate-limit, and blocklist events across domains.
Per domain (enumerated for up to 25 domains):
weboptiva://domains/<id>/status— onboarding/DNS/SSL/edge status.weboptiva://domains/<id>/audits— the 10 most recent audit runs.weboptiva://domains/<id>/rum-regressions— RUM regression alerts.
Reading one#
{ "jsonrpc": "2.0", "id": 2, "method": "resources/read",
"params": { "uri": "weboptiva://domains" } }The result is contents: [{ uri, mimeType: "application/json", text }] with pretty-printed JSON. Unknown or inaccessible URIs answer -32602 Resource not found or not accessible: <uri>.
Grounded answers, audited#
Point a client at these when you want facts rather than guesses — which domains are mid-onboarding, what fired this week — and remember every read is logged as activity mcp.resource_read (with not_found on misses), visible next to tool calls in the activity table. Resources are read-only regardless of the token's mutation flag.

