update_usage
Manually update usage statistics for Cursor Pro's AI service quotas, including Sonnet 4.5, Gemini, and GPT-5 request counts, to maintain accurate tracking of subscription limits.
Instructions
Update usage statistics (for testing or manual updates)
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "update_usage"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sonnet45Requests | No | Number of Sonnet 4.5 requests | |
| geminiRequests | No | Number of Gemini requests | |
| gpt5Requests | No | Number of GPT-5 requests | |
| totalRequests | No | Total number of requests |
Implementation Reference
- src/index.ts:305-341 (handler)The main handler function for the 'update_usage' tool. It processes optional input arguments, constructs partial updates, calls the monitor's updateLimits method to persist changes, and returns a success response.
private async handleUpdateUsage(args: { sonnet45Requests?: number; geminiRequests?: number; gpt5Requests?: number; totalRequests?: number; }) { const updates: Partial<{ sonnet45Requests: number; geminiRequests: number; gpt5Requests: number; totalRequests: number; }> = {}; if (args.sonnet45Requests !== undefined) { updates.sonnet45Requests = args.sonnet45Requests; } if (args.geminiRequests !== undefined) { updates.geminiRequests = args.geminiRequests; } if (args.gpt5Requests !== undefined) { updates.gpt5Requests = args.gpt5Requests; } if (args.totalRequests !== undefined) { updates.totalRequests = args.totalRequests; } this.monitor.updateLimits(updates); return { content: [ { type: 'text', text: `✅ Usage statistics updated successfully.`, }, ], }; } - src/index.ts:72-96 (schema)Input schema definition for the 'update_usage' tool, specifying optional numeric parameters for updating different service request counts.
name: 'update_usage', description: 'Update usage statistics (for testing or manual updates)', inputSchema: { type: 'object', properties: { sonnet45Requests: { type: 'number', description: 'Number of Sonnet 4.5 requests', }, geminiRequests: { type: 'number', description: 'Number of Gemini requests', }, gpt5Requests: { type: 'number', description: 'Number of GPT-5 requests', }, totalRequests: { type: 'number', description: 'Total number of requests', }, }, }, }, - src/index.ts:141-149 (registration)Tool registration in the switch statement handling CallToolRequestSchema, dispatching to the handleUpdateUsage method.
case 'update_usage': return await this.handleUpdateUsage( args as { sonnet45Requests?: number; geminiRequests?: number; gpt5Requests?: number; totalRequests?: number; } ); - src/cursorLimitsMonitor.ts:89-97 (helper)Supporting method in CursorLimitsMonitor class that applies partial limit updates by merging with existing limits, updates the timestamp, and notifies registered callbacks.
public updateLimits(newLimits: Partial<CursorProLimits>): void { this.limits = { ...this.limits, ...newLimits, lastUpdated: new Date(), }; this.notifyCallbacks(); }