---
title: "Mcp Public Post"
method: POST
path: "/api/v1/mcp/public"
tags: ["mcp"]
---

# Mcp Public Post

`POST /api/v1/mcp/public`

## Request

- Base URL: `https://app.sentineliq.net`
- URL: `https://app.sentineliq.net/api/v1/mcp/public`
- Auth: none required

Authless JSON-RPC 2.0 dispatch — the three calculators, never metered.

No key, no account, no DB session: every tool here is pure deterministic
math over the engines in src/deals. Abuse control is the per-IP
``public_mcp`` bucket (429 in the surface's structured envelope with
Retry-After, headroom in X-RateLimit-Remaining) plus the body-size cap
(413 before any parsing); the keyed buckets and the usage ledger are
never touched.

## Request body

- object
  - `jsonrpc` '2.0', required
  - `id` unknown
  - `method` 'initialize' | 'server/discover' | 'tools/list' | 'tools/call' | 'ping', required
  - `params` object

## Response `200`

One JSON-RPC 2.0 response object: {jsonrpc, id, result} or {jsonrpc, id, error: {code, message}}. Tool failures are result.isError=true with a {code, message} text block. Batch requests are rejected (-32600).

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

## Other responses

- `202`: Notification (request without id) accepted.
- `400`: Unsupported MCP-Protocol-Version header.
- `403`: Supplied Origin is not in the configured origin allowlist.
- `413`: PAYLOAD_TOO_LARGE — serialized body exceeds 65536 bytes; never metered. Reduce it before retrying.
- `429`: RATE_LIMITED — per-IP burst or daily cap; Retry-After.

---

[API](https://skmtc.dev/sentineliq/apis/sentinel-property-research-api.md) · [All operations](https://skmtc.dev/sentineliq/apis/sentinel-property-research-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sentineliq/apis/sentinel-property-research-api/revisions/64c34d5f2937?raw)
