---
title: "Trial Validate"
method: POST
path: "/trial/validate"
---

# Trial Validate

`POST /trial/validate`

## Request

- Base URL: `https://api.local-mcp.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.local-mcp.com/trial/validate`
- Auth: none declared

Validate the trial against the server.

#112 unit 3: behind the charging switch (`get_charging_switch_date`) this expresses a real
14-day trial counted from first connection, plus the 30-day grace an EXISTING machine is owed
from the switch date S. The switch ships ABSENT, so pre-switch is BACKWARD-COMPATIBLE (#140 O2):
the existing fields are unchanged (days_left 3650, never expired, same install_date) and it only
ADDS `state`/`code` — not byte-identical, but no existing reader breaks. `exempt_tools` (the tools
that keep working at expiry) is NOT echoed here: it is a client-enforced contract constant
(GO answer b, in license-activation.v1.json).

## Request body

- TrialValidateRequest
  - `machine_id` string
  - `cloud_token` string
  - `local_install_date` string

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/local-mcp/apis/lmcp-api.md) · [All operations](https://skmtc.dev/local-mcp/apis/lmcp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/local-mcp/apis/lmcp-api/revisions/f1f1c502623a?raw)
