Skip to main content
Version: 3.4.0-rc.1

cmind/agents/v1/preset_agent_service.proto

Package: cmind.agents.v1

Enums​

ToolServerKind​

ValueNumberDescription
TOOL_SERVER_KIND_UNSPECIFIED0
TOOL_SERVER_KIND_RAG1
TOOL_SERVER_KIND_MCP2

PresetAgentAvailability​

Stable public readiness state. Raw operator conditions and dependency names are intentionally not exposed by the manager API.

ValueNumberDescription
PRESET_AGENT_AVAILABILITY_UNSPECIFIED0
PRESET_AGENT_AVAILABILITY_RECONCILING1
PRESET_AGENT_AVAILABILITY_READY2
PRESET_AGENT_AVAILABILITY_UNAVAILABLE3

HookKind​

ValueNumberDescription
HOOK_KIND_UNSPECIFIED0
HOOK_KIND_MODEL1

JudgeProtocol​

ValueNumberDescription
JUDGE_PROTOCOL_UNSPECIFIED0
JUDGE_PROTOCOL_GPT_OSS_SAFEGUARD1

ReasoningEffort​

ValueNumberDescription
REASONING_EFFORT_UNSPECIFIED0
REASONING_EFFORT_LOW1
REASONING_EFFORT_MEDIUM2
REASONING_EFFORT_HIGH3

PresetAgentAccessFilter​

Which access the list is filtered by. A closed enum rather than a relation string, so a caller cannot ask the list to filter by an arbitrary FGA relation.

ValueNumberDescription
PRESET_AGENT_ACCESS_FILTER_UNSPECIFIED0Treated as INVOCABLE, which is what the list has always returned.
PRESET_AGENT_ACCESS_FILTER_INVOCABLE1Agents the caller may use.
PRESET_AGENT_ACCESS_FILTER_MANAGEABLE2Agents the caller may administer — the management surface's list. It includes an agent held only through a delegated grant, which is how a member who is not a tenant admin finds the agent they were granted.

Messages​

ToolServerRef​

Reference to a registered tool server the agent may use — a RAG deployment or an external MCP server, whole-server granularity. Never an inline tool definition or credentials. A per-tool narrowing field can be added later.

FieldTypeNumberDescription
kindToolServerKind1Shape (kind set, name non-empty) is validated by the create and update handlers.
namestring2RAG deployment id or external MCP server name

LockedParams​

Params the agent pins on every invocation; callers cannot override them. Enforcement happens at invocation in the model-gateway.

FieldTypeNumberDescription
temperatureoptional double1
topPoptional double2
maxOutputTokensoptional int643

ModelJudge​

FieldTypeNumberDescription
modelIdstring1Public model id; may name a model alias.
judgeProtocolJudgeProtocol2
instructionsstring3
reasoningEffortoptional ReasoningEffort4Absent means low at invocation; create and update preserve absence.

OutputGuardrail​

Output guardrails always keep intermediate output private for the whole request.

FieldTypeNumberDescription
kindHookKind1
modelModelJudge2
blockMessagestring3Empty uses the gateway's default replacement message.

PresetAgentHooks​

Guardrails run in order and stop after the first block or error.

FieldTypeNumberDescription
outputGuardrailsrepeated OutputGuardrail1

PresetAgent​

FieldTypeNumberDescription
namestring1Agent id — what callers put in the model field on /v1/responses. Shares one namespace with model publicModelIds; create rejects collisions. DNS-1123 subdomain shape (no "/"), matching manager-go and K8s validation.
displayNamestring2
baseModelstring3publicModelId of the model the agent runs on. Required on create. May name a model alias; the agent then follows the alias when it repoints.
instructionsstring4System prompt injected on every invocation; callers cannot override it.
toolServersrepeated ToolServerRef5
lockedParamsLockedParams6
sharingcmind.modelmanager.v1.Sharing7Mutated by UpdatePresetAgent; this service has no separate sharing RPC
tenantIdstring8Owning tenant; empty means platform-owned.
availabilityPresetAgentAvailability9
descriptionstring10Short human-facing summary of what the agent does. Distinct from instructions (the system prompt), which is machine-directed: this field is for people. May be empty.
hooksPresetAgentHooks11

CreatePresetAgentRequest​

FieldTypeNumberDescription
presetAgentPresetAgent1
tenantIdstring2Tenant that owns the agent

CreatePresetAgentResponse​

FieldTypeNumberDescription
presetAgentPresetAgent1

CreatePlatformPresetAgentRequest​

FieldTypeNumberDescription
presetAgentPresetAgent1

CreatePlatformPresetAgentResponse​

FieldTypeNumberDescription
presetAgentPresetAgent1

GetPresetAgentRequest​

FieldTypeNumberDescription
namestring1

GetPresetAgentResponse​

FieldTypeNumberDescription
presetAgentPresetAgent1

ToolServerList​

Wraps the repeated refs so PresetAgentUpdate can distinguish absent (unchanged) from present with no values (clear).

FieldTypeNumberDescription
valuesrepeated ToolServerRef1

PresetAgentUpdate​

The fields UpdatePresetAgent can change. An absent field leaves the stored value unchanged; a present field replaces the stored value whole, so a present-but-empty value clears it. Exception: base_model is required and cannot be cleared. Fields not carried here (name, tenant_id) are immutable.

FieldTypeNumberDescription
displayNameoptional string1
instructionsoptional string2
baseModeloptional string3publicModelId; may name a model alias.
toolServersToolServerList4
lockedParamsLockedParams5
sharingcmind.modelmanager.v1.Sharing6
descriptionoptional string7Mirrors PresetAgent.description; an absent field leaves the stored value unchanged, a present field replaces it (empty clears).
hooksPresetAgentHooks8Absent preserves hooks; a present message replaces them, including clearing.

UpdatePresetAgentRequest​

FieldTypeNumberDescription
namestring1
updatePresetAgentUpdate2

UpdatePresetAgentResponse​

FieldTypeNumberDescription
presetAgentPresetAgent1

DeletePresetAgentRequest​

FieldTypeNumberDescription
namestring1

DeletePresetAgentResponse​

ListPresetAgentsRequest​

FieldTypeNumberDescription
accessPresetAgentAccessFilter1A value outside the enum is rejected with InvalidArgument rather than defaulted, because answering a different question than the caller asked is worse than failing.

PresetAgentSummary​

List view for preset agents

FieldTypeNumberDescription
namestring1
displayNamestring2
baseModelstring3
shareToAllbool4
tenantIdstring5Owning tenant
availabilityPresetAgentAvailability6

ListPresetAgentsResponse​

FieldTypeNumberDescription
presetAgentsrepeated PresetAgentSummary1

ListPresetAgentPermissionsRequest​

FieldTypeNumberDescription
namestring1
subjectTypeoptional cmind.permissions.v1.SubjectType2
roleoptional cmind.permissions.v1.DeploymentRole3

ListPresetAgentPermissionsResponse​

FieldTypeNumberDescription
permissionsrepeated cmind.permissions.v1.DeploymentPermission1

AddPresetAgentPermissionRequest​

FieldTypeNumberDescription
namestring1
subjectcmind.permissions.v1.Subject2
rolecmind.permissions.v1.DeploymentRole3

AddPresetAgentPermissionResponse​

RemovePresetAgentPermissionRequest​

FieldTypeNumberDescription
namestring1
subjectcmind.permissions.v1.Subject2
rolecmind.permissions.v1.DeploymentRole3

RemovePresetAgentPermissionResponse​

GetPresetAgentMcpOAuthMetadataRequest​

FieldTypeNumberDescription
agentNamestring1
serverNamestring2

GetPresetAgentMcpOAuthMetadataResponse​

FieldTypeNumberDescription
oauthExternalMcpOAuthConfig1
redirectUristring2
metadataVersionstring3
serverDisplayNamestring4Human-readable name of the service the caller is connecting to.

ExchangePresetAgentMcpOAuthTokenRequest​

Exactly one grant: authorization code or refresh token. The endpoint and client credentials are resolved from the currently pinned MCP resource.

FieldTypeNumberDescription
agentNamestring1
serverNamestring2
codestring3
codeVerifierstring4
redirectUristring5
refreshTokenstring6
metadataVersionstring7

ExchangePresetAgentMcpOAuthTokenResponse​

FieldTypeNumberDescription
accessTokenstring1
tokenTypestring2
expiresInint643
refreshTokenstring4
scopestring5

Services​

PresetAgentService​

In FGA, preset agents use the dedicated preset_agent type.

CreatePresetAgent​

POST /cmind.agents.v1.PresetAgentService/CreatePresetAgent

Creates a preset agent owned by a tenant

Request: CreatePresetAgentRequest

Response: CreatePresetAgentResponse

CreatePlatformPresetAgent​

POST /cmind.agents.v1.PresetAgentService/CreatePlatformPresetAgent

Creates a preset agent owned by the platform

Request: CreatePlatformPresetAgentRequest

Response: CreatePlatformPresetAgentResponse

GetPresetAgent​

GET /cmind.agents.v1.PresetAgentService/GetPresetAgent

Request: GetPresetAgentRequest

Response: GetPresetAgentResponse

UpdatePresetAgent​

POST /cmind.agents.v1.PresetAgentService/UpdatePresetAgent

Request: UpdatePresetAgentRequest

Response: UpdatePresetAgentResponse

DeletePresetAgent​

POST /cmind.agents.v1.PresetAgentService/DeletePresetAgent

Request: DeletePresetAgentRequest

Response: DeletePresetAgentResponse

ListPresetAgents​

GET /cmind.agents.v1.PresetAgentService/ListPresetAgents

The handler returns every agent the caller holds the requested access on; see ListPresetAgentsRequest.access

Request: ListPresetAgentsRequest

Response: ListPresetAgentsResponse

ListPresetAgentPermissions​

GET /cmind.agents.v1.PresetAgentService/ListPresetAgentPermissions

Request: ListPresetAgentPermissionsRequest

Response: ListPresetAgentPermissionsResponse

AddPresetAgentPermission​

POST /cmind.agents.v1.PresetAgentService/AddPresetAgentPermission

Request: AddPresetAgentPermissionRequest

Response: AddPresetAgentPermissionResponse

RemovePresetAgentPermission​

POST /cmind.agents.v1.PresetAgentService/RemovePresetAgentPermission

Request: RemovePresetAgentPermissionRequest

Response: RemovePresetAgentPermissionResponse

GetPresetAgentMcpOAuthMetadata​

POST /cmind.agents.v1.PresetAgentService/GetPresetAgentMcpOAuthMetadata

Returns OAuth bootstrap metadata for an MCP server pinned by this ready agent. The caller needs access to the agent, not a direct server grant.

Request: GetPresetAgentMcpOAuthMetadataRequest

Response: GetPresetAgentMcpOAuthMetadataResponse

ExchangePresetAgentMcpOAuthToken​

POST /cmind.agents.v1.PresetAgentService/ExchangePresetAgentMcpOAuthToken

Exchanges or refreshes a caller-owned OAuth token for an MCP server pinned by this ready agent. The agent and server are re-read for every exchange.

Request: ExchangePresetAgentMcpOAuthTokenRequest

Response: ExchangePresetAgentMcpOAuthTokenResponse