First capture: create a baseline. Later captures: compare the current tool manifest with the previous successful capture. A missing baseline or failed request is never detected drift.
Supported transport: Stateless calls and MCP initialize/session handshakes are supported; capture metadata records stateless_json, stateless_sse, session_json or session_sse. Public HTTPS endpoints returning a JSON or SSE tools/list response only. Authentication, redirects, legacy GET-only SSE, pagination and IPv6-only endpoints are unsupported. Baselines and history are public; new captures are Ed25519-signed, while legacy captures remain unsigned; a change is not proof of an attack.
BASELINE_AVAILABLE: Select capture to request a current comparison.
{
"server": "https://claude-resets.com/mcp",
"name": "claude-resets",
"tracked": true,
"state": "BASELINE_AVAILABLE",
"supported": null,
"baseline": {
"manifest_hash": "b76bd32f1f6e3afca7cbbd26c5042bd5",
"tool_count": 3,
"captured_at": "2026-10-10T07:00:09.064Z"
},
"tools": [
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Last usage-limit reset"
},
"description": "The most recent usage-limit reset: when it was announced, how many days ago, whether it was a banked reset that users apply themselves (and the deadline), which plans it covered, whether it has been reviewed, and the original post. If the latest reset did not cover every user, also returns the last one that did, and lists every banked reset that can still be applied. Use it for 'when did Claude last reset usage limits?' or 'do I have a banked reset to use?'.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"provider": {
"default": "claude",
"description": "claude (Claude Code, the default) or codex (OpenAI Codex).",
"enum": [
"claude",
"codex"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_last_reset",
"title": "Last usage-limit reset"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Reset statistics"
},
"description": "Counts and gaps for resets, as on claude-resets.com: resets announced, average, median and longest gap in days, days since the last, and resets per month. With provider 'both' and no date, the window is the period in which both are tracked, the fair comparison. Limit changes never count.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"provider": {
"default": "both",
"enum": [
"claude",
"codex",
"both"
],
"type": "string"
},
"since": {
"description": "Start the window on this UTC date.",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
}
},
"type": "object"
},
"name": "get_reset_stats",
"title": "Reset statistics"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Reset history"
},
"description": "Tracked announcements, newest first: resets, limit changes (which raise or lower limits without resetting usage, and never count as resets), or both, for Claude, Codex or both, optionally only since a date.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"kind": {
"default": "reset",
"enum": [
"reset",
"limit_change",
"all"
],
"type": "string"
},
"limit": {
"default": 10,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"provider": {
"default": "claude",
"enum": [
"claude",
"codex",
"both"
],
"type": "string"
},
"since": {
"description": "Only announcements on or after this UTC date.",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
}
},
"type": "object"
},
"name": "list_resets",
"title": "Reset history"
}
],
"signed_capture": {
"alg": "Ed25519",
"kid": "capture-a46fe710c055398f3b6f43a1",
"payload": {
"schema": "dominion.capture.v1",
"server_url": "https://claude-resets.com/mcp",
"captured_at": "2026-10-10T07:00:09.064Z",
"capture": {
"tools": [
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Last usage-limit reset"
},
"description": "The most recent usage-limit reset: when it was announced, how many days ago, whether it was a banked reset that users apply themselves (and the deadline), which plans it covered, whether it has been reviewed, and the original post. If the latest reset did not cover every user, also returns the last one that did, and lists every banked reset that can still be applied. Use it for 'when did Claude last reset usage limits?' or 'do I have a banked reset to use?'.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"provider": {
"default": "claude",
"description": "claude (Claude Code, the default) or codex (OpenAI Codex).",
"enum": [
"claude",
"codex"
],
"type": "string"
}
},
"type": "object"
},
"name": "get_last_reset",
"title": "Last usage-limit reset"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Reset statistics"
},
"description": "Counts and gaps for resets, as on claude-resets.com: resets announced, average, median and longest gap in days, days since the last, and resets per month. With provider 'both' and no date, the window is the period in which both are tracked, the fair comparison. Limit changes never count.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"provider": {
"default": "both",
"enum": [
"claude",
"codex",
"both"
],
"type": "string"
},
"since": {
"description": "Start the window on this UTC date.",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
}
},
"type": "object"
},
"name": "get_reset_stats",
"title": "Reset statistics"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true,
"title": "Reset history"
},
"description": "Tracked announcements, newest first: resets, limit changes (which raise or lower limits without resetting usage, and never count as resets), or both, for Claude, Codex or both, optionally only since a date.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"kind": {
"default": "reset",
"enum": [
"reset",
"limit_change",
"all"
],
"type": "string"
},
"limit": {
"default": 10,
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"provider": {
"default": "claude",
"enum": [
"claude",
"codex",
"both"
],
"type": "string"
},
"since": {
"description": "Only announcements on or after this UTC date.",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"type": "string"
}
},
"type": "object"
},
"name": "list_resets",
"title": "Reset history"
}
],
"metadata": {
"probe_mode": "stateless_json",
"representation": "full-tools-v1"
}
},
"tools_list_sha256": "b76bd32f1f6e3afca7cbbd26c5042bd5e523724a24a6f2e674d5e5d98d8d31c8"
},
"signature": "WI8pkYQgCkcPKaY_pGMAlbsmPejjLOFNXuXmFooknyth5R-hlblGizi0H4DCccho54GAoNfM3kLQTMubNS_IDA"
},
"drift_events": [],
"drift_detected": null,
"checked_live": false,
"limits": "Stateless calls and MCP initialize/session handshakes are supported; capture metadata records stateless_json, stateless_sse, session_json or session_sse. Public HTTPS endpoints returning a JSON or SSE tools/list response only. Authentication, redirects, legacy GET-only SSE, pagination and IPv6-only endpoints are unsupported. Baselines and history are public; new captures are Ed25519-signed, while legacy captures remain unsigned; a change is not proof of an attack."
}
Wait at least 60 seconds between captures. The store is eventually consistent; simultaneous captures may take time to appear. Scheduled monitoring: $29/month per compatible endpoint, best-effort alerts and no guaranteed interval.