Skip to content
Taskadence Developers

0.x — pre-release, no compatibility promise yet.What this means

POST/oauth/register

Register a client (RFC 7591) - how MCP clients connect without a developer account. The client is public: no secret, PKCE on every authorization. No authentication; limited per address.

Media typeapplication/json
ClientRegistrationRequest

The metadata a client sends to register itself. Unknown fields are ignored (RFC 7591 §2).

object
client_name
required
Client Name

Shown on the consent screen

string
>= 1 characters <= 100 characters
redirect_uris
required
Redirect Uris

Exact strings: https, http on a loopback host (localhost, any port), or a desktop client’s scheme (cursor, vscode, vscode-insiders, claude)

Array<string>
>= 1 items <= 10 items
token_endpoint_auth_method
Token Endpoint Auth Method

Must be none: a registered client is public and proves itself with PKCE; it never gets a secret

string
default: none
Allowed value: none
grant_types
Any of:
Array<string>
Allowed values: authorization_code refresh_token
response_types
Any of:
Array<string>
scope
Any of:
string
client_uri
Any of:
string
<= 2000 characters
logo_uri
Any of:
string
<= 2000 characters
policy_uri
Any of:
string
<= 2000 characters

Successful Response

Media typeapplication/json
ClientRegistrationResponse

Returned by oauth.register.

object
client_id
required
Client Id

Public identifier (tkdc_…). There is no client secret.

string
client_id_issued_at
required
Client Id Issued At

Unix seconds

integer
client_name
required
Client Name
string
redirect_uris
required
Redirect Uris
Array<string>
grant_types
required
Grant Types
Array<string>
response_types
required
Response Types
Array<string>
token_endpoint_auth_method
Token Endpoint Auth Method
string
default: none
Allowed value: none
scope
required
Scope

The scopes the client may ask for, space-separated

string
client_uri
Any of:
string
logo_uri
Any of:
string
policy_uri
Any of:
string

Example

{
"client_id": "tkdc_Q2x9eLr0v2Zk5n8WcHt1YpUo",
"client_id_issued_at": 1790500000,
"client_name": "Claude Code",
"grant_types": [
"authorization_code",
"refresh_token"
],
"redirect_uris": [
"http://localhost:53682/callback"
],
"response_types": [
"code"
],
"scope": "tasks:read tasks:write projects:read teams:read members:read",
"token_endpoint_auth_method": "none"
}

The metadata is refused: invalid_client_metadata or invalid_redirect_uri (RFC 7591)

Media typeapplication/json
RegistrationErrorBody

A RegistrationErrorBody object.

object
error
required
Error
string
Allowed values: invalid_client_metadata invalid_redirect_uri
error_description
Any of:
string

Example

{
"error": "invalid_client_metadata",
"error_description": "string"
}

Too many registrations from this address; wait Retry-After seconds

Media typeapplication/problem+json
Problem

An RFC 9457 problem details object - the body of every error response. detail is the human-readable explanation; request_id identifies the request for support.

object
type
required

about:blank or a urn:taskadence:problem:* identifier

string
Allowed values: about:blank urn:taskadence:problem:validation urn:taskadence:problem:invalid-parameter urn:taskadence:problem:precondition-failed urn:taskadence:problem:idempotency-key-reused urn:taskadence:problem:idempotency-key-in-flight urn:taskadence:problem:idempotency-key-invalid urn:taskadence:problem:rate-limit urn:taskadence:problem:internal urn:taskadence:problem:token-invalid urn:taskadence:problem:token-expired urn:taskadence:problem:token-revoked urn:taskadence:problem:insufficient-scope urn:taskadence:problem:test-token-read-only urn:taskadence:problem:token-policy urn:taskadence:problem:url-refused urn:taskadence:problem:mfa-required urn:taskadence:problem:email-unverified urn:taskadence:problem:upload-too-large urn:taskadence:problem:upload-type-not-allowed urn:taskadence:problem:upload-type-mismatch urn:taskadence:problem:upload-rejected
title
required
string
status
required
integer
detail
required

Human-readable explanation (a string; for a 422, the list of validation errors)

instance
required
string
request_id
required
string
errors

Structured failures: validation errors, or {loc, msg, allowed} for a bad parameter

Array<object>
object
mfa

On an mfa-required problem only: enrolled (does the person have an authenticator app set up), required_for (all or admins) and reason (org_policy: the organization’s requirement; step_up: this action needs a second step)

object
enrolled
boolean
required_for
string
Allowed values: all admins
reason
string
Allowed values: org_policy step_up

Example

{
"type": "about:blank",
"title": "Forbidden",
"status": 403,
"detail": "This task is restricted to other users",
"instance": "/v1/tasks/T123",
"request_id": "9b2f1c1e-8c1a-4a53-9f9e-0f5f1f2d7c11",
"errors": [
{}
],
"mfa": {
"enrolled": false,
"required_for": "all",
"reason": "org_policy"
}
}

Registration is closed for now (too many registered clients)

Media typeapplication/problem+json
Problem

An RFC 9457 problem details object - the body of every error response. detail is the human-readable explanation; request_id identifies the request for support.

object
type
required

about:blank or a urn:taskadence:problem:* identifier

string
Allowed values: about:blank urn:taskadence:problem:validation urn:taskadence:problem:invalid-parameter urn:taskadence:problem:precondition-failed urn:taskadence:problem:idempotency-key-reused urn:taskadence:problem:idempotency-key-in-flight urn:taskadence:problem:idempotency-key-invalid urn:taskadence:problem:rate-limit urn:taskadence:problem:internal urn:taskadence:problem:token-invalid urn:taskadence:problem:token-expired urn:taskadence:problem:token-revoked urn:taskadence:problem:insufficient-scope urn:taskadence:problem:test-token-read-only urn:taskadence:problem:token-policy urn:taskadence:problem:url-refused urn:taskadence:problem:mfa-required urn:taskadence:problem:email-unverified urn:taskadence:problem:upload-too-large urn:taskadence:problem:upload-type-not-allowed urn:taskadence:problem:upload-type-mismatch urn:taskadence:problem:upload-rejected
title
required
string
status
required
integer
detail
required

Human-readable explanation (a string; for a 422, the list of validation errors)

instance
required
string
request_id
required
string
errors

Structured failures: validation errors, or {loc, msg, allowed} for a bad parameter

Array<object>
object
mfa

On an mfa-required problem only: enrolled (does the person have an authenticator app set up), required_for (all or admins) and reason (org_policy: the organization’s requirement; step_up: this action needs a second step)

object
enrolled
boolean
required_for
string
Allowed values: all admins
reason
string
Allowed values: org_policy step_up

Example

{
"type": "about:blank",
"title": "Forbidden",
"status": 403,
"detail": "This task is restricted to other users",
"instance": "/v1/tasks/T123",
"request_id": "9b2f1c1e-8c1a-4a53-9f9e-0f5f1f2d7c11",
"errors": [
{}
],
"mfa": {
"enrolled": false,
"required_for": "all",
"reason": "org_policy"
}
}