Marketplace
Browse, publish, install and rate agents, skills, personas, prompts, templates and tools.
Browse, publish, install and rate agents, skills, personas, prompts, templates and tools. Each listing has a validated manifest the router can load; `GET /registry/{slug}/manifest` is what `registry://` references resolve to.
get/api/v1/me/installs
My Installs
Requires an API key.
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
| 401 | Missing, invalid or revoked API key |
curl -s "$OSR_URL/api/v1/me/installs" \
-H "Authorization: Bearer $OSR_API_KEY"get/api/v1/me/listings
My Listings
Requires an API key.
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
| 401 | Missing, invalid or revoked API key |
curl -s "$OSR_URL/api/v1/me/listings" \
-H "Authorization: Bearer $OSR_API_KEY"get/api/v1/registry
Search
No authentication.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| q | query | string | "" | |
| kind | query | string | null | ||
| tag | query | string | null | ||
| price | query | string | null | ||
| featured | query | boolean | null | ||
| sort | query | string | "popular" | |
| limit | query | integer | 24 | |
| offset | query | integer | 0 |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
curl -s "$OSR_URL/api/v1/registry?q=&sort=popular"post/api/v1/registry
Create
Requires an API key.
Request bodyListingIn
| Field | Type | Default | Description |
|---|---|---|---|
| domains | string[] | ||
| kind(required) | string | ||
| license | string | "Apache-2.0" | |
| manifest | object | ||
| name(required) | string | ||
| price_usd | number | 0 | |
| readme | string | "" | |
| slug | string | null | ||
| submit | boolean | false | |
| summary | string | "" | |
| tags | string[] | ||
| version | string | "1.0.0" |
Responses
| 201 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
| 401 | Missing, invalid or revoked API key |
curl -s -X POST "$OSR_URL/api/v1/registry" \
-H "Authorization: Bearer $OSR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "kind": "string", "name": "default" }'{
"kind": "string",
"name": "default"
}get/api/v1/registry/kinds
Kinds
No authentication.
Responses
| 200 | Successful Response |
curl -s "$OSR_URL/api/v1/registry/kinds"get/api/v1/registry/{slug}
Get Listing
Requires an API key.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| slug(required) | path | string |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
| 401 | Missing, invalid or revoked API key |
curl -s "$OSR_URL/api/v1/registry/<slug>" \
-H "Authorization: Bearer $OSR_API_KEY"patch/api/v1/registry/{slug}
Patch
Requires an API key.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| slug(required) | path | string |
Request bodyListingPatch
| Field | Type | Default | Description |
|---|---|---|---|
| domains | string[] | null | ||
| license | string | null | ||
| manifest | object | null | ||
| name | string | null | ||
| price_usd | number | null | ||
| readme | string | null | ||
| summary | string | null | ||
| tags | string[] | null |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
| 401 | Missing, invalid or revoked API key |
curl -s -X PATCH "$OSR_URL/api/v1/registry/<slug>" \
-H "Authorization: Bearer $OSR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "domains": [], "license": "string", "manifest": {}, "name": "default", "price_usd": 0.5, "readme": "string", "summary": "string", "tags": [] }'{
"domains": [],
"license": "string",
"manifest": {},
"name": "default",
"price_usd": 0.5,
"readme": "string",
"summary": "string",
"tags": []
}post/api/v1/registry/{slug}/archive
Archive
Requires an API key.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| slug(required) | path | string |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
| 401 | Missing, invalid or revoked API key |
curl -s -X POST "$OSR_URL/api/v1/registry/<slug>/archive" \
-H "Authorization: Bearer $OSR_API_KEY"post/api/v1/registry/{slug}/install
Install
Requires an API key.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| slug(required) | path | string |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
| 401 | Missing, invalid or revoked API key |
curl -s -X POST "$OSR_URL/api/v1/registry/<slug>/install" \
-H "Authorization: Bearer $OSR_API_KEY"get/api/v1/registry/{slug}/manifest
Manifest
No authentication.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| slug(required) | path | string | ||
| version | query | string | null |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
curl -s "$OSR_URL/api/v1/registry/<slug>/manifest"get/api/v1/registry/{slug}/reviews
Reviews
No authentication.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| slug(required) | path | string |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
curl -s "$OSR_URL/api/v1/registry/<slug>/reviews"put/api/v1/registry/{slug}/reviews
Review
Requires an API key.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| slug(required) | path | string |
Request bodyReviewIn
| Field | Type | Default | Description |
|---|---|---|---|
| body | string | "" | |
| rating(required) | integer | ||
| title | string | "" |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
| 401 | Missing, invalid or revoked API key |
curl -s -X PUT "$OSR_URL/api/v1/registry/<slug>/reviews" \
-H "Authorization: Bearer $OSR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "rating": 1 }'{
"rating": 1
}delete/api/v1/registry/{slug}/reviews
Delete Review
Requires an API key.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| slug(required) | path | string |
Responses
| 204 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
| 401 | Missing, invalid or revoked API key |
curl -s -X DELETE "$OSR_URL/api/v1/registry/<slug>/reviews" \
-H "Authorization: Bearer $OSR_API_KEY"post/api/v1/registry/{slug}/submit
Submit
Requires an API key.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| slug(required) | path | string |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
| 401 | Missing, invalid or revoked API key |
curl -s -X POST "$OSR_URL/api/v1/registry/<slug>/submit" \
-H "Authorization: Bearer $OSR_API_KEY"post/api/v1/registry/{slug}/unarchive
Unarchive
Requires an API key.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| slug(required) | path | string |
Responses
| 200 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
| 401 | Missing, invalid or revoked API key |
curl -s -X POST "$OSR_URL/api/v1/registry/<slug>/unarchive" \
-H "Authorization: Bearer $OSR_API_KEY"post/api/v1/registry/{slug}/versions
Add Version
Requires an API key.
Parameters
| Name | In | Type | Default | Description |
|---|---|---|---|---|
| slug(required) | path | string |
Request bodyVersionIn
| Field | Type | Default | Description |
|---|---|---|---|
| changelog | string | "" | |
| manifest(required) | object | ||
| version(required) | string |
Responses
| 201 | Successful Response |
| 422 | Validation ErrorHTTPValidationError |
| 401 | Missing, invalid or revoked API key |
curl -s -X POST "$OSR_URL/api/v1/registry/<slug>/versions" \
-H "Authorization: Bearer $OSR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "manifest": {}, "version": "string" }'{
"manifest": {},
"version": "string"
}MCP server
Model Context Protocol server for IDEs and agents (VS Code, Cursor, Claude, Windsurf): `POST /mcp` speaks JSON-RPC with tools to route, quote, recommend, explain and ask; `GET /mcp` describes it.
Model providers
Model providers: `GET /providers` is the public, OpenRouter-style view of what this deployment executes on (provider, upstream model, prices, health per executable target - never credentials); the `/admin/providers` endpoints add, check and map OpenAI-compatible endpoints at run time, and every API replica picks the change up without a restart.