This host
Public directory
Anonymous, grant-filtered, frozen projections. Public slugs, selected fields, coverage, freshness, and publication versions only.
Developer platform
Read owner-published developer profiles, activity, project stories, and selected measurements. HTTP and MCP share one public-only projection. Neither surface can reach a developer's private Seorak record.
Core flow
Owners choose the surface and fields first. Consumers can only read the resulting frozen publication.
Profile fields, activity, projects, evidence, and web/search/API/MCP grants are independent choices.
Use JSON over HTTP or the anonymous Streamable HTTP MCP resource. Both use the same public query service.
A revoke removes current reads and search membership. Delayed older deliveries cannot restore them.
Quickstart
Search text is 2 to 80 characters. Empty results are successful and mean no current API-enabled projection matched.
No bearer token grants access or is required. The directory returns only fields whose owner enabled the API surface, and search additionally requires the separate search grant.
Every response is Cache-Control: no-store.
curl -sS 'https://directory.seorak.app/v1/search?q=agentic&limit=10'Access model
A profile can appear on the web but not in API or MCP. It can permit direct API reads without appearing in search.
This host
Anonymous, grant-filtered, frozen projections. Public slugs, selected fields, coverage, freshness, and publication versions only.
Separate authority
Owner-authorized API and MCP grants live in an isolated owner cell. They use different credentials, DTOs, audiences, and routes.
Reference
JSON reads expose only the api projection. Fields are optional because each publisher controls the allowlist.
Search profiles and projects that enabled both public search and API disclosure.
qqueryrequiredSearch text, 2 to 80 characters.
limitqueryPage size from 1 to 20. Defaults to 10.
cursorqueryOpaque nextCursor from the same search surface and query.
Read one current profile projection when its public API grant is enabled.
profileSlugpathrequiredThe public profile slug.
Read the frozen activity calendar or streak fields selected for public API disclosure.
profileSlugpathrequiredThe public profile slug.
List API-enabled projects under one current profile. Search permission is not required.
profileSlugpathrequiredThe public profile slug.
limitqueryPage size from 1 to 20. Defaults to 10.
cursorqueryOpaque nextCursor from this profile's project listing.
Read one current project projection and only its selected evidence fields.
profileSlugpathrequiredThe public profile slug.
projectSlugpathrequiredThe public project slug.
{
"apiVersion": "v1",
"publicationVersion": 7,
"publishedAt": "2026-08-01T15:00:00.000Z",
"updatedAt": "2026-08-02T12:30:00.000Z",
"revokedAt": null,
"surface": "api",
"profileSlug": "ada",
"fields": {
"displayName": "Ada",
"headline": "Building careful developer tools"
}
}Agent discovery
The anonymous Streamable HTTP endpoint is /mcp/public. MCP reads the separately enabled mcp projection, not the API projection.
search_public_profilesSearch profiles that independently permit both public search discovery and MCP disclosure.
search_public_projectsSearch projects that independently permit both public search discovery and MCP disclosure.
get_public_profileGet one stored public profile projection when its MCP grant is enabled.
get_public_activityGet the frozen calendar or streak fields explicitly granted to public MCP for a profile.
get_public_projectGet one stored public project projection when its MCP grant is enabled.
list_public_profile_projectsList projects under a public profile when each project's MCP grant is enabled; search permission is not required.
{
"mcpServers": {
"seorak-public-directory": {
"type": "http",
"url": "https://directory.seorak.app/mcp/public"
}
}
}Protocol behavior
Cursors are opaque and bound to their query shape. Do not decode, construct, or reuse one for a different profile or search kind.
bad_requestA path, query, cursor, or bounded request is invalid.
not_publishedNo current projection is available to this public surface.
rate_limitedThe public read budget is exhausted. Honor Retry-After when present.
unavailableA required hosted dependency or security binding is unavailable.
Data contract
Measured values preserve coverage, freshness, availability, measurement windows, and sample sizes. Missing evidence never becomes zero.
Owner-authorized
Private integrations require explicit owner consent, least-privilege scopes, expiry, revocation, and an exact resource audience. They are never served by this directory.
The implementation is complete, but production OAuth provider configuration and remote consent verification remain release gates. This page does not advertise an unavailable sign-up flow.