---
title: "Oauth Dynamic Client Register"
method: POST
path: "/oauth/register"
---

# Oauth Dynamic Client Register

`POST /oauth/register`

## Request

- Base URL: `https://api.storyflo.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.storyflo.com/oauth/register`
- Auth: none declared

RFC 7591 Dynamic Client Registration. Returns a fresh client_id
(and a client_secret only when token_endpoint_auth_method is NOT
'none') so MCP clients can complete OAuth without prior coordination.

L1 monetization attribution (2026-06-13): the registration captures
where the agent came from so the operator can rank MCP-directory
distribution effort. Priority: ``?source=<slug>`` query param (when
a directory installs us with explicit attribution) → ``Origin``
header → ``Referer`` header → ``direct``/``unknown`` fallback. See
``app/oauth_discovery_source.py`` for the canonical slug allowlist.

## Query parameters

- `source` string, nullable

## Request body

- DCRRequest: RFC 7591 client metadata. We accept the well-defined fields and silently ignore anything else (RFC 7591 §2 requires forward-compat).
  - `client_name` string, nullable
  - `redirect_uris` string[]
  - `grant_types` string[]
  - `response_types` string[]
  - `scope` string, nullable
  - `token_endpoint_auth_method` string, nullable
  - `contacts` string[], nullable
  - `client_uri` string, nullable
  - `logo_uri` string, nullable
  - `tos_uri` string, nullable
  - `policy_uri` string, nullable
  - `software_id` string, nullable
  - `software_version` string, nullable

## Response `201`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/storyflo/apis/storyflo-inference-router.md) · [All operations](https://skmtc.dev/storyflo/apis/storyflo-inference-router/llms.txt) · [OpenAPI document](https://skmtc.dev/storyflo/apis/storyflo-inference-router/revisions/c3a1a735ac7a?raw)
