playerthree/mcp

playerthree/mcp: the remote MCP binding (Streamable HTTP endpoint), its tool surface, observation paging and the OAuth 2.1 authorization server.

Interfaces

AuthorizationServer

Defined in: packages/playerthree/src/mcp/oauth/server.ts:156

The authorization server: its metadata URLs, request handling and the owner-side connection and consent operations.

Properties

PropertyModifierTypeDescriptionDefined in
issuerreadonlystring-packages/playerthree/src/mcp/oauth/server.ts:157
readyreadonlyPromise<void>Resolves once the store has loaded.packages/playerthree/src/mcp/oauth/server.ts:162
resourcereadonlystringThe MCP endpoint URL tokens are bound to.packages/playerthree/src/mcp/oauth/server.ts:159
resourceMetadataUrlreadonlystring-packages/playerthree/src/mcp/oauth/server.ts:160

Methods

allConnections()
allConnections(): OwnedConnectionStatus[];

Defined in: packages/playerthree/src/mcp/oauth/server.ts:174

Every owner's connections, oldest first. For operator tooling (the operator console); never show it to players.

Returns

OwnedConnectionStatus[]

challenge()
challenge(invalid, request?): string;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:186

WWW-Authenticate value for a 401 (invalid: a token was presented but is not valid), for the request's origin.

Parameters
ParameterType
invalidboolean
request?Request
Returns

string

close()
close(): void;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:187

Returns

void

connections()
connections(owner): ConnectionStatus[];

Defined in: packages/playerthree/src/mcp/oauth/server.ts:172

Parameters
ParameterType
ownerstring
Returns

ConnectionStatus[]

consentRequest()
consentRequest(id): ConsentRequest | undefined;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:169

Parameters
ParameterType
idstring
Returns

ConsentRequest | undefined

fetch()
fetch(request): Promise<Response | undefined>;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:168

Web-standard face: a Response for authorization server paths, else undefined.

Parameters
ParameterType
requestRequest
Returns

Promise<Response | undefined>

handle()
handle(req, res): Promise<boolean>;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:166

node:http face: answers and returns true for authorization server paths, else returns false untouched.

Parameters
ParameterType
reqIncomingMessage
resServerResponse
Returns

Promise<boolean>

handles()
handles(pathname): boolean;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:164

Whether a pathname belongs to the authorization server (/.well-known/oauth-*, /oauth/*).

Parameters
ParameterType
pathnamestring
Returns

boolean

onChange()
onChange(listener): () => void;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:184

Connection credential or role changes. Listeners receive identifiers only, never tokens.

Parameters
ParameterType
listener(connection) => void
Returns

() => void

removeOwner()
removeOwner(owner): void;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:180

Revokes every connection of an owner.

Parameters
ParameterType
ownerstring
Returns

void

resolveConsent()
resolveConsent(id, answer): object;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:171

Answers a pending request (single use). Throws PlayerThreeError('invalid') for unknown/expired ids, owners or roles.

Parameters
ParameterType
idstring
answerConsentDecision
Returns

object

NameTypeDefined in
redirectstringpackages/playerthree/src/mcp/oauth/server.ts:171
revokeConnection()
revokeConnection(owner, id): void;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:178

Revokes a connection and every token of it at once. Throws PlayerThreeError('invalid') for unknown ids.

Parameters
ParameterType
ownerstring
idstring
Returns

void

updateConnection()
updateConnection(
   owner, 
   id, 
   patch
): ConnectionStatus;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:176

Sets this exact commander's granted compatible roles without modifying other connections.

Parameters
ParameterType
ownerstring
idstring
patch{ roles: readonly string[]; }
patch.rolesreadonly string[]
Returns

ConnectionStatus

verify()
verify(token): OAuthGrant | undefined;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:182

Resource-server side: an access token issued for this endpoint (under any of its origins), or undefined.

Parameters
ParameterType
tokenstring
Returns

OAuthGrant | undefined


AuthorizationServerOptions

Defined in: packages/playerthree/src/mcp/oauth/server.ts:72

Options of createAuthorizationServer.

Properties

PropertyTypeDescriptionDefined in
accessTokenSeconds?numberAccess token lifetime (default 3600).packages/playerthree/src/mcp/oauth/server.ts:92
aliases?readonly (string | URL)[]Other origins the same server is reached at (e.g. in development both the Vite dev server and the game server). Metadata, challenges, iss and the tokens' audience follow the origin a request came in on (the Host or X-Forwarded-Host header, honoured only when it names one of these origins); anything else gets issuer. The consent page is always on issuer.packages/playerthree/src/mcp/oauth/server.ts:81
allowLoopbackClients?booleanDevelopment only: accept http://localhost… Client ID Metadata Document URLs.packages/playerthree/src/mcp/oauth/server.ts:90
dataDir?string-packages/playerthree/src/mcp/oauth/server.ts:88
issuerstring | URLPublic origin of the game server (the issuer), e.g. https://game.example. No path.packages/playerthree/src/mcp/oauth/server.ts:74
mcpPath?stringPathname of the MCP endpoint (default /mcp). The tokens' audience is issuer + mcpPath.packages/playerthree/src/mcp/oauth/server.ts:83
onError?(error) => void-packages/playerthree/src/mcp/oauth/server.ts:97
refreshTokenSeconds?numberRefresh token lifetime, renewed on every rotation (default 30 days).packages/playerthree/src/mcp/oauth/server.ts:94
resourceName?stringHuman-readable resource name in the protected resource metadata (default: the game title).packages/playerthree/src/mcp/oauth/server.ts:96
store?ConnectionStoreConnection storage (default: JSON files under dataDir/oauth/<game id>, else in memory).packages/playerthree/src/mcp/oauth/server.ts:87

Methods

consentUrl()
consentUrl(requestId): string;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:85

The game's consent page for a pending request (absolute URL, or a path on the issuer).

Parameters
ParameterType
requestIdstring
Returns

string


CimdOptions

Defined in: packages/playerthree/src/mcp/oauth/cimd.ts:44

Properties

PropertyTypeDescriptionDefined in
allowLoopback?booleanDevelopment only: accept http:// client ids on loopback hosts and loopback addresses.packages/playerthree/src/mcp/oauth/cimd.ts:46
maxBytes?number-packages/playerthree/src/mcp/oauth/cimd.ts:48
timeoutMs?number-packages/playerthree/src/mcp/oauth/cimd.ts:47

ConnectionStatus

Defined in: packages/playerthree/src/mcp/oauth/server.ts:101

A connection as the game shows it to its owner.

Extended by

Properties

PropertyTypeDescriptionDefined in
activebooleanA call in the last 30 s, or a call in flight (e.g. blocked in game_wait).packages/playerthree/src/mcp/oauth/server.ts:111
authorizedAtnumberLast consent (sign-in) for this connection: a repeat sign-in from the same client updates it.packages/playerthree/src/mcp/oauth/server.ts:108
clientOAuthClientInfo-packages/playerthree/src/mcp/oauth/server.ts:104
commanderstring-packages/playerthree/src/mcp/oauth/server.ts:103
createdAtnumber-packages/playerthree/src/mcp/oauth/server.ts:106
idstring-packages/playerthree/src/mcp/oauth/server.ts:102
lastSeenAtnumber | null-packages/playerthree/src/mcp/oauth/server.ts:109
rolesstring[]-packages/playerthree/src/mcp/oauth/server.ts:105

ConnectionStore

Defined in: packages/playerthree/src/mcp/oauth/store.ts:72

Every method may be sync or async; writes are issued in order.

Methods

deleteClient()
deleteClient(id): void | Promise<void>;

Defined in: packages/playerthree/src/mcp/oauth/store.ts:77

Parameters
ParameterType
idstring
Returns

void | Promise<void>

deleteConnection()
deleteConnection(id): void | Promise<void>;

Defined in: packages/playerthree/src/mcp/oauth/store.ts:75

Parameters
ParameterType
idstring
Returns

void | Promise<void>

load()
load(): 
  | ConnectionStoreData
| Promise<ConnectionStoreData>;

Defined in: packages/playerthree/src/mcp/oauth/store.ts:73

Returns

| ConnectionStoreData | Promise<ConnectionStoreData>

saveClient()
saveClient(client): void | Promise<void>;

Defined in: packages/playerthree/src/mcp/oauth/store.ts:76

Parameters
ParameterType
clientStoredClient
Returns

void | Promise<void>

saveConnection()
saveConnection(connection): void | Promise<void>;

Defined in: packages/playerthree/src/mcp/oauth/store.ts:74

Parameters
ParameterType
connectionStoredConnection
Returns

void | Promise<void>


ConnectionStoreData

Defined in: packages/playerthree/src/mcp/oauth/store.ts:66

Properties


ConsentDecision

Defined in: packages/playerthree/src/mcp/oauth/server.ts:132

Properties

PropertyTypeDescriptionDefined in
approveboolean-packages/playerthree/src/mcp/oauth/server.ts:139
commanderstringExact named commander selected by the authenticated owner.packages/playerthree/src/mcp/oauth/server.ts:136
ownerstringThe game's authenticated player id (OWNER_RE), with an existing commander roster.packages/playerthree/src/mcp/oauth/server.ts:134
rolesreadonly string[]Roles to grant (at least one when approving).packages/playerthree/src/mcp/oauth/server.ts:138

ConsentEvent

Defined in: packages/playerthree/src/mcp/server.ts:42

playerthree/mcp: the remote MCP binding (Streamable HTTP endpoint), its tool surface, observation paging and the OAuth 2.1 authorization server.

Properties

PropertyTypeDescriptionDefined in
grantedboolean-packages/playerthree/src/mcp/server.ts:52
matchstringEmpty for a commander token (it is not bound to one match).packages/playerthree/src/mcp/server.ts:44
owner?stringCommander tokens: the roster owner id the game registered.packages/playerthree/src/mcp/server.ts:49
rolestring-packages/playerthree/src/mcp/server.ts:47
teamstringEmpty for a commander token.packages/playerthree/src/mcp/server.ts:46
via"elicitation" | "implicit"elicitation: the human answered the consent form. implicit: the client cannot elicit; adding the server with the token is the consent.packages/playerthree/src/mcp/server.ts:51

ConsentRequest

Defined in: packages/playerthree/src/mcp/oauth/server.ts:120

What the game's consent page shows.

Properties

PropertyTypeDescriptionDefined in
clientOAuthClientInfo-packages/playerthree/src/mcp/oauth/server.ts:122
domain?stringHost of a metadata-document client_id: the document was served from there (verified). Absent for DCR clients (self-asserted).packages/playerthree/src/mcp/oauth/server.ts:124
expiresAtnumber-packages/playerthree/src/mcp/oauth/server.ts:129
idstring-packages/playerthree/src/mcp/oauth/server.ts:121
redirectobjectWhere the browser returns after the answer. MCP: the page MUST show the host; warn when it is loopback only.packages/playerthree/src/mcp/oauth/server.ts:126
redirect.hoststring-packages/playerthree/src/mcp/oauth/server.ts:126
redirect.loopbackboolean-packages/playerthree/src/mcp/oauth/server.ts:126
redirect.uristring-packages/playerthree/src/mcp/oauth/server.ts:126
rolesstring[]Roles the owner can grant (every manifest role).packages/playerthree/src/mcp/oauth/server.ts:128

McpOptions

Defined in: packages/playerthree/src/mcp/server.ts:56

Options of the MCP endpoint.

Extended by

Properties

PropertyTypeDescriptionDefined in
allowedOrigins?readonly string[]Exact Origin values allowed to call the endpoint (DNS-rebinding protection). Requests carrying any other Origin are rejected with 403. Non-browser MCP clients send no Origin. Default: none.packages/playerthree/src/mcp/server.ts:61
auth?AuthorizationServerThe OAuth authorization server (createAuthorizationServer): its access tokens authenticate OAuth connections (one named commander + compatible role grants), and 401s carry its challenge. Seat/commander tokens keep working next to it.packages/playerthree/src/mcp/server.ts:67
onConsent?(event) => voidObserve consent decisions (e.g. to log them or show them in the owner's UI).packages/playerthree/src/mcp/server.ts:69
onError?(error) => voidOut-of-band errors (SDK errors, internal failures). Never forwarded to agents.packages/playerthree/src/mcp/server.ts:71

McpRequestHandler()

Defined in: packages/playerthree/src/mcp/server.ts:75

The MCP endpoint as a request handler with a node:http face and a web-standard fetch face.

McpRequestHandler(req, res): Promise<void>;

Defined in: packages/playerthree/src/mcp/server.ts:77

node:http face: fully handles the response. Does not check the path — route before calling.

Parameters

ParameterType
reqIncomingMessage
resServerResponse

Returns

Promise<void>

Properties

PropertyModifierTypeDefined in
surfaceHashreadonlystringpackages/playerthree/src/mcp/server.ts:82

Methods

close()
close(): Promise<void>;

Defined in: packages/playerthree/src/mcp/server.ts:81

Aborts in-flight exchanges.

Returns

Promise<void>

fetch()
fetch(request): Promise<Response>;

Defined in: packages/playerthree/src/mcp/server.ts:79

Web-standard face.

Parameters
ParameterType
requestRequest
Returns

Promise<Response>


MountMcpOptions

Defined in: packages/playerthree/src/mcp/server.ts:1006

playerthree/mcp: the remote MCP binding (Streamable HTTP endpoint), its tool surface, observation paging and the OAuth 2.1 authorization server.

Extends

Properties

PropertyTypeDescriptionInherited fromDefined in
allowedOrigins?readonly string[]Exact Origin values allowed to call the endpoint (DNS-rebinding protection). Requests carrying any other Origin are rejected with 403. Non-browser MCP clients send no Origin. Default: none.McpOptions.allowedOriginspackages/playerthree/src/mcp/server.ts:61
auth?AuthorizationServerThe OAuth authorization server (createAuthorizationServer): its access tokens authenticate OAuth connections (one named commander + compatible role grants), and 401s carry its challenge. Seat/commander tokens keep working next to it.McpOptions.authpackages/playerthree/src/mcp/server.ts:67
onConsent?(event) => voidObserve consent decisions (e.g. to log them or show them in the owner's UI).McpOptions.onConsentpackages/playerthree/src/mcp/server.ts:69
onError?(error) => voidOut-of-band errors (SDK errors, internal failures). Never forwarded to agents.McpOptions.onErrorpackages/playerthree/src/mcp/server.ts:71
path?stringDefault /mcp. Matched exactly against the request pathname.-packages/playerthree/src/mcp/server.ts:1008

OAuthClientInfo

Defined in: packages/playerthree/src/mcp/oauth/store.ts:13

Client metadata as the authorization server validated it. Self-asserted for dcr; cimd is served by id's host.

Extended by

Properties

PropertyTypeDescriptionDefined in
idstringThe OAuth client_id: the metadata document URL (cimd) or the id this server issued (dcr).packages/playerthree/src/mcp/oauth/store.ts:15
logoUri?string-packages/playerthree/src/mcp/oauth/store.ts:20
namestringclient_name, control characters removed, at most 100 characters.packages/playerthree/src/mcp/oauth/store.ts:18
registrationClientRegistration-packages/playerthree/src/mcp/oauth/store.ts:16
softwareId?string-packages/playerthree/src/mcp/oauth/store.ts:21
softwareVersion?string-packages/playerthree/src/mcp/oauth/store.ts:22
uri?string-packages/playerthree/src/mcp/oauth/store.ts:19

OAuthGrant

Defined in: packages/playerthree/src/mcp/oauth/server.ts:143

An authenticated OAuth access token, as the MCP binding uses it. Everything is read live.

Properties

PropertyModifierTypeDefined in
commanderreadonlystringpackages/playerthree/src/mcp/oauth/server.ts:146
connectionreadonlystringpackages/playerthree/src/mcp/oauth/server.ts:144
ownerreadonlystringpackages/playerthree/src/mcp/oauth/server.ts:145

Methods

activity()
activity(delta): void;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:152

Marks activity; +1/-1 around calls in flight.

Parameters
ParameterType
delta-1 | 0 | 1
Returns

void

holds()
holds(role): boolean;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:150

The connection still exists and holds role.

Parameters
ParameterType
rolestring
Returns

boolean

roles()
roles(): readonly string[];

Defined in: packages/playerthree/src/mcp/oauth/server.ts:148

Current roles (edits apply to the next call).

Returns

readonly string[]


ObservationPage

Defined in: packages/playerthree/src/mcp/paging.ts:10

One page: a partial observation, plus [from, to) item ranges (of of) of the lists it holds only part of.

Properties

PropertyTypeDefined in
items?Record<string, { from: number; of: number; to: number; }>packages/playerthree/src/mcp/paging.ts:12
observationRecord<string, unknown>packages/playerthree/src/mcp/paging.ts:11

OwnedConnectionStatus

Defined in: packages/playerthree/src/mcp/oauth/server.ts:115

A connection with its owner, as the operator console lists them across owners.

Extends

Properties


StoredClient

Defined in: packages/playerthree/src/mcp/oauth/store.ts:58

A client registered through POST /oauth/register (RFC 7591).

Extends

Properties

PropertyTypeDescriptionOverridesInherited fromDefined in
createdAtnumber---packages/playerthree/src/mcp/oauth/store.ts:61
idstringThe OAuth client_id: the metadata document URL (cimd) or the id this server issued (dcr).-OAuthClientInfo.idpackages/playerthree/src/mcp/oauth/store.ts:15
lastUsedAtnumber | nullLast authorization or token request (ms since epoch), or null.--packages/playerthree/src/mcp/oauth/store.ts:63
logoUri?string--OAuthClientInfo.logoUripackages/playerthree/src/mcp/oauth/store.ts:20
namestringclient_name, control characters removed, at most 100 characters.-OAuthClientInfo.namepackages/playerthree/src/mcp/oauth/store.ts:18
redirectUrisstring[]---packages/playerthree/src/mcp/oauth/store.ts:60
registration"dcr"-OAuthClientInfo.registration-packages/playerthree/src/mcp/oauth/store.ts:59
softwareId?string--OAuthClientInfo.softwareIdpackages/playerthree/src/mcp/oauth/store.ts:21
softwareVersion?string--OAuthClientInfo.softwareVersionpackages/playerthree/src/mcp/oauth/store.ts:22
uri?string--OAuthClientInfo.uripackages/playerthree/src/mcp/oauth/store.ts:19

StoredConnection

Defined in: packages/playerthree/src/mcp/oauth/store.ts:32

Properties

PropertyTypeDescriptionDefined in
accessStoredTokenDigest[]Live access tokens (newest last).packages/playerthree/src/mcp/oauth/store.ts:54
authorizedAtnumberLast consent for this exact named commander connection.packages/playerthree/src/mcp/oauth/store.ts:47
clientOAuthClientInfo-packages/playerthree/src/mcp/oauth/store.ts:37
commanderstringExact named commander selected on the authenticated consent page.packages/playerthree/src/mcp/oauth/store.ts:39
createdAtnumber-packages/playerthree/src/mcp/oauth/store.ts:45
idstringcon_ + 16 base64url characters.packages/playerthree/src/mcp/oauth/store.ts:34
lastSeenAtnumber | null-packages/playerthree/src/mcp/oauth/store.ts:48
ownerstringThe game's owner id (OWNER_RE): the player who approved the connection.packages/playerthree/src/mcp/oauth/store.ts:36
refreshStoredTokenDigestThe current refresh token.packages/playerthree/src/mcp/oauth/store.ts:50
resourcestringThe resource (MCP endpoint URL) the tokens are bound to.packages/playerthree/src/mcp/oauth/store.ts:43
retiredstring[]Rotated-away refresh tokens: presenting one again revokes the connection (refresh token reuse).packages/playerthree/src/mcp/oauth/store.ts:52
rolesstring[]Granted subset of that commander's compatible manifest roles.packages/playerthree/src/mcp/oauth/store.ts:41
scopestring-packages/playerthree/src/mcp/oauth/store.ts:44

StoredTokenDigest

Defined in: packages/playerthree/src/mcp/oauth/store.ts:25

Properties

PropertyTypeDescriptionDefined in
digeststringSHA-256 hex of the token.packages/playerthree/src/mcp/oauth/store.ts:27
expiresAtnumberms since epochpackages/playerthree/src/mcp/oauth/store.ts:29

ToolAnnotationsSpec

Defined in: packages/playerthree/src/mcp/surface.ts:15

Properties

PropertyModifierTypeDefined in
destructiveHint?readonlybooleanpackages/playerthree/src/mcp/surface.ts:17
idempotentHintreadonlybooleanpackages/playerthree/src/mcp/surface.ts:18
openWorldHintreadonlyfalsepackages/playerthree/src/mcp/surface.ts:19
readOnlyHintreadonlybooleanpackages/playerthree/src/mcp/surface.ts:16

ToolSpec

Defined in: packages/playerthree/src/mcp/surface.ts:22

Properties

PropertyModifierTypeDescriptionDefined in
annotationsreadonlyToolAnnotationsSpec-packages/playerthree/src/mcp/surface.ts:30
descriptionreadonlystringStatic PlayerThree text plus developer-declared numbers/identifiers from the manifest.packages/playerthree/src/mcp/surface.ts:27
inputSchemareadonlyJsonSchema-packages/playerthree/src/mcp/surface.ts:28
methodreadonly"usage" | keyof SeatControl-packages/playerthree/src/mcp/surface.ts:24
namereadonlystring-packages/playerthree/src/mcp/surface.ts:23
outputSchemareadonlyJsonSchema-packages/playerthree/src/mcp/surface.ts:29
titlereadonlystring-packages/playerthree/src/mcp/surface.ts:25

Type Aliases

CimdErrorCode

type CimdErrorCode = 
  | "invalid_client_id"
  | "blocked_address"
  | "redirect"
  | "status"
  | "bad_content_type"
  | "too_large"
  | "timeout"
  | "network"
  | "bad_document";

Defined in: packages/playerthree/src/mcp/oauth/cimd.ts:26


CimdResult

type CimdResult = 
  | {
  document: ClientDocument;
  maxAgeMs: number;
  ok: true;
}
  | {
  code: CimdErrorCode;
  ok: false;
};

Defined in: packages/playerthree/src/mcp/oauth/cimd.ts:42


ClientRegistration

type ClientRegistration = "cimd" | "dcr";

Defined in: packages/playerthree/src/mcp/oauth/store.ts:10

How the client identified itself: a Client ID Metadata Document URL, or Dynamic Client Registration.


ToolErrorCode

type ToolErrorCode = ServerErrorCode | "consent_declined";

Defined in: packages/playerthree/src/mcp/meta.ts:8

Closed set of tool-level error codes ({"error": code} in an isError result).

Variables

LIMITS

const LIMITS: object;

Defined in: packages/playerthree/src/mcp/surface.ts:51

Limits shared with the host's own argument validation.

Type Declaration

NameTypeDefault valueDescriptionDefined in
maxIntentsPerCall6464-packages/playerthree/src/mcp/surface.ts:52
maxOffsetnumber-game_skill offsets (UTF-16 code units).packages/playerthree/src/mcp/surface.ts:62
maxPage1000010_000Topic and observation page numbers.packages/playerthree/src/mcp/surface.ts:59
maxSeednumber--packages/playerthree/src/mcp/surface.ts:57
maxTicknumber--packages/playerthree/src/mcp/surface.ts:55
maxTopicChars128128-packages/playerthree/src/mcp/surface.ts:60
maxUntilKinds1616-packages/playerthree/src/mcp/surface.ts:54
maxVersionnumber--packages/playerthree/src/mcp/surface.ts:56
maxWaitSeconds6060-packages/playerthree/src/mcp/surface.ts:53

OAUTH_SCOPE

const OAUTH_SCOPE: "play" = 'play';

Defined in: packages/playerthree/src/mcp/oauth/server.ts:41

The one scope this server grants: play the roles the owner picked on the consent page.


SURFACE_HASH_META

const SURFACE_HASH_META: "dev.playerthree/surfaceHash" = 'dev.playerthree/surfaceHash';

Defined in: packages/playerthree/src/mcp/meta.ts:5

_meta key carrying the surfaceHash on tools/list and every tools/call result (clients pin it).


TOOL_ORDER

const TOOL_ORDER: readonly ControlMethod[];

Defined in: packages/playerthree/src/mcp/surface.ts:34

Deterministic tool order.

Functions

addressAllowed()

function addressAllowed(address, allowLoopback?): boolean;

Defined in: packages/playerthree/src/mcp/oauth/cimd.ts:107

A resolved address the server may connect to.

Parameters

ParameterTypeDefault value
addressstringundefined
allowLoopback?booleanfalse

Returns

boolean


createAuthorizationServer()

function createAuthorizationServer<M>(typedHost, opts): AuthorizationServer;

Defined in: packages/playerthree/src/mcp/oauth/server.ts:273

The OAuth 2.1 authorization server for typedHost's MCP endpoint (see the module comment for its routes).

Type Parameters

Type Parameter
M extends AnyManifest

Parameters

ParameterType
typedHostPlayerThreeHost<M>
optsAuthorizationServerOptions

Returns

AuthorizationServer


createMcpRequestHandler()

function createMcpRequestHandler<M>(typedHost, opts?): McpRequestHandler;

Defined in: packages/playerthree/src/mcp/server.ts:329

The remote MCP endpoint for typedHost, unmounted; mountMcp wires it (and the authorization server) into a node:http server.

Type Parameters

Type Parameter
M extends AnyManifest

Parameters

ParameterType
typedHostPlayerThreeHost<M>
opts?McpOptions

Returns

McpRequestHandler


fetchClientDocument()

function fetchClientDocument(clientId, opts?): Promise<CimdResult>;

Defined in: packages/playerthree/src/mcp/oauth/cimd.ts:249

Fetches and validates the metadata document a URL-formatted client_id points to.

Parameters

ParameterType
clientIdstring
opts?CimdOptions

Returns

Promise<CimdResult>


jsonConnectionStore()

function jsonConnectionStore(dir): ConnectionStore;

Defined in: packages/playerthree/src/mcp/oauth/store.ts:102

<dir>/connections.json, written atomically (temp file + rename) with mode 0600.

Parameters

ParameterType
dirstring

Returns

ConnectionStore


memoryConnectionStore()

function memoryConnectionStore(): ConnectionStore;

Defined in: packages/playerthree/src/mcp/oauth/store.ts:81

In-memory connection store (the default): connections and registered clients are lost on restart.

Returns

ConnectionStore


mergeObservationPages()

function mergeObservationPages(pages): Record<string, unknown>;

Defined in: packages/playerthree/src/mcp/paging.ts:102

Reassemble a full observation from all its pages, in page order (inverse of pageObservation).

Parameters

ParameterType
pagesreadonly object[]

Returns

Record<string, unknown>


methodEnabled()

function methodEnabled(manifest, method): boolean;

Defined in: packages/playerthree/src/mcp/surface.ts:98

Whether the manifest enables the mode that gates a control method.

Parameters

ParameterType
manifestAnyManifest
methodkeyof SeatControl

Returns

boolean


mountMcp()

function mountMcp<M>(
   httpServer, 
   host, 
   opts?
): object;

Defined in: packages/playerthree/src/mcp/server.ts:1016

Serve MCP on an existing node:http server: requests whose pathname equals path — and, with auth, the authorization server's paths (/.well-known/oauth-*, /oauth/*) — are handled here and never reach the server's other request listeners (regardless of registration order); everything else passes through.

Type Parameters

Type Parameter
M extends AnyManifest

Parameters

ParameterType
httpServerServer
hostPlayerThreeHost<M>
opts?MountMcpOptions

Returns

object


pageObservation()

function pageObservation(
   observation, 
   schema, 
   budget
): ObservationPage[];

Defined in: packages/playerthree/src/mcp/paging.ts:71

Pages of observation whose JSON each fits budget code units (except an indivisible item larger than the budget). One page when it already fits.

Parameters

ParameterType
observationunknown
schemaJsonSchema
budgetnumber

Returns

ObservationPage[]


redirectMatches()

function redirectMatches(registered, given): boolean;

Defined in: packages/playerthree/src/mcp/oauth/cimd.ts:165

Exact string match, except that a registered plain-http loopback redirect URI matches any port on the same loopback host with the same path and query (RFC 8252 §7.3: native apps listen on an ephemeral port).

Parameters

ParameterType
registeredstring
givenstring

Returns

boolean


serverInstructions()

function serverInstructions(manifest, hash): string;

Defined in: packages/playerthree/src/mcp/server.ts:215

Static server instructions. Only PlayerThree text and developer-declared manifest data.

Parameters

ParameterType
manifestAnyManifest
hashstring

Returns

string


toolSurface()

function toolSurface(manifest, skills): ToolSpec[];

Defined in: packages/playerthree/src/mcp/surface.ts:298

The tool surface for a game. skills must be every skill the server serves (developer skills, generated reference and SDK defaults) — game_skill's name enum comes from it.

Parameters

ParameterType
manifestAnyManifest
skillsreadonly SkillDef[]

Returns

ToolSpec[]