Injected parameters and metadata
On tools/call, MCP allows an optional _meta object on params (next to name and arguments). Agentsyx may add or merge keys there before your MCP server handles the request.
Stable injection: openai/subject
When an anon id is resolved, the platform ensures params._meta exists and sets:
_meta["openai/subject"]— The resolved anon id string (stable identifier used across MCP / Apps SDK flows).
Resolution order (simplified):
- If the request includes an
api_keybody field (e.g. external clients), that value is used as the anon id when valid. - Otherwise, if a Clerk user id is available, the platform looks up (or creates) the user’s linked
api/...anonymous identity and uses that anon id. - If neither yields an identity, no
openai/subjectis injected (see Anonymous & unauthenticated users).
Downstream tools can read params._meta?.["openai/subject"] to key per-user state. Do not treat it as proof of payment or plan tier—credits and subscriptions are enforced upstream.
Other _meta fields
Tools and resources may carry vendor-specific _meta (e.g. openai/outputTemplate, widget URIs). Those originate from your MCP server’s tool definitions or the host. Agentsyx forwards the JSON-RPC body and only merges the injections above into params._meta.
Headers vs body
Authorization and other HTTP headers are separate from the JSON-RPC params object. User identity for billing is not proven by _meta alone—see Inputs to downstream servers for headers your MCP URL may receive.