TimeTrack is designed to fit into your stack. Connect with payment processors, auth providers, AI assistants, and your own tools via webhooks or the REST API.
TimeTrack uses Stripe for subscription billing. The integration supports checkout, customer portal, and webhook-driven subscription management.
.env filehttps://api.timetracker.cargoffer.com/api/v1/billing/webhookSTRIPE_WEBHOOK_SECRET in your envGET /api/v1/billing/plans - List available plansPOST /api/v1/billing/create-checkout-session - Start subscription checkoutPOST /api/v1/billing/create-portal-session - Open customer portalGET /api/v1/billing/subscription - Current subscription statusPOST /api/v1/billing/webhook - Stripe webhook receiverFor development, use Stripe test keys and the Stripe CLI to forward webhooks:
stripe listen --forward-to localhost:8017/api/v1/billing/webhook
TimeTrack uses Clerk for user authentication. Clerk provides social login, MFA, session management, and JWT-based API authentication.
CLERK_JWKS_URL for JWT verificationThe React frontend uses Clerk's React SDK:
import {{ ClerkProvider }} from '@clerk/clerk-react'
function App() {{
return (
<ClerkProvider publishableKey={{import.meta.env.VITE_CLERK_PUBLISHABLE_KEY}}>
{{/* Your app */}}
</ClerkProvider>
)
}}
All authenticated endpoints verify the JWT signature using Clerk's JWKS endpoint. Tokens expire automatically; refresh is handled by the Clerk SDK.
TimeTrack provides a built-in Model Context Protocol server, enabling AI assistants like Claude and ChatGPT to interact with your time tracking data.
MCP is an open protocol that lets AI assistants call tools and access resources. TimeTrack's MCP server exposes time tracking operations as tools that any MCP-compatible client can invoke.
The MCP server runs on SSE transport:
https://mcp.timetracker.cargoffer.com (SSE on port 8000)
| Tool | Description |
|---|---|
start_timer | Start a timer for a project/task with optional description |
stop_timer | Stop the currently active timer |
get_active_timer | Check if there's an active timer |
log_hours | Create a manual time entry for past work |
list_projects | List all accessible projects |
create_project | Create a new project |
list_clients | List all clients |
create_client | Create a new client |
get_report | Generate a time report (today, week, month, custom range) |
get_dashboard | Get dashboard summary |
Add to your claude_desktop_config.json:
{{
"mcpServers": {{
"timetrack": {{
"url": "https://mcp.timetracker.cargoffer.com/sse",
"transport": "sse",
"headers": {{
"Authorization": "Bearer YOUR_CLERK_JWT"
}}
}}
}}
}}
Once connected, you can ask your AI assistant:
For any custom integration, use the REST API directly. See the complete API reference for all 79 endpoints.
Two options:
| Plan | Req/min | Req/day |
|---|---|---|
| Free | 60 | 1,000 |
| Pro | 300 | 50,000 |
| Enterprise | Custom | Custom |
You can generate a client SDK from the OpenAPI spec:
# TypeScript / JavaScript
npx @openapitools/openapi-generator-cli generate \
-i https://docs.timetracker.cargoffer.com/api/openapi.json \
-g typescript-axios \
-o ./timetrack-sdk
# Python
openapi-python-client generate \
--path https://docs.timetracker.cargoffer.com/api/openapi.json \
--output-path ./timetrack-sdk
# Go
openapi-generator generate \
-i https://docs.timetracker.cargoffer.com/api/openapi.json \
-g go \
-o ./timetrack-sdk
Webhook support for time entry events, project updates, and billing events is on the roadmap. Subscribe to receive notifications when:
Import the OpenAPI spec directly:
https://docs.timetracker.cargoffer.com/api/openapi.jsonhttps://docs.timetracker.cargoffer.com/api/openapi.json