Skip to content

MCP Server

Wanepia exposes a Model Context Protocol (MCP) server, letting AI assistants query your service catalog and check status in real time. The server runs at https://api.wanepia.com/v1/mcp using SSE transport.

How it works

MCP clients discover tools via tools/list and call them via tools/call. Wanepia serves tools from skills — tool manifests you register per tenant. The built-in catalog tools are available to any tenant; you just need to register the provided skill manifest once to make them discoverable.

MCP client  →  tools/list  →  returns tools from your registered skills
MCP client  →  tools/call  →  dispatched to the built-in implementation

Quickstart

1. Register the catalog skill

The catalog skill exposes 7 built-in tools for querying your service catalog. Register it once via the API:

curl -X POST https://api.wanepia.com/v1/skills \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "catalog-ops",
    "name": "Catalog Operations",
    "description": "Query and manage the service catalog — entities, blueprints, checks, and incidents.",
    "version": "1.0.0",
    "tools": [
      {
        "name": "get_status_summary",
        "description": "Get current status (up / degraded / down / unknown) for all monitored entities.",
        "inputSchema": {"type": "object", "properties": {}}
      },
      {
        "name": "list_entities",
        "description": "List entities registered in the catalog, optionally filtered by blueprint type.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "blueprint_slug": {"type": "string", "description": "Filter to entities of this blueprint type"}
          }
        }
      },
      {
        "name": "get_entity",
        "description": "Get full details for a specific entity including metadata, current status, and attached checks.",
        "inputSchema": {
          "type": "object",
          "required": ["blueprint_slug", "entity_slug"],
          "properties": {
            "blueprint_slug": {"type": "string"},
            "entity_slug": {"type": "string"}
          }
        }
      },
      {
        "name": "list_blueprints",
        "description": "List all blueprint types defined for the tenant.",
        "inputSchema": {"type": "object", "properties": {}}
      },
      {
        "name": "list_incidents",
        "description": "List recent state transitions (up→down, down→up, etc.) as an incident feed.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "hours": {"type": "integer", "description": "How many hours back to look (default 24)"}
          }
        }
      },
      {
        "name": "get_check_results",
        "description": "Get individual HTTP check results for a specific check, including latency and success/failure per attempt.",
        "inputSchema": {
          "type": "object",
          "required": ["check_id"],
          "properties": {
            "check_id": {"type": "string"},
            "hours": {"type": "integer", "description": "How many hours back to retrieve (default 1)"}
          }
        }
      },
      {
        "name": "create_check",
        "description": "Register a new HTTP health check for an entity.",
        "inputSchema": {
          "type": "object",
          "required": ["entity_id", "target_url"],
          "properties": {
            "entity_id": {"type": "string"},
            "target_url": {"type": "string"},
            "interval_seconds": {"type": "integer", "description": "Poll interval in seconds (default 60)"}
          }
        }
      }
    ]
  }'

Verify it registered:

wnp skills list

2. Connect your MCP client

Add to ~/.claude/mcp_servers.json (global) or .claude/mcp_servers.json (project):

{
  "wanepia": {
    "type": "sse",
    "url": "https://api.wanepia.com/v1/mcp",
    "headers": {
      "Authorization": "Bearer <your-api-key>"
    }
  }
}

Add to your Claude Desktop MCP config:

{
  "mcpServers": {
    "wanepia": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-sse-client",
               "https://api.wanepia.com/v1/mcp"],
      "env": {
        "AUTHORIZATION": "Bearer <your-api-key>"
      }
    }
  }
}

Built-in tools

Tool Description
get_status_summary Fleet-wide status counts and entity list
list_entities All entities, optionally filtered by blueprint
get_entity Full entity detail with current status
list_blueprints All blueprint types for the tenant
list_incidents Recent state transitions as an incident feed
get_check_results Per-check result history with latency
create_check Register a new HTTP health check

Custom skills

Register your own skills to expose domain-specific context to your AI assistant — deployment info, runbooks, on-call schedules, or anything your team needs.

curl -X POST https://api.wanepia.com/v1/skills \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "deployment-info",
    "name": "Deployment info",
    "description": "Provides deployment context for services",
    "version": "1.0.0",
    "tools": [
      {
        "name": "get_deployment",
        "description": "Get the latest deployment for a service slug",
        "inputSchema": {
          "type": "object",
          "required": ["service"],
          "properties": {
            "service": {"type": "string", "description": "Service slug"}
          }
        }
      }
    ]
  }'

Manage skills with the CLI:

wnp skills list
wnp skills get catalog-ops
wnp skills enable deployment-info
wnp skills disable deployment-info
wnp skills delete deployment-info

Example session

User: Which services are currently down?

Claude: [calls get_status_summary]
        [calls list_entities]

        Two services are currently down:
        - payments-api (down since 03:17)
        - reporting-api (down since 22:45 yesterday)

User: What's causing the payments-api failure?

Claude: [calls get_entity for payments-api]
        [calls get_check_results for its check ID]

        The HTTP check to https://api.acme.com/payments/health is returning
        connection refused (status 0). Three consecutive failures starting
        at 03:14 triggered the state change at 03:17.