Live

PVE Platform MCP Server

Connect your AI development tools to the PVE Platform via the Model Context Protocol (Streamable HTTP transport).

Transport URL
API Key required for authenticated and write-enabled tools. Public discovery, documentation, permissions-reference, and calendar-reference tools work without authentication. Tenant-scoped reference-data tools like tags, categories, and type definitions also work without a key when you provide tenantId. The default read-only app/API-key template covers resources, spaces, tags, categories, and type definitions, including user-profile schema discovery for app-specific preferences. Use MCP to discover the available user type definitions, then use the secure /api/v1/secure/auth/me REST routes for actual current-user profile reads, updates, and resets. That route now returns the canonical user DTO used by admin-user reads, including status, settings, typeDefinitionId, verification state, and timestamps, so regenerate generated types instead of maintaining hand-built DTO mappings. Get your API key from the PVE Platform admin panel under Settings → API Keys — use the MCP_DEVELOPER or FULL_ACCESS template plus mcp_write_enabled=true when you need write access.
Catalog presence is not the same as permission success. The setup page lists the tools the server exposes. Some tools need a privileged API key, but they are still the correct tools to call. Agents should send the request and use the runtime result to distinguish success, access denied, missing authentication, or a disconnected MCP bridge instead of assuming the capability is missing.
Keep MCP keys in trusted app layers. Put the tenant API key in a backend, proxy, desktop client, or admin-only environment. Public browser and mobile apps should call your own backend instead of embedding a tenant MCP key directly. If an app only needs public reference-data bootstrap, search, or selection flows, call the public MCP tools with an explicit tenantId and no key.
Use /mcp in MCP client configs. The /mcp/info endpoint is a discovery document for browsers and diagnostics, not the Streamable HTTP transport endpoint used by MCP clients.
Built-in MCP instructions and prompts are available. Every MCP session now advertises core integration guidance, and reusable prompt templates are published for app-auth and schema-version workflows. Use the PVE MCP server as the first discovery and execution surface for PVE-specific work, prefer dedicated MCP tools over raw OpenAPI inspection, and treat auth failures as runtime access results instead of missing capabilities. Use pve_translate_content for text, file-content, JSONB, i18n-resource, YAML/YML, properties, ARB, and entity translation jobs, keeping base-language text on top-level entity fields and additional locales in translations_i18n. Use PVE public auth endpoints for end-user login and tenant-scoped registration, use forgot-password and reset-password for recovery when the user is signed out, use /api/v1/secure/auth/me/change-password for logged-in password changes, use providers plus oauth/initiate plus oauth/exchange for social login, drive user.locale choices from tenant default_language plus additional_languages instead of a static enum, keep tenantId in public contracts, and use pve_get_schema_versions for client schema drift detection.
Agent Triage
MCP-first decision flow
Use the PVE MCP server as the first discovery and execution surface for PVE-specific work. Prefer dedicated MCP tools over raw OpenAPI inspection, repo search, or guessed routes, and treat authentication failures as runtime access results instead of missing capabilities.
1
Start with MCP for any PVE-specific request before inspecting raw OpenAPI, repo files, or guessed REST paths.
2
Choose the smallest discovery or execution tool that matches the intent: overview for orientation, endpoint tools for route discovery, document tools for implementation guidance, schema tools for contracts, translation tools for localization work, and dedicated entity tools for live tenant data.
3
When a dedicated MCP mutation tool exists, call it directly instead of reverse-engineering the REST endpoint from OpenAPI first.
4
Treat access denied, missing auth, or write-disabled responses as runtime permission outcomes. They do not mean the tool choice was wrong.
5
Only fall back to OpenAPI after MCP discovery when you need route detail that the MCP tools do not already expose.
Intent To Tool Routing
General platform or endpoint discovery
Start: pve_get_api_overview, pve_list_endpoints
Then: pve_get_endpoint, pve_get_schema
Use these first when the question is about which API surface exists. Do not start by scraping raw OpenAPI JSON.
Implementation guidance, examples, and current platform behavior
Start: pve_search_documents, pve_list_documents
Then: pve_get_document
Prefer MCP-published documents over repo-wide guessing when you need workflows, examples, or guidance.
Chat or Centrifugo integration planning
Start: pve_get_chat_reference, pve_get_chat_presence_roster_handoff
Then: pve_get_document, pve_get_endpoint, pve_get_schema
Use the dedicated chat reference for the capability map and the presence/roster handoff tool for platform-specific online-state and roster wiring. Then read the matching MCP document sections before generating code.
Notification inbox, push-device, preference, or delivery-diagnostics integration planning
Start: pve_get_notification_reference
Then: pve_get_document, pve_get_endpoint, pve_get_schema
Use the notification reference for the delivered inbox, unread-summary, device, preference, and tenant-admin diagnostic surface. Then read unified-notification-platform-developer-reference and pwa-web-push-implementation-guide before generating browser push or service-worker code.
Translate text, local file contents, JSONB payloads, generic i18n JSON files, or tenant entities
Start: pve_translate_content
Then: pve_get_tenant, pve_get_schema
Use the translation tool directly for localization work. Entity mode follows the canonical contract: base-language text stays on top-level entity fields and only additional locales are written to translations_i18n. For local files, the client must read the file and pass its content in payload_json because the MCP server cannot access arbitrary IDE file paths. File mode supports JSON, YAML, YML, properties, and ARB i18n resources and can infer the format from fileName. ARB mode preserves metadata entries and updates @@locale per translated output. Use mode="entity" for resource/space/tag/category translation by id and omit targetLanguages to translate to all tenant-enabled additional languages.
Inspect existing tags, categories, or type definitions before changing taxonomy data
Start: pve_tags_list, pve_categories_list, pve_type_definitions_list
Then: pve_tags_get, pve_categories_get, pve_type_definitions_get
List and inspect current tenant data first so you have the right IDs, top-level base-language fields, additional-language translations in translations_i18n, and type information before mutating anything.
Create, update, or delete taxonomy data
Start: pve_tags_create, pve_tags_update, pve_tags_delete, pve_categories_create, pve_categories_update, pve_categories_delete, pve_type_definitions_create, pve_type_definitions_update, pve_type_definitions_delete
Use the dedicated taxonomy mutation tools directly. For tags, pve_tags_update replaces the additional-language name set you send, so inspect current data first if you need to preserve existing locales. Do not route taxonomy writes through endpoint discovery when the MCP surface already exposes the operation.
List, browse, or refine spaces/resources without geo ranking
Start: pve_spaces_list, pve_resources_list
Then: pve_spaces_get, pve_resources_get
Use list tools for pagination, filters, taxonomy constraints, search, sorting, and localization when geo proximity is not the primary driver.
Nearby, radius, GPS, GIS, geo, or coordinate-driven resource discovery
Start: pve_geo_search
Then: pve_resources_nearby
Resolve the place or coordinates first, then call the nearby search. Do not use generic resource listing for proximity-first queries. There is no dedicated MCP tool for request-bound geo network detection or effective geo network config resolution; app and backend clients should call GET /api/v1/secure/geo/network and GET /api/v1/secure/geo/network-config directly when they need trusted-header country detection or the effective geo-network rule.
Contacts, QR codes, media links, assignments, or other tenant CRUD
Start: pve_contacts_list, pve_qr_codes_list, pve_entity_media_list, pve_entity_contacts_list
Then: pve_contacts_create, pve_qr_codes_create, pve_entity_media_link, pve_entity_contacts_assign
Use the dedicated CRUD tool family for the entity instead of trying to infer an equivalent REST path from OpenAPI first.
MCP Endpoints
POST GET DELETE
Primary MCP transport endpoint
This is the endpoint every MCP client must use in its config.
Function: handles session initialization, tool discovery, tool execution, SSE notifications, and session teardown over Streamable HTTP.
GET
Discovery and diagnostics endpoint
Useful for inspecting the server in a browser, curl, or monitoring checks.
Function: returns protocol metadata, transport type, server name, and the public versus authenticated tool inventory.
GET
Interactive setup page
Designed for human setup workflows across Cursor, VS Code, Windsurf, Claude Desktop, Zed, and generic MCP clients.
Function: generates ready-to-paste client configs, deeplinks, and endpoint guidance without sending your API key back to the server.
Your API Key
Paste your API key above — configs update automatically. The key is never sent to any server on this page.
Setup for your environment
Cursor — .cursor/mcp.json ~/.cursor/mcp.json  or  .cursor/mcp.json

          
Manual Steps
1
Click Add to Cursor above — or open Cursor → Settings → MCP
2
Paste the config into .cursor/mcp.json (project) or ~/.cursor/mcp.json (global)
3
Reload Cursor. The pve-platform server appears under Available Tools in Agent mode.
VS Code — .vscode/mcp.json .vscode/mcp.json  or  User Profile mcp.json

          
Manual Steps
1
Open VS Code and press ⇧⌘P → run MCP: Add Server
2
Choose HTTP (streamable) and paste the transport URL
3
Or paste the config into .vscode/mcp.json in your project root
4
GitHub Copilot Chat will discover and expose pve-platform tools
Windsurf — mcp_config.json ~/.codeium/windsurf/mcp_config.json

          
Manual Steps
1
Open Windsurf → Cascade → Configure MCP
2
Paste the config into the file at ~/.codeium/windsurf/mcp_config.json
3
Restart Windsurf or reload MCP servers in Cascade settings
Claude Desktop — claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

          
Manual Steps
1
Open Claude Desktop → Claude menu → Settings → Developer → Edit Config
2
Paste the config (merge with existing mcpServers if present)
3
Fully quit and restart Claude Desktop to load the new server
Zed — settings.json ~/.config/zed/settings.json

          
Manual Steps
1
Open Zed and press ⌘, to open Settings
2
Add the context_servers block from the config above
3
Save. Zed reloads MCP context servers automatically.
Antigravity — mcp.json .antigravity/mcp.json or global config

          
Generic MCP Client — HTTP (Streamable)

          
Connect any MCP-compatible client using Streamable HTTP transport.
Endpoint:
Auth: pass your API key as X-API-Key: <key> header (or Authorization: Bearer <key>). Default read-only keys can read resources, spaces, tags, categories, and type definitions; writes still require mcp_write_enabled=true. Write-capable tools remain visible in the catalog even when the current key cannot execute them.
Available Tools
pve_get_api_overview
High-level API summary and statistics
Public
pve_list_endpoints
Browse all REST endpoints with filters
Public
pve_get_endpoint
Details for a specific endpoint
Public
pve_get_permissions_reference
Developer reference for space/resource roles, delegation, invitations, approvals, and effective-access checks
Public
pve_get_calendar_reference
Developer reference for the shareable calendar domain, route families, schemas, admin flows, and MCP usage
Public
pve_get_calendar_workflow
Concrete workflow steps for creating calendars, recurrence, reminders, and admin share operations
Public
pve_get_chat_reference
Developer reference for the delivered Centrifugo-first chat domain, bootstrap flow, route families, and current scope gaps
Public
pve_get_notification_reference
Developer reference for the unified notification domain, including inbox, unread state, devices, preferences, diagnostics, and MCP-covered notification workflows
Public
pve_get_chat_presence_roster_handoff
Platform handoff for approximate chat presence and roster wiring, including checklists, starter examples, and schema references for web, SPA, Flutter, and React Native
Public
pve_list_schema_entities
All available schema entity types
Public
pve_get_schema
JSON Schema for a specific entity
Public
pve_get_typescript_types
TypeScript type definitions for an entity
Public
pve_get_zod_schemas
Zod validation schemas for an entity
Public
pve_get_schema_versions
Schema manifest version hashes for drift detection
Public
pve_list_documents
List MCP-published developer documents and implementation guides
Public
pve_get_document
Get a document or section with current implementation examples
Public
pve_search_documents
Search documents for media/image/storage guidance, resource or space workflows, delegation, invitations, and implementation references
Public
pve_tags_list
List tags for a tenant (tenantId if unauthenticated). Use this before tag create/update/delete to inspect current IDs, base displayName, additional-language translations, and persistent flags. The MCP tool accepts preferredLanguage in filters_json to localize displayName with base-language fallback.
Public
pve_tags_get
Get a single tag by id (tenantId if unauthenticated). Use this to inspect one tag before update/delete, including its base displayName and language plus additional-language name entries in translations_i18n.
Public
pve_categories_list
List categories (tenantId if unauthenticated). Use this before category create/update/delete to confirm current IDs, top-level base-language fields (name, description, language), and additional-language entries in translations_i18n.
Public
pve_categories_get
Get a single category by id (tenantId if unauthenticated). Use this to inspect one category before update/delete, including top-level base-language fields and additional-language entries in translations_i18n.
Public
pve_type_definitions_list
List type definitions (tenantId if unauthenticated). Use this before create/update/delete to confirm the tenant-specific definition set.
Public
pve_type_definitions_get
Get one type definition by id (tenantId if unauthenticated). Use this to inspect one definition before update/delete.
Public
pve_get_tenant
Get details for a specific tenant
API Key
pve_list_api_keys
List API keys for your tenant
API Key
pve_create_api_key
Create a new API key for the authenticated tenant, including optional mcp_write_enabled
API Key
pve_revoke_api_key
Permanently revoke an API key
API Key
pve_query_permissions_roles
Live tenant, space, or resource role query including invitations, approvals, and delegation requests
API Key
pve_translate_content
Translate text, resource/space/tag/category entities, JSONB payloads, generic i18n JSON, or raw file contents for the authenticated tenant. Entity mode preserves the canonical model: base-language text stays on top-level entity fields and only additional locales are written to translations_i18n; omit targetLanguages to translate to all tenant-enabled additional languages. File mode supports text, JSON, YAML, YML, properties, and ARB formats and can infer the format from fileName. ARB mode preserves metadata entries and updates @@locale per translated file. For local files, read the file in the client and pass its content via payload_json; the MCP server cannot read arbitrary IDE file paths directly.
API Key
pve_geo_search
Resolve tenant-formatted location suggestions and optionally inspect the effective display config before applying geo filters or distance sorting. Use this only for address lookup and coordinate resolution. Do not use it to list resources. Once coordinates are known, use pve_resources_nearby for radius, proximity, near-me, GPS, GIS, geo, or geolocation-driven resource discovery.
API Key
pve_contacts_list
Read and search contacts for your tenant
API Key
pve_contacts_get
Get a single contact by id
API Key
pve_contacts_create
Create a new contact
API Key
pve_contacts_update
Update contact fields
API Key
pve_contacts_delete
Delete a contact by id
API Key
pve_notifications_list_inbox
List inbox notifications for the authenticated API-key actor
API Key
pve_notifications_get_unread_summary
Get unread notification totals for the authenticated API-key actor
API Key
pve_notifications_update_state
Mark one notification read/unread, archive/unarchive, or acknowledged for the authenticated API-key actor
API Key
pve_notifications_list_devices
List active notification devices for the authenticated API-key actor
API Key
pve_notifications_upsert_device
Register or update one notification device for the authenticated API-key actor
API Key
pve_notifications_delete_device
Delete one notification device binding for the authenticated API-key actor
API Key
pve_notifications_list_preferences
List notification preferences for the authenticated API-key actor
API Key
pve_notifications_update_preferences
Patch notification preferences for the authenticated API-key actor
API Key
pve_admin_notifications_get_overview
Get tenant-scoped notification delivery overview for the authenticated API key tenant
API Key
pve_admin_notifications_list_deliveries
List tenant-scoped notification delivery diagnostics for the authenticated API key tenant
API Key
pve_spaces_list
List spaces visible to the authenticated tenant actor with the latest endpoint filters: type, type definition, taxonomy filters, date ranges, localization, pagination, sorting, distance sorting, and geo-radius filtering. sortBy="distance" requires referenceLatitude/referenceLongitude; radiusMeters also requires both reference coordinates.
API Key
pve_spaces_get
Get one visible space by id, including top-level base-language fields and additional-language entries in translations_i18n.
API Key
pve_spaces_create
Create a new space, including typed settings, canonical camelCase fields such as typeDefinitionId and subscriptionTypeId, homeLocation, top-level base-language fields, and optional translations_i18n entries for additional locales only.
API Key
pve_spaces_update
Update a space, including delegation-ready metadata, canonical camelCase fields such as typeDefinitionId and subscription lifecycle values, homeLocation, top-level base-language fields, and optional translations_i18n entries for additional locales only.
API Key
pve_spaces_delete
Delete a space by id for the authenticated tenant
API Key
pve_resources_list
Generic resource browsing and filtering tool for the authenticated tenant actor. Use this when the primary task is to list, browse, paginate, or refine a known resource set by status, type definition, spaces, taxonomy, text search, date ranges, or localization. This tool does not support geo-distance ordering, radius filters, reference coordinates, or distance results. If the user intent is radius search, nearby, near-me, GPS, GIS, geo, or geolocation-driven discovery, use pve_resources_nearby instead.
API Key
pve_resources_nearby
Primary MCP target for proximity-first resource discovery. Use this whenever distance from a reference point determines the result set or ranking: radius search, nearby, near-me, GPS, GIS, geo, or geolocation-driven queries. Calls GET /api/v1/secure/resources/nearby with PostGIS-backed distance ordering, taxonomy filters, manageable filtering, and optional media-id expansion. referenceLatitude/referenceLongitude are required; radiusMeters is optional. Use pve_resources_list only when the task is generic browsing/filtering and geo is secondary.
API Key
pve_resources_get
Get one visible resource by id, including top-level base-language fields and additional-language entries in translations_i18n.
API Key
pve_resources_create
Create a new resource, including typed settings, canonical camelCase fields such as typeDefinitionId, spaceId, and subscription lifecycle values, currentLocation, top-level base-language fields, and optional translations_i18n entries for additional locales only.
API Key
pve_resources_update
Update a resource, including canonical camelCase fields such as spaceId and subscription lifecycle values, currentLocation, invitation-ready state, top-level base-language fields, and optional translations_i18n entries for additional locales only. typeDefinitionId remains immutable after resource creation.
API Key
pve_resources_delete
Delete a resource by id
API Key
pve_entity_media_list
List linked media for a space or resource
API Key
pve_entity_media_link
Link an existing media file to a space or resource
API Key
pve_entity_media_unlink
Remove an existing media link from a space or resource
API Key
pve_entity_media_set_main
Set the main image for a space or resource media gallery
API Key
pve_entity_media_reorder
Reorder a space or resource media gallery
API Key
pve_entity_contacts_list
List contact assignments for a user, space, or resource
API Key
pve_entity_contacts_assign
Assign a contact to user, space, or resource
API Key
pve_entity_contacts_unassign
Remove contact assignment from an entity
API Key
pve_qr_codes_list
Read and search QR codes for your tenant with qrCodes.read
API Key
pve_qr_codes_get
Get a QR code by uuid with qrCodes.read
API Key
pve_qr_codes_resolve
Resolve a QR uuid to its linked PVE targets for app-backend lookup flows
API Key
pve_qr_codes_create
Create a new QR code with qrCodes.write
API Key
pve_qr_codes_update
Update QR code fields with qrCodes.write
API Key
pve_qr_codes_delete
Delete a QR code by uuid with qrCodes.delete
API Key
pve_qr_assignments_list
List QR assignments for a QR code, optionally filtered by linked_type
API Key
pve_qr_assignments_assign
Assign QR code to space/resource/contact/user/calendar_entry with qrCodes.assign
API Key
pve_qr_assignments_unassign
Unassign QR code from space/resource/contact/user/calendar_entry with qrCodes.assign
API Key
pve_tags_create
Create curated/persistent tag as the dedicated tag mutation tool. The created tag uses the tenant default language as its base displayName; additional-language translations are managed separately.
API Key
pve_tags_update
Replace tag additional-language name translations and/or update the persistent flag as the dedicated tag mutation tool. Base language text stays on the tag itself and is not sent in the translations payload.
API Key
pve_tags_delete
Delete tag by id as the dedicated tag mutation tool
API Key
pve_categories_create
Create a category for the authenticated tenant as the dedicated category mutation tool, using top-level base-language fields plus optional translations_i18n entries for additional locales only
API Key
pve_categories_update
Update category fields for the authenticated tenant as the dedicated category mutation tool, using top-level base-language fields plus optional translations_i18n entries for additional locales only
API Key
pve_categories_delete
Delete a category with an optional replacementCategoryId relink target as the dedicated category mutation tool
API Key
pve_type_definitions_create
Create type definition as the dedicated type-definition mutation tool
API Key
pve_type_definitions_update
Update type definition fields as the dedicated type-definition mutation tool
API Key
pve_type_definitions_delete
Delete type definition by id as the dedicated type-definition mutation tool
API Key
Usage Examples
Plan A Chat Or Centrifugo Integration
Call pve_get_chat_reference with:
{}

Then call pve_get_chat_presence_roster_handoff with:
{
  "platform": "react_native"
}

Then call pve_get_document with:
{
  "documentId": "chat-presence-roster-handoff-reference",
  "sectionId": "react-native-checklist"
}
Use this when building or upgrading a chat client. Start with the live chat capability map, then pull the dedicated presence and roster handoff for the target platform, and finally read the matching document section for the checklist or starter example.
Plan A Notification Integration
Call pve_get_notification_reference with:
{}

Then call pve_get_document with:
{
  "documentId": "unified-notification-platform-developer-reference",
  "sectionId": "mobile-client-guidance"
}

Then call pve_notifications_list_preferences with:
{}
Use this when building web or mobile notification flows. Start with the live notification capability map, read the implementation section for the target client, and then inspect the actor's live preference state with the dedicated notification tools.
Discover Space and Resource Permission Flows
Call pve_get_permissions_reference with:
{
  "subject": "resource"
}

Then call pve_get_document with:
{
  "documentId": "space-resource-permissions-delegation-invitations-reference"
}
Use this when you need the current role model, effective-access rules, delegation flow, invitations, approvals, and admin GUI implementation references.
Inspect Live Roles for a Tenant Actor
Call pve_query_permissions_roles with:
{
  "subject": "space",
  "spaceId": "YOUR_SPACE_ID"
}
Use this to inspect live tenant, space, or resource memberships plus pending invitations, delegation requests, and approval-aware role state.
Build a Resource Form Against Current Schemas
Call pve_get_schema with:
{
  "entityType": "resource"
}

Then call pve_get_typescript_types with:
{
  "entityType": "resource"
}
Use this pair when generating forms, service wrappers, or validation logic that must stay aligned with the published resource contract.
Translate Text, Files, JSONB, Or Entities
Call pve_translate_content with:
{
  "mode": "entity",
  "payload_json": "{\"entityType\":\"resource\",\"entityId\":\"YOUR_RESOURCE_ID\"}"
}

Or for a local ARB i18n file the client already read:
{
  "mode": "file",
  "payload_json": "{\"sourceLanguage\":\"en\",\"fileName\":\"app_en.arb\",\"content\":\"{\\\"helloWorld\\\":\\\"Hello world\\\",\\\"@@locale\\\":\\\"en\\\",\\\"@helloWorld\\\":{\\\"description\\\":\\\"Homepage greeting\\\"}}\"}"
}
Use this one tool for full-text translation, tenant entity translation by id, JSONB payload localization, and generic i18n resources in JSON, YAML, YML, properties, or ARB format. ARB mode preserves metadata keys such as @message and rewrites @@locale for each translated file. For IDE files, the client must read the file locally and pass the content because the MCP server cannot access arbitrary workspace file paths directly.
Find the Right Implementation Guide
Call pve_search_documents with:
{
  "query": "resource members move requests effective access"
}
Use document search first when you need examples for admin GUI dialogs, move requests, media linking, or current backend route patterns.
Search Tenant-Formatted Locations
Call pve_geo_search with:
{
  "query": "Bahnhofstrasse 1 Zurich",
  "locale": "de-CH",
  "country": "CH",
  "limit": "5",
  "include_display_config": "true"
}
Use this for address lookup, autocomplete, reverse-lookup support, and coordinate resolution only. Do not use it to list resources. If the intent is radius search, nearby, near-me, GPS, GIS, geo, or geolocation-driven resource discovery, switch to the dedicated nearby-resource tool once you have coordinates. If the need is trusted-header country detection or the effective geo-network rule for the current request, use the authenticated REST endpoints GET /api/v1/secure/geo/network and GET /api/v1/secure/geo/network-config instead; there is no dedicated MCP tool for that request-bound surface.
Search Nearby Resources With The Optimized GIS Tool
Call pve_resources_nearby with:
{
  filters_json: search=Room; referenceLatitude=47.3769; referenceLongitude=8.5417; radiusMeters=5000; includeMediaIds=true; limit=10
}
This is the primary target when an agent or user asks for radius search, nearby, near-me, GPS, GIS, geo, or geolocation-driven resource search. Use pve_geo_search first only if you still need to resolve the coordinates. The dedicated nearby tool always returns distance-ordered results and can optionally include linked media ids. Use pve_resources_list only for generic browsing, pagination, and non-geo filtering.
Plan A Calendar Integration
Call pve_get_calendar_reference with:
{}

Then call pve_get_calendar_workflow with:
{
  "workflow": "schedule-recurring-entry"
}
Use this to understand the delivered calendar route families, the key request and response contracts, and the recommended sequence for recurring entries, reminders, and tenant-admin calendar operations.
Built-in Prompts
pve_mcp_tool_triage_prompt
Reusable prompt template for MCP-first request triage, tool selection, taxonomy mutation routing, and correct fallback behavior when auth or permissions block a tool call.
Prompt
pve_app_integration_system_prompt
Reusable prompt template for correct end-user login, registration, password recovery and change-password flows, tenantId usage, public-read limits, and safe client integration boundaries.
Prompt
pve_client_schema_version_guard_prompt
Reusable prompt template for schema version checks, contract drift detection, and automated client update workflows.
Prompt
pve_chat_client_app_setup_prompt
Reusable prompt template for building a simple web or Flutter chat app with PVE public auth endpoints, PVE backend chat APIs, direct and actor-owned chat flows, and Centrifugo realtime transport.
Prompt
Copied!