---
title: "MCP JSON-RPC handshake"
method: POST
path: "/.well-known/mcp"
tags: ["discovery"]
---

# MCP JSON-RPC handshake

`POST /.well-known/mcp`

## Request

- Base URL: `https://skillselion.com`
- URL: `https://skillselion.com/.well-known/mcp`
- Auth: none declared

Accepts `initialize`, `notifications/initialized`, `ping`, `tools/list`, and `tools/call` (search_skillselion, load_skill, synthesize_skills, top_skillselion, get_catalog_stats against the live catalog; resources/list + resources/read for ui://skillselion/catalog.html). stdio remains `npx -y skillselion-mcp`. Honors Idempotency-Key on POST.

## Headers

- `Idempotency-Key` string

## Request body

- JsonRpcRequest
  - `jsonrpc` '2.0', required
  - `id` unknown
  - `method` string, required
  - `params` object

## Response `200`

JSON-RPC result or error.

- JsonRpcResponse
  - `jsonrpc` '2.0', required
  - `id` unknown
  - `result` object
  - `error` object
    - `code` integer
    - `message` string

## Other responses

- `202`: Notification acknowledged (no body).
- `400`: Invalid query or body.
- `401`: Authentication required (staff routes only).
- `404`: No listing or route matches.
- `405`: Method not allowed.
- `429`: Rate limited. Retry-After and RateLimit headers are set.
- `500`: Upstream or server error.

---

[API](https://skmtc.dev/skillselion/apis/skillselion-public-api.md) · [All operations](https://skmtc.dev/skillselion/apis/skillselion-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/skillselion/apis/skillselion-public-api/revisions/e6e0c4d3d116?raw)
