---
title: "Post Heartbeat"
method: POST
path: "/heartbeat"
---

# Post Heartbeat

`POST /heartbeat`

## 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/heartbeat`
- Auth: none declared

Ping periódico desde la app. Actualiza last_seen_at en la licencia y guarda en heartbeats.

lmcp-api#274 (colibird-ai/.github#189) — pacing contract with the clients:
  * the response carries an integer `next_beat_s`: how long the client should wait before its next
    liveness ping. Default 900 (HEARTBEAT_FLOOR_S), LMCP_HEARTBEAT_NEXT_BEAT_S overrides it, always
    inside [300, 3600]. A client that does not know the field ignores it and keeps beating every
    5 minutes, which every reader still supports.
  * a beat that changed the state fingerprint or carries work (tool calls, errors, slow calls,
    journeys) is stored as a heartbeats row; a pure liveness ping only refreshes `machines` and the
    hourly liveness counter. A client sends at once when its state or batch changes, and otherwise
    on `next_beat_s` (15 minutes floor).

## Request body

- HeartbeatRequest
  - `license_key` string
  - `cloud_token` string
  - `license_email` string
  - `machine_id` string
  - `version` string
  - `running_version` string
  - `npm_version` string
  - `os_version` string
  - `os_build` unknown
  - `surface_v2_fallback` unknown
  - `qa_mode` unknown
  - `qa_grant_refused` unknown
  - `uptime_hrs` number
  - `transport` string
  - `tool_calls` integer
  - `tool_breakdown` object
  - `tray_version` string
  - `machine_label` string, nullable
  - `arch` string
  - `ref` string
  - `ai_client` string
  - `locale` string
  - `mem_available_mb` integer, nullable
  - `cpu_ms_total` integer, nullable
  - `rss_mb` integer, nullable
  - `mail_index_state` string, nullable
  - `mail_index_total` integer, nullable
  - `mail_index_pending` integer, nullable
  - `mail_index_tick_ms` integer, nullable
  - `mail_index_walk_ms` integer, nullable
  - `mail_index_db_mb` integer, nullable
  - `rss_peak_mb` integer, nullable
  - `mail_index_rss_delta_mb` integer, nullable
  - `web_sessions_open` integer, nullable
  - `web_sessions_oldest_min` integer, nullable
  - `session_count` integer, nullable
  - `feature_flags` object
  - `read_only` boolean
  - `disabled_tools_count` integer
  - `account_permission_counts` unknown
  - `mcp_paused` boolean
  - `ai_clients` unknown[]
    - unknown
  - `ai_clients_state` object, nullable
  - `tools_ever_listed` boolean
  - `mcp_client` string
  - `pid` integer
  - `started_at` string
  - `tcc_status` object
  - `tray_process_count` integer, nullable
  - `services` object
  - `tool_errors` object
  - `tool_error_samples` object
  - `slow_tool_calls` object
  - `cpu_pct` number
  - `large_responses` object
  - `empty_results` object
  - `terminal_usage` unknown
  - `manifest_version` string
  - `m365_status` string
  - `server_source` string
  - `tray_bundle_location` string
  - `origin` unknown
  - `launch_path` unknown
  - `connections` unknown
  - `journeys` unknown[]
    - unknown

## 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)
