← API reference
CANONICAL TYPE REFERENCE

MCPTool

Tenant-defined Lua tool with assignment-scoped MCP invocation.

Tool identity.

nameString!

Stable lowercase name. Renaming requires replacement.

titleString!

Human-readable tool title.

Instructions explaining when and how to use this tool.

sourceString!

Tool-owned Lua source defining exports.handler(input).

JSON Pointer keyed metadata for inferred inputs; structural keywords are forbidden.

JSON Pointer keyed metadata for inferred outputs; structural keywords are forbidden.

enabledBoolean!

Whether assigned callers can discover and invoke the published tool.

publishedBoolean!

Publish this exact authored definition, or false to withdraw publication.

readOnlyBoolean!

Client hint; does not enforce read-only execution.

destructiveBoolean!

Client hint describing destructive effects.

idempotentBoolean!

Client hint describing repeat-call behavior.

openWorldBoolean!

Client hint indicating interaction with external systems.

Direct user assignments. An empty array clears assignments.

Team assignments. An empty array clears assignments.

Server-generated inputSchema.

Server-generated outputSchema.

revisionString!

Server-generated revision.

Server-generated publishedVersionId.

createdAtString!

Server-generated createdAt.

updatedAtString!

Server-generated updatedAt.

View exact SDL
"""Tenant-defined Lua tool with assignment-scoped MCP invocation."""
type MCPTool @iac_resource(name: "mcp_tool") @iac_ops(create: "createMCPTool", read: "mcpTool", update: "updateMCPTool", delete: "deleteMCPTool") @iac_precondition(field: "revision", input: "expectedRevision") @iac_replace(strategy: DESTROY_BEFORE_CREATE) {
  """Tool identity."""
  id: MCPToolID! @iac_identity(assignedBy: SERVER) @iac_computed
  """Stable lowercase name. Renaming requires replacement."""
  name: String! @iac_forcesReplace
  """Human-readable tool title."""
  title: String!
  """Instructions explaining when and how to use this tool."""
  description: String!
  """Tool-owned Lua source defining exports.handler(input)."""
  source: String! @iac_artifact(language: LUA, validators: ["lua-typecheck"])
  """
  JSON Pointer keyed metadata for inferred inputs; structural keywords are forbidden.
  """
  inputAnnotations: String! @iac_artifact(language: JSON)
  """
  JSON Pointer keyed metadata for inferred outputs; structural keywords are forbidden.
  """
  outputAnnotations: String! @iac_artifact(language: JSON)
  """Whether assigned callers can discover and invoke the published tool."""
  enabled: Boolean!
  """
  Publish this exact authored definition, or false to withdraw publication.
  """
  published: Boolean!
  """Client hint; does not enforce read-only execution."""
  readOnly: Boolean!
  """Client hint describing destructive effects."""
  destructive: Boolean!
  """Client hint describing repeat-call behavior."""
  idempotent: Boolean!
  """Client hint indicating interaction with external systems."""
  openWorld: Boolean!
  """Direct user assignments. An empty array clears assignments."""
  userIds: [UserID!]! @iac_ref(resource: "service_account")
  """Team assignments. An empty array clears assignments."""
  teamIds: [TeamID!]! @iac_ref(resource: "team")
  """Server-generated inputSchema."""
  inputSchema: String @iac_computed
  """Server-generated outputSchema."""
  outputSchema: String @iac_computed
  """Server-generated revision."""
  revision: String! @iac_computed
  """Server-generated publishedVersionId."""
  publishedVersionId: MCPToolVersionID @iac_computed
  """Server-generated createdAt."""
  createdAt: String! @iac_computed
  """Server-generated updatedAt."""
  updatedAt: String! @iac_computed
}

One stable address across all schema views. Follow a field’s type to explore connections between domains.