Operator
Operator interface for MCP clients. Connections are managed by a signed-in user; the operator namespace accepts only an operator connection credential. Cloud additionally requires a Pro/Team plan (402 PLAN_FEATURE_REQUIRED), refuses new writes while frozen (403 WORKSPACE_FROZEN), and applies monthly renewal quota admission (429 CERTOPS_RENEWAL_QUOTA_EXCEEDED).
Discover the remote MCP protected resource
Discover the remote MCP protected resource
Discover the remote MCP protected resource
Discover the remote MCP protected resource
Discover MCP sign-in endpoints and public client capabilities
Discover MCP sign-in endpoints and public client capabilities
Register a public MCP client without a client secret
Register a public MCP client without a client secret
Begin browser sign-in and explicit workspace consent
Public initiation creates no connection. Browser nonce, session identity and CSRF are required for the later consent decision. Only registered HTTPS or native loopback callbacks are accepted.
Exchange a PKCE code or rotate a refresh token
Session cookies and Authorization headers are refused. Credentials belong only to this MCP resource and operator REST namespace. Access tokens last 15 minutes. Rotating refresh tokens expire after 90 days of inactivity and never outlive a finite connection.
Revoke this clientβs workspace connection and unclaimed work
Session cookies and Authorization headers are refused. Credentials belong only to this MCP resource and operator REST namespace.
Review the app, callback origin and available workspaces after sign-in
Review the app, callback origin and available workspaces after sign-in
Approve selected workspace access or refuse the client
Approve selected workspace access or refuse the client
Streamable HTTP MCP using signed-in, workspace-bound OAuth authority
JSON-RPC initialization, tool listing and calls. Stateless requests accept only Bearer OAuth access tokens, never browser sessions or local-adapter credentials. Tool reads and renewals keep the operator REST role, Cloud plan/freeze/quota, workspace and Job approval gates. The optional stdio adapter remains independent.
Rotate an operator connection credential
Session only, owner only: the new secret is returned to the caller, so an admin cannot rotate another member's credential. Replaces the secret and nothing else; the connection id, owner, scopes, ceiling and expiry are unchanged and no request is cancelled. The new credential is returned once with Cache-Control no-store. A revoked or expired connection answers 409.
Revoke an operator connection
Session only. The owner or a workspace admin can revoke. Revocation is idempotent and takes effect before any later request can be authorized. Another member's connection is reported as not found.
List operator connections
Session only. Members see their own connections; workspace admins see every connection in the workspace. Metadata only: credentials and credential hashes are never returned. An operator connection credential is refused on this route. Hidden with 404 while the operator interface is disabled.
Create an operator connection
Session only. Creates a connection that represents the signed-in user in this workspace, with a fixed scope list and role ceiling. The ceiling and every scope must be within the user's current role. The credential is returned once in this response, with Cache-Control no-store, and cannot be recovered afterwards. Lifetime defaults to 30 days and is capped at 90. Scopes for operations that do not exist yet are refused.
Read the workspace's assistant write setting
Session only. Reports whether assistant write requests are switched on for this workspace. Writes also need the instance flag MCP_OPERATOR_WRITES_ENABLED and a connection with the mcp:renew:request scope.
Switch assistant write requests on or off for the workspace
Session only, workspace manager or owner. Off by default. A connection can never change it. The body is exactly writesEnabled. Each change is audited.
Read the assistant issuance setting
Read the assistant issuance setting
Change the assistant issuance setting
Session only, workspace manager or owner. Off by default. Disabling cancels unapproved issuance requests.
Preview certificate issuance
Requires mcp:issue:request and a workspace that permits assistant issuance. Review the issuer, target and renewal effect before submission.
Submit reviewed certificate issuance
Resubmit the original issuance details with the preview and a request ID. Workspace Job approval applies.
List token inventory metadata
Requires mcp:tokens:read. The connection fixes the workspace; secrets and credentials are never returned. Follow completeness.nextCursor to retrieve every match. Unknown filters are refused.
Read one token inventory record
Requires mcp:tokens:read. A missing record and a record from another workspace both return 404. Additional query parameters are refused.
List workspace inventory sections
Requires mcp:tokens:read. Section labels are untrusted workspace data.
List records with the same inventory type and category
Requires mcp:tokens:read. Results exclude the source record and other workspaces.
Preview a reviewed inventory metadata update
Requires mcp:inventory:update and manager authority. Certificate and provider-managed records are excluded.
Apply a reviewed inventory metadata update
Requires mcp:inventory:update. Reusing the same request ID retries the same reviewed action safely.
Preview creation of a workspace contact
Requires mcp:contacts:create and manager authority. Creating a contact does not verify its delivery channels.
Create a reviewed workspace contact
Requires mcp:contacts:create. Reusing the same request ID retries the same reviewed action safely.
Preview creating a workspace webhook
Requires mcp:webhooks:create. URL paths and routing keys are omitted from the preview and retained only as hashes in the plan.
Create a reviewed workspace webhook
Requires mcp:webhooks:create and the original URL and routing key, which must match the preview. The saved webhook remains unverified.
List contact and webhook names for group creation
Requires mcp:groups:create. Addresses, phone numbers and webhook URLs are not returned.
Preview creating a workspace contact group
Requires mcp:groups:create and manager authority. Plan limits, contact channels and webhook names are checked again at submission.
Create a reviewed workspace contact group
Requires mcp:groups:create. Reusing the request ID retries the same action safely.
Preview a viewer invitation by email
Requires mcp:members:invite. The preview distinguishes immediate access for an existing user from an invitation for a new user.
Submit a reviewed viewer invitation
Requires mcp:members:invite. Email delivery can be sent, failed or unknown; an uncertain send is not retried automatically.
Preview a metadata-only inventory import
Requires mcp:inventory:import, current manager permission and MCP_OPERATOR_WRITES_ENABLED. Validates up to 100 normalized records and returns a 15-minute plan showing creates and existing records to keep. Existing records are never overwritten; secrets are rejected. CertOps renewal controls and Job approval do not apply.
Import the reviewed inventory batch
Requires mcp:inventory:import, current manager permission and MCP_OPERATOR_WRITES_ENABLED. Submits the exact preview plan and hash. An identical requestId retry returns the original result without creating duplicates. Existing records are kept. CertOps Job approval does not apply.
Withdraw my unapproved request before execution
Needs the scope for the stored request (mcp:renew:request or mcp:issue:request) and remains available when new requests are disabled or CertOps is paused. Authentication, scope and ownership still apply. May withdraw waiting approvals or claimable pending jobs without human approval. Withdrawal races atomically with approval and agent claim; if either wins first, return 409 without claiming execution was prevented. Response shape: packages/contracts/mcp/mcp-renew-tools.schema.json definition tt_cancel_request_output.
Show one of my requests
Needs mcp:requests:read. Another connection's request and a missing one answer the same 404. State is read from the job, so it is never a second copy that could drift. Response shape: packages/contracts/mcp/mcp-renew-tools.schema.json definition tt_get_action_request_output.
List my requests
Needs mcp:requests:read. A connection sees only its own requests. Lists carry the same completeness object as every other list. Response shape: packages/contracts/mcp/mcp-renew-tools.schema.json definition tt_list_my_requests_output.
Submit a previewed renewal under workspace job approval policy
Needs mcp:renew:request and both write switches. Creates an ordinary renewal job attributed to the person and connection. CertOps Job approval on creates pending_approval for independent review; off creates immediately claimable pending work without recording human approval. Existing jobs retain their gate; a policy change invalidates an unsubmitted preview. The body is exactly planId, planHash and requestId and cannot override policy. An identical retry returns the original outcome (200, replayed true), even after preview expiry or completion; reused requestId with different content is a 409. Revocation is serialized with submission. Submission is not proof of renewal. Response shape: packages/contracts/mcp/mcp-renew-tools.schema.json definition tt_request_renew_output.
Preview renewing one certificate
Needs the mcp:renew:request scope, and the instance flag MCP_OPERATOR_WRITES_ENABLED and the workspace setting must both be on. Changes nothing except storing an expiring plan record. Runs the same validation a real renewal would, so it refuses what could not be renewed. The body is closed: only identityId. Response shape: packages/contracts/mcp/mcp-renew-tools.schema.json definition tt_preview_renew_output.
Redeem a setup code for an operator connection credential
The only operator route that takes no connection credential. It takes the single-use setup code as a bearer (ttopg_ prefix), which is accepted here and nowhere else. A cookie or session next to it is refused. The request body is ignored: the code fixes the user, workspace, scopes, role ceiling, name and lifetime, and the issuing person's access is checked again at this moment. On success the credential is returned once with Cache-Control no-store and is not stored or recoverable; if the response is lost, revoke the new connection and create a new setup code. Every failure before the code is proven valid looks the same, so a wrong or unknown code reveals nothing. Rate limited per client address.
Revoke an operator enrollment
Session only. The person who created it or a workspace admin can revoke a pending setup code. Revoking is idempotent and does nothing to a code that was already used. Another member's enrollment is reported as not found.
List operator enrollments
Session only. A member sees the enrollments they created; a workspace admin sees everyone's. Only the newest 100 are returned. A setup code is never shown after creation.
Create an operator enrollment (Connect an assistant)
Session only. Creates a single-use setup code that fixes the user, workspace, scopes, role ceiling, connection name and connection lifetime. It is valid for 10 minutes. The same checks as creating a connection apply now, so a request that could never be redeemed is refused immediately. The code is returned once, with Cache-Control no-store, and cannot be recovered afterwards. Redeeming it creates the connection; nothing about the resulting credential is kept.
Show one job
Returns a job's status, approval state, attempt count, normalized error code and, for a waiting job, why it is waiting. The free-text error message, payload and claim id are never returned. Authenticated only with an operator connection credential holding the mcp:jobs:read scope; the workspace comes from the connection. Response shape: packages/contracts/mcp/mcp-read-tools.schema.json definition tt_get_job_output (tool tt_get_job). Unknown or repeated query parameters are refused with 400. Hidden with 404 while the operator interface or CertOps is disabled.
List jobs
Lists job summaries by status, operation, subject or recency. Payloads, result metadata, lease and claim data, error text and requester ids are never returned. Free-text search is not offered, because the underlying job search also reads agent names and hostnames. Authenticated only with an operator connection credential holding the mcp:jobs:read scope; the workspace comes from the connection. Response shape: packages/contracts/mcp/mcp-read-tools.schema.json definition tt_list_jobs_output (tool tt_list_jobs). Unknown or repeated query parameters are refused with 400. Hidden with 404 while the operator interface or CertOps is disabled.
Show agent health
Agent liveness, version, compatibility and declared capabilities. Requires a workspace manager or admin effective role, matching the session route, because fleet metadata is treated as sensitive. Agent names, target selectors, command profiles and signing key ids are never returned. Requires a workspace manager or admin effective role. Authenticated only with an operator connection credential holding the mcp:agents:read scope; the workspace comes from the connection. Response shape: packages/contracts/mcp/mcp-read-tools.schema.json definition tt_get_agent_health_output (tool tt_get_agent_health). Unknown or repeated query parameters are refused with 400. Hidden with 404 while the operator interface or CertOps is disabled.
Explain a certificate's state
Deterministic and server-side. Composes reason codes the renewal-path, job and lifecycle services already produce and words them from a fixed table. It never returns a service's free-text summary or dependency list, which can name agents. Evidence that is missing is reported as an unknown area and never as a definitive answer. Authenticated only with an operator connection credential holding the mcp:certs:read scope; the workspace comes from the connection. Response shape: packages/contracts/mcp/mcp-read-tools.schema.json definition tt_explain_certificate_state_output (tool tt_explain_certificate_state). Unknown or repeated query parameters are refused with 400. Hidden with 404 while the operator interface or CertOps is disabled.
Show where a certificate was observed
Returns observed locations with presence state (confirmed present, confirmed absent or unknown), evidence kind and freshness reason. Deployment paths and references are never returned. The source returns at most 20 locations per certificate; a longer list is reported as truncated with no cursor. Authenticated only with an operator connection credential holding the mcp:certs:read scope; the workspace comes from the connection. Response shape: packages/contracts/mcp/mcp-read-tools.schema.json definition tt_get_certificate_observations_output (tool tt_get_certificate_observations). Unknown or repeated query parameters are refused with 400. Hidden with 404 while the operator interface or CertOps is disabled.
Show one certificate identity
Returns one certificate identity with its lifecycle, management periods, renewal path and observation summary. The identity id is the id returned by the list. A record in another workspace answers 404, exactly like a missing one. Authenticated only with an operator connection credential holding the mcp:certs:read scope; the workspace comes from the connection. Response shape: packages/contracts/mcp/mcp-read-tools.schema.json definition tt_get_certificate_output (tool tt_get_certificate). Unknown or repeated query parameters are refused with 400. Hidden with 404 while the operator interface or CertOps is disabled.
List certificates
Lists certificate identities in the connection's workspace by status, expiry window or text. Search matches only names, issuer, subject alternative names and fingerprint. Key references, deployed paths and source references are never returned, and cannot be inferred by searching for them. Provisional rows (issuance in flight) have a null fingerprint. Authenticated only with an operator connection credential holding the mcp:certs:read scope; the workspace comes from the connection. Response shape: packages/contracts/mcp/mcp-read-tools.schema.json definition tt_list_certificates_output (tool tt_list_certificates). Unknown or repeated query parameters are refused with 400. Hidden with 404 while the operator interface or CertOps is disabled.
Show the operator connection, workspace and effective role
Returns who an operator connection represents and what it may do right now. Authenticated only with an operator connection credential (bearer); the workspace comes from the connection and is never read from the path or the query. The effective role is the lower of the role ceiling fixed at creation and the user's current workspace role. Text that originates from the workspace is wrapped as untrusted data. Hidden with 404 while the operator interface is disabled. A request that also carries a session cookie is refused with 401.