---
title: "Report MCP config registration"
method: POST
path: "/mcp/config-registrations"
tags: ["MCP"]
---

# Report MCP config registration

`POST /mcp/config-registrations`

Record that an MCP server entry was written for an agent runtime.

Called by `jentic setup` / `jentic skill init` once per runtime whose MCP
config entry it wrote (best-effort on the CLI side — a failed report never
blocks setup). Emits the `mcp.config_registered` internal event; when the
operator opted into telemetry, the event is forwarded carrying at most the
closed runtime tag. Reports are throttled per (actor, runtime) within a
24h in-process window — a throttled repeat is still a 202 with
`recorded: false`, since the CLI treats the report as fire-and-forget.
Any authenticated actor may report.

## Request body

- McpConfigRegistrationRequest — Report that an MCP config entry was written for one agent runtime.
  - `runtime` 'claude_desktop' | 'claude_code' | 'cursor' | 'codex' | 'other', required — Closed-enum tag naming the agent runtime an MCP config entry targets. Attached only to ``mcp_config_registered`` — one event per runtime whose config file/entry ``jentic setup``/``jentic skill init`` writes. A closed set (never the raw runtime string) so the config-written → first-session → first-execute funnel stays property-free on the wire.

## Response `202`

Successful Response

- McpConfigRegistrationResponse — Acknowledgement of a config-registration report.
  - `recorded` boolean, required — Whether the report was recorded as an event. `false` means it was accepted but throttled (an identical (actor, runtime) report was already recorded within the last 24h).
  - `runtime` 'claude_desktop' | 'claude_code' | 'cursor' | 'codex' | 'other', required — Closed-enum tag naming the agent runtime an MCP config entry targets. Attached only to ``mcp_config_registered`` — one event per runtime whose config file/entry ``jentic setup``/``jentic skill init`` writes. A closed set (never the raw runtime string) so the config-written → first-session → first-execute funnel stays property-free on the wire.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `422` — Unprocessable Entity
- `500` — Internal Server Error
- `503` — Service Unavailable

## Changes

- **2026-08-31** `f4594f50f4d3` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/jentic/apis/jentic-control-plane-api/changes/mcp/config-registrations/post.md)

---

[API](https://skmtc.dev/jentic/apis/jentic-control-plane-api.md) · [All operations](https://skmtc.dev/jentic/apis/jentic-control-plane-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/jentic/jentic-control-plane-api/revisions/0e18af18e1fa/schema)
