JSON API + MCP

Connect your AI agent to DeepTimer

DeepTimer supports the Model Context Protocol (MCP), the standard way for AI agents to read and write data in external services. Connect Claude, ChatGPT, or Grok and let your AI assistant track time, query totals, and manage your settings.

Connect your AI assistant

Claude
Claude

In the UI

Go to claude.ai or open the Claude desktop app.

Click Settings → Connectors → Add → Add custom connector

Paste the server URL — Claude will redirect you here to log in and approve access.

Server URL: https://deeptimer.com/mcp

Via terminal (Claude Code)

claude mcp add --transport http deeptimer https://deeptimer.com/mcp --header "Authorization: Bearer YOUR_TOKEN"
ChatGPT
ChatGPT

In the UI

Go to chatgpt.com or open the ChatGPT desktop app.

Switch to the ChatGPT Work tab.

Click Settings → Connectors and add a new connector.

Paste the server URL — ChatGPT will redirect you here to log in and approve access.

Server URL: https://deeptimer.com/mcp
Grok
Grok

In the UI

Go to grok.com or open the Grok desktop app.

Go to grok.com/connectors, click New Connector → Custom, and paste the MCP URL.

Server URL: https://deeptimer.com/mcp

API Reference

Authentication

All requests require a Bearer token in the Authorization header. AI assistants get this automatically via the OAuth flow above. For CLI or direct API use, generate a token below.

Authorization: Bearer YOUR_TOKEN

Log in to generate a CLI token.

Endpoints
POST
https://deeptimer.com/mcp — MCP JSON-RPC 2.0 endpoint
GET
https://deeptimer.com/.well-known/mcp.json — service discovery
Tools
READING DATA
get_current_state Get the current color state (last recorded entry).
get_totals Today's total seconds and formatted time per color for the current workday.
get_entries Fetch time entries for the past N days (max 14). Accepts days.
WRITING DATA
add_entry Create a new state transition. Requires literalbutton, previousstate, newstate. Fires webhooks.
edit_entry Edit an existing entry. Requires id.
delete_entry Soft-delete an entry. Requires id.
SETTINGS
get_categories Get the active color categories with their custom labels (e.g. red = "Deep Work").
get_settings Get timezone, color labels (work tags), and category count.
update_timezone Update timezone. Accepts timezone (TZ database name, e.g. America/New_York).
get_weekly_email Get the weekly summary email setting (enabled/disabled and which day).
set_weekly_email_day Enable the weekly email on a given day, or omit day to disable it.
WEBHOOKS
list_webhooks List all active outgoing webhooks.
create_webhook Create a new webhook. Requires url (HTTPS).
delete_webhook Delete a webhook. Requires id.
Examples

Get current state

curl -s -X POST https://deeptimer.com/mcp -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_TOKEN" -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_current_state","arguments":{}}}' | jq

Get today's totals

curl -s -X POST https://deeptimer.com/mcp -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_TOKEN" -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_totals","arguments":{}}}' | jq

Add an entry (transition to red)

curl -s -X POST https://deeptimer.com/mcp -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_TOKEN" -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"add_entry","arguments":{"literalbutton":"red","previousstate":"black","newstate":"red"}}}' | jq

List all available tools

curl -s -X POST https://deeptimer.com/mcp -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_TOKEN" -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | jq