DoubleTime LogoDoubleTime Logo
Docs
/
OAuth apps and permissions

Developers

OAuth Apps & Permissions

Use OAuth 2.0 to give apps scoped access to the DoubleTime REST API and MCP server.

REST API
MCP server
OAuth apps
chevron_leftchevron_right

On this page

  • Connection details
  • OAuth endpoints
  • Authorization flow
  • Client types
  • Resources
  • Scope dependencies
  • Next steps

Connection details

OAuth clients use the issuer for discovery and request either the API or MCP resource.

Issuer
https://doubletime.io

OAuth metadata, authorization, token, revoke, and registration endpoints are relative to this issuer.

Protocol support

  • OAuth 2.0 authorization code flow
  • PKCE with S256 code challenges
  • Authorization code; refresh token where enabled
  • Bearer access tokens for API and MCP requests

Client authentication

  • No client secret for public clients using PKCE
  • Client secret with basic authentication for confidential clients
  • Client secret in the request body when basic authentication is not practical

OAuth endpoints

Every endpoint is relative to the issuer above.

EndpointUse
/.well-known/oauth-authorization-serverAuthorization server metadata for discovery.
/.well-known/oauth-protected-resourceProtected resource metadata for clients that discover available authorization servers.
/oauth/authorizeStarts the authorization code with PKCE flow and shows the DoubleTime approval screen.
/oauth/tokenExchanges an authorization code or refresh token for an access token.
/oauth/revokeRevokes access or refresh tokens.
/oauth/registerDynamic client registration for MCP clients. Developer API clients are created in DoubleTime.

Authorization code with PKCE

  1. Developer clients are registered with redirect URIs, resources, scopes, and a public or confidential client type.
  2. Authorization requests use response_type=code, client_id, redirect_uri, scope, resource, state, code_challenge, and code_challenge_method=S256.
  3. DoubleTime authenticates the user, displays the consent screen, and records the approved resources and scopes.
  4. The token endpoint exchanges the returned code for an access token using the same redirect URI and PKCE verifier.
  5. REST API and MCP calls use Authorization: Bearer <access_token> until the token expires or is revoked.

Client types

Public clients

Use PKCE and no client secret. This is the right model for browser, desktop, CLI, and mobile clients.

Confidential clients

Use a client secret when the integration has a trusted server that can keep secrets private.

MCP clients

OAuth-capable MCP clients can dynamically register for the MCP resource and request MCP-safe scopes.

Resources

OAuth requests should target the resource the integration will call. API and MCP scopes are separate so an AI client does not automatically receive API settings access.

REST API
https://doubletime.io/api

Use for custom apps and private scripts.

Includes profile, billing, tasks, time, clients, projects, tags, rules, invoices, expenses, reports, and settings scopes.

MCP server
https://doubletime.io/mcp

Use for AI clients. settings:read and settings:write are not available to MCP clients.

Includes mcp plus profile, billing, tasks, time, clients, projects, tags, rules, invoices, expenses, and reports scopes.

Scope dependencies

When an app requests a write or send scope, DoubleTime also requires the matching read scope.

RuleRequestedRequiredApplies to
Write scopes Write access always depends on read access for the same scope family. For example, expenses:write also requires expenses:read.<scope-family>:write<scope-family>:readtaskstimeclientsprojectstagsrulesinvoicesexpensessettings
Invoice sending Sending an invoice also depends on invoice read access. An app that sends invoices must also be able to read the invoice being sent.invoices:sendinvoices:readinvoices

Next steps

After an app is connected, review approved access in DoubleTime or continue to the API and MCP references for implementation details.

Review and revoke

  • Connected apps show approved OAuth clients and MCP clients for the signed-in account.
  • Revoking a grant invalidates that client access for the account.
  • Rotating a confidential client secret should be followed by updating the private integration that uses it.
  • If an app asks for more scopes than it needs, deny the request and reconfigure the client.

Related docs

Use the API docs for endpoint families, or the MCP docs for AI tool setup and tool names.

REST API docsarrow_right_altMCP docsarrow_right_alt

Register your app.

Create an OAuth app for your own integration or AI agent, then let users connect it to DoubleTime.

Use OAuth when your app needs a clean connection flow.

DoubleTime LogoDoubleTime Logo

Client work should end in an invoice.

DoubleTime helps solo billers keep work, rates, and invoices connected.

Built by 0x234, an independent software company.

LinkedIn logoX logoX logo
Product
keyboard_arrow_down
  • Billing hub
  • How it works
  • Pricing
  • FAQ
  • Docs


Company
keyboard_arrow_down
  • Blog
  • About
  • Contact


Legal
keyboard_arrow_down
  • Privacy
  • Terms



© DoubleTime. Built to help client work become billable revenue.