Skip to content
Reference

m3.types ​

Signatures use ... for factory-backed or opaque defaults. Model field tables show required status, defaults, constraints, and descriptions.

EVENT_SCHEMA_ID ​

m3.types.EVENT_SCHEMA_ID

EVENT_SCHEMA_VERSION ​

m3.types.EVENT_SCHEMA_VERSION

ExecutionOutcome ​

python
m3.types.ExecutionOutcome(
    *values,
)
  • COMPLETED = 'completed'
  • FAILED = 'failed'
  • TIMED_OUT = 'timed_out'
  • CANCELLED = 'cancelled'
  • INTERRUPTED = 'interrupted'

ExecutionResult ​

python
m3.types.ExecutionResult(
    *,
    snapshot: m3.types.ExecutionState,
    turns: tuple[m3.types.TurnResult, ...] = (),
    trace: m3.types.TraceResult | None = None,
    direct_result: m3.types.ListToolsResult | m3.types.ListResourcesResult | m3.types.ListTemplatesResult | m3.types.ListPromptsResult | m3.types.CallToolResult | m3.types.ReadResourceResult | m3.types.GetPromptResult | m3.types.PingResult | None = None,
    evaluations: tuple[m3.types.EvaluationResult, ...] = (),
    artifacts: tuple[m3.types.ArtifactRef, ...] = (),
    activity_health: m3.types.ActivityHealth = ActivityHealth.NO_CALLS,
    error: m3.types.ErrorInfo | None = None,
    provenance: m3.types.SessionSource | None = None,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
snapshotm3.types.ExecutionStateYes———
turnstuple[m3.types.TurnResult, ...]No()——
tracem3.types.TraceResult | NoneNoNone——
direct_resultm3.types.ListToolsResult | m3.types.ListResourcesResult | m3.types.ListTemplatesResult | m3.types.ListPromptsResult | m3.types.CallToolResult | m3.types.ReadResourceResult | m3.types.GetPromptResult | m3.types.PingResult | NoneNoNonevariant 1: discriminator='kind'—
evaluationstuple[m3.types.EvaluationResult, ...]No()——
artifactstuple[m3.types.ArtifactRef, ...]No()——
activity_healthm3.types.ActivityHealthNoActivityHealth.NO_CALLS ('no_calls')——
errorm3.types.ErrorInfo | NoneNoNone——
provenancem3.types.SessionSource | NoneNoNone——
  • trace_view (property): Return the finalized typed view for this execution trace.

TurnOutcome ​

python
m3.types.TurnOutcome(
    *values,
)
  • COMPLETED = 'completed'
  • FAILED = 'failed'
  • TIMED_OUT = 'timed_out'
  • CANCELLED = 'cancelled'
  • INTERRUPTED = 'interrupted'

TurnResult ​

python
m3.types.TurnResult(
    *,
    snapshot: m3.types.TurnState,
    response: m3.types.TurnResponse | None = None,
    error: m3.types.ErrorInfo | None = None,
    trace: m3.types.TraceResult | None = None,
    evidence: collections.abc.Mapping[str, Any] = ...,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
snapshotm3.types.TurnStateYes———
responsem3.types.TurnResponse | NoneNoNone——
errorm3.types.ErrorInfo | NoneNoNone——
tracem3.types.TraceResult | NoneNoNone——
evidencecollections.abc.Mapping[str, Any]Nofactory builtins.dict()——
  • turn_id (property): Stable identifier usable to scope finalized session assertions.

HTTPServer ​

python
m3.types.HTTPServer(
    *,
    name: str,
    trust: m3.types.TrustLevel = TrustLevel.UNTRUSTED,
    kind: Literal['streamable_http'] = 'streamable_http',
    url: str,
    headers: collections.abc.Mapping[str, m3.types.SecretReference | str] = ...,
    loopback_only: bool = False,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
namestrYes—min_length=1, max_length=256—
trustm3.types.TrustLevelNoTrustLevel.UNTRUSTED ('untrusted')——
kindLiteral['streamable_http']No'streamable_http'——
urlstrYes—min_length=1—
headerscollections.abc.Mapping[str, m3.types.SecretReference | str]Nofactory builtins.dict()——
loopback_onlyboolNoFalse——

StdioServer ​

python
m3.types.StdioServer(
    *,
    name: str,
    trust: m3.types.TrustLevel = TrustLevel.UNTRUSTED,
    kind: Literal['stdio'] = 'stdio',
    command: str,
    args: tuple[str, ...] = (),
    environment: collections.abc.Mapping[str, m3.types.SecretReference | str] = ...,
    cwd: str | None = None,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
namestrYes—min_length=1, max_length=256—
trustm3.types.TrustLevelNoTrustLevel.UNTRUSTED ('untrusted')——
kindLiteral['stdio']No'stdio'——
commandstrYes—min_length=1—
argstuple[str, ...]No()——
environmentcollections.abc.Mapping[str, m3.types.SecretReference | str]Nofactory builtins.dict()——
cwdstr | NoneNoNone——

InProcessServer ​

python
m3.types.InProcessServer(
    *,
    name: str,
    trust: m3.types.TrustLevel = TrustLevel.SDK_LOOPBACK,
    kind: Literal['in_process'] = 'in_process',
    factory: Any,
    descriptor: collections.abc.Mapping[str, Any] = ...,
    origin: str = 'python_registration',
) -> None

Runtime-only server descriptor; the factory is excluded from serialization.

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
namestrYes—min_length=1, max_length=256—
trustm3.types.TrustLevelNoTrustLevel.SDK_LOOPBACK ('sdk_loopback')——
kindLiteral['in_process']No'in_process'——
factoryAnyYes———
descriptorcollections.abc.Mapping[str, Any]Nofactory builtins.dict()——
originstrNo'python_registration'min_length=1, max_length=256—

SecretReference ​

python
m3.types.SecretReference(
    *,
    source: Literal['environment', 'provider'],
    name: str,
) -> None

Reference to a secret; resolved values are deliberately not modelled.

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
sourceLiteral['environment', 'provider']Yes———
namestrYes—min_length=1, max_length=256—

ServerBinding ​

python
m3.types.ServerBinding(
    *,
    server: m3.types.StdioServer | m3.types.HTTPServer | m3.types.InProcessServer | None = None,
    profile: m3.types.ServerProfileRef | None = None,
    alias: str | None = None,
    required: bool = True,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
serverm3.types.StdioServer | m3.types.HTTPServer | m3.types.InProcessServer | NoneNoNonevariant 1: discriminator='kind'—
profilem3.types.ServerProfileRef | NoneNoNone——
aliasstr | NoneNoNonemin_length=1, max_length=256—
requiredboolNoTrue——

ServerValue ​

python
m3.types.ServerValue(
    *args,
    **kwargs,
)

ToolPolicy ​

python
m3.types.ToolPolicy(
    *args,
    **kwargs,
)

UserMessage ​

python
m3.types.UserMessage(
    *,
    content: tuple[m3.types.TextContent | m3.types.FileContent | m3.types.ImageContent | m3.types.AudioContent | m3.types.ResourceLink | m3.types.OpaqueContent, ...],
    metadata: collections.abc.Mapping[str, Any] = ...,
) -> None

Typed user message; a string is accepted as text shorthand.

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
contenttuple[m3.types.TextContent | m3.types.FileContent | m3.types.ImageContent | m3.types.AudioContent | m3.types.ResourceLink | m3.types.OpaqueContent, ...]Yes—type argument 1: discriminator='kind'—
metadatacollections.abc.Mapping[str, Any]Nofactory builtins.dict()——

TextContent ​

python
m3.types.TextContent(
    *,
    kind: Literal['text'] = 'text',
    text: str,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
kindLiteral['text']No'text'——
textstrYes———

DirectSpec ​

python
m3.types.DirectSpec(
    *,
    run_id: m3.types.RunId | None = None,
    project_id: m3.types.ProjectId | None = None,
    project_name: str | None = None,
    suite_name: str | None = None,
    case_id: str | None = None,
    servers: tuple[m3.types.ServerBinding, ...] = (),
    protocol: m3.types.ProtocolConstraint = ...,
    timeout_seconds: float | None = None,
    goal: str | None = None,
    evaluations: tuple[m3.types.EvaluationRegistration, ...] = (),
    artifact_policy: m3.types.ArtifactPolicy = ArtifactPolicy.FAILED,
    declared_artifacts: tuple[str, ...] = (),
    workspace: m3.types.WorkspacePolicy = ...,
    tool_policy: m3.types.RestrictiveToolPolicy | m3.types.FullToolPolicy | m3.types.NativeToolPolicy = ...,
    permission_policy: m3.types.PermissionPolicy = ...,
    sampling_policy: m3.types.SamplingPolicy = ...,
    filesystem_policy: m3.types.FilesystemPolicy = ...,
    terminal_policy: m3.types.TerminalPolicy = ...,
    metadata: collections.abc.Mapping[str, str | int | float | bool | None] = ...,
    kind: Literal['direct'] = 'direct',
    operation: m3.types.ListTools | m3.types.ListResources | m3.types.ListTemplates | m3.types.ListPrompts | m3.types.CallTool | m3.types.ReadResource | m3.types.GetPrompt | m3.types.Ping,
    validate_schemas: bool = False,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
run_idm3.types.RunId | NoneNoNone——
project_idm3.types.ProjectId | NoneNoNone——
project_namestr | NoneNoNonemin_length=1, max_length=256—
suite_namestr | NoneNoNonemin_length=1, max_length=256—
case_idstr | NoneNoNonemin_length=1, max_length=256—
serverstuple[m3.types.ServerBinding, ...]No()——
protocolm3.types.ProtocolConstraintNofactory m3.types.ProtocolConstraint()——
timeout_secondsfloat | NoneNoNonegt=0—
goalstr | NoneNoNonemax_length=32768—
evaluationstuple[m3.types.EvaluationRegistration, ...]No()——
artifact_policym3.types.ArtifactPolicyNoArtifactPolicy.FAILED ('failed')——
declared_artifactstuple[str, ...]No()——
workspacem3.types.WorkspacePolicyNofactory m3.types.WorkspacePolicy()——
tool_policym3.types.RestrictiveToolPolicy | m3.types.FullToolPolicy | m3.types.NativeToolPolicyNofactory m3.types.RestrictiveToolPolicy()discriminator='kind'—
permission_policym3.types.PermissionPolicyNofactory m3.types.PermissionPolicy()——
sampling_policym3.types.SamplingPolicyNofactory m3.types.SamplingPolicy()——
filesystem_policym3.types.FilesystemPolicyNofactory m3.types.FilesystemPolicy()——
terminal_policym3.types.TerminalPolicyNofactory m3.types.TerminalPolicy()——
metadatacollections.abc.Mapping[str, str | int | float | bool | None]Nofactory builtins.dict()——
kindLiteral['direct']No'direct'——
operationm3.types.ListTools | m3.types.ListResources | m3.types.ListTemplates | m3.types.ListPrompts | m3.types.CallTool | m3.types.ReadResource | m3.types.GetPrompt | m3.types.PingYes—discriminator='kind'—
validate_schemasboolNoFalse——

DirectOperation ​

python
m3.types.DirectOperation(
    *args,
    **kwargs,
)

CallTool ​

python
m3.types.CallTool(
    *,
    server: str | None = None,
    kind: Literal['call_tool'] = 'call_tool',
    name: str,
    arguments: collections.abc.Mapping[str, Any] = ...,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
serverstr | NoneNoNonemin_length=1, max_length=256—
kindLiteral['call_tool']No'call_tool'——
namestrYes—min_length=1, max_length=256—
argumentscollections.abc.Mapping[str, Any]Nofactory builtins.dict()——

ListTools ​

python
m3.types.ListTools(
    *,
    server: str | None = None,
    kind: Literal['list_tools'] = 'list_tools',
    cursor: str | None = None,
    all_pages: bool = True,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
serverstr | NoneNoNonemin_length=1, max_length=256—
kindLiteral['list_tools']No'list_tools'——
cursorstr | NoneNoNonemax_length=256—
all_pagesboolNoTrue——

ListResources ​

python
m3.types.ListResources(
    *,
    server: str | None = None,
    kind: Literal['list_resources'] = 'list_resources',
    cursor: str | None = None,
    all_pages: bool = True,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
serverstr | NoneNoNonemin_length=1, max_length=256—
kindLiteral['list_resources']No'list_resources'——
cursorstr | NoneNoNonemax_length=256—
all_pagesboolNoTrue——

ListTemplates ​

python
m3.types.ListTemplates(
    *,
    server: str | None = None,
    kind: Literal['list_resource_templates'] = 'list_resource_templates',
    cursor: str | None = None,
    all_pages: bool = True,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
serverstr | NoneNoNonemin_length=1, max_length=256—
kindLiteral['list_resource_templates']No'list_resource_templates'——
cursorstr | NoneNoNonemax_length=256—
all_pagesboolNoTrue——

ListPrompts ​

python
m3.types.ListPrompts(
    *,
    server: str | None = None,
    kind: Literal['list_prompts'] = 'list_prompts',
    cursor: str | None = None,
    all_pages: bool = True,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
serverstr | NoneNoNonemin_length=1, max_length=256—
kindLiteral['list_prompts']No'list_prompts'——
cursorstr | NoneNoNonemax_length=256—
all_pagesboolNoTrue——

ReadResource ​

python
m3.types.ReadResource(
    *,
    server: str | None = None,
    kind: Literal['read_resource'] = 'read_resource',
    uri: str,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
serverstr | NoneNoNonemin_length=1, max_length=256—
kindLiteral['read_resource']No'read_resource'——
uristrYes—min_length=1, max_length=4096—

GetPrompt ​

python
m3.types.GetPrompt(
    *,
    server: str | None = None,
    kind: Literal['get_prompt'] = 'get_prompt',
    name: str,
    arguments: collections.abc.Mapping[str, Any] = ...,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
serverstr | NoneNoNonemin_length=1, max_length=256—
kindLiteral['get_prompt']No'get_prompt'——
namestrYes—min_length=1, max_length=256—
argumentscollections.abc.Mapping[str, Any]Nofactory builtins.dict()——

Ping ​

python
m3.types.Ping(
    *,
    server: str | None = None,
    kind: Literal['ping'] = 'ping',
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
serverstr | NoneNoNonemin_length=1, max_length=256—
kindLiteral['ping']No'ping'——

EvaluationResult ​

python
m3.types.EvaluationResult(
    *,
    evaluation_id: m3.types.EvaluationId,
    name: str,
    status: m3.types.EvaluationStatus,
    required: bool = False,
    message: str | None = None,
    context: m3.types.EvaluationContext | None = None,
    score: float | None = None,
    rationale: str | None = None,
    metrics: collections.abc.Mapping[str, float] = ...,
    provenance: m3.types.EvaluationSource | None = None,
    details: collections.abc.Mapping[str, Any] = ...,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
evaluation_idm3.types.EvaluationIdYes———
namestrYes———
statusm3.types.EvaluationStatusYes———
requiredboolNoFalse——
messagestr | NoneNoNone——
contextm3.types.EvaluationContext | NoneNoNone——
scorefloat | NoneNoNone——
rationalestr | NoneNoNone——
metricscollections.abc.Mapping[str, float]Nofactory builtins.dict()——
provenancem3.types.EvaluationSource | NoneNoNone——
detailscollections.abc.Mapping[str, Any]Nofactory builtins.dict()——

EvaluationRecord ​

python
m3.types.EvaluationRecord(
    *,
    evaluation_id: m3.types.EvaluationId,
    execution_id: m3.types.ExecutionId,
    suite_id: m3.types.SuiteId | None = None,
    suite_name: str | None = None,
    case_id: str | None = None,
    turn_id: m3.types.TurnId | None = None,
    name: str,
    status: m3.types.EvaluationStatus,
    required: bool = False,
    message: str | None = None,
    score: float | None = None,
    rationale: str | None = None,
    metrics: collections.abc.Mapping[str, float] = ...,
    provenance: m3.types.EvaluationSource | None = None,
    details: collections.abc.Mapping[str, Any] = ...,
    goal: str | None = None,
    metadata: collections.abc.Mapping[str, str | int | float | bool | None] = ...,
    subject_kind: str = 'unknown',
    subject_digest: str | None = None,
    run_id: m3.types.RunId | None = None,
    created_at: datetime.datetime = ...,
) -> None

Compact durable evaluation row linked to an execution report.

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
evaluation_idm3.types.EvaluationIdYes———
execution_idm3.types.ExecutionIdYes———
suite_idm3.types.SuiteId | NoneNoNone——
suite_namestr | NoneNoNone——
case_idstr | NoneNoNonemin_length=1, max_length=256—
turn_idm3.types.TurnId | NoneNoNone——
namestrYes———
statusm3.types.EvaluationStatusYes———
requiredboolNoFalse——
messagestr | NoneNoNone——
scorefloat | NoneNoNone——
rationalestr | NoneNoNone——
metricscollections.abc.Mapping[str, float]Nofactory builtins.dict()——
provenancem3.types.EvaluationSource | NoneNoNone——
detailscollections.abc.Mapping[str, Any]Nofactory builtins.dict()——
goalstr | NoneNoNone——
metadatacollections.abc.Mapping[str, str | int | float | bool | None]Nofactory builtins.dict()——
subject_kindstrNo'unknown'——
subject_digeststr | NoneNoNonepattern='^[0-9a-f]{64}$'—
run_idm3.types.RunId | NoneNoNone——
created_atdatetime.datetimeNofactory m3._types.base._utc_now()——

EvaluationContext ​

python
m3.types.EvaluationContext(
    *,
    subject: Any = None,
    subject_kind: str = 'unknown',
    execution_id: m3.types.ExecutionId | None = None,
    suite_id: m3.types.SuiteId | None = None,
    suite_name: str | None = None,
    case_id: str | None = None,
    turn_id: m3.types.TurnId | None = None,
    goal: str | None = None,
    trace: m3.types.TraceResult | None = None,
    artifacts: tuple[m3.types.ArtifactRef, ...] = (),
    metadata: collections.abc.Mapping[str, str | int | float | bool | None] = ...,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
subjectAnyNoNone——
subject_kindstrNo'unknown'——
execution_idm3.types.ExecutionId | NoneNoNone——
suite_idm3.types.SuiteId | NoneNoNone——
suite_namestr | NoneNoNone——
case_idstr | NoneNoNonemin_length=1, max_length=256—
turn_idm3.types.TurnId | NoneNoNone——
goalstr | NoneNoNone——
tracem3.types.TraceResult | NoneNoNone——
artifactstuple[m3.types.ArtifactRef, ...]No()——
metadatacollections.abc.Mapping[str, str | int | float | bool | None]Nofactory builtins.dict()——

EvaluationDecision ​

python
m3.types.EvaluationDecision(
    *,
    status: m3.types.EvaluationStatus,
    score: float | None = None,
    rationale: str | None = None,
    metrics: collections.abc.Mapping[str, float] = ...,
    provenance: m3.types.EvaluationSource | None = None,
    details: collections.abc.Mapping[str, Any] = ...,
) -> None

Structured evaluator output, compatible with scalar verdicts.

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
statusm3.types.EvaluationStatusYes———
scorefloat | NoneNoNone——
rationalestr | NoneNoNone——
metricscollections.abc.Mapping[str, float]Nofactory builtins.dict()——
provenancem3.types.EvaluationSource | NoneNoNone——
detailscollections.abc.Mapping[str, Any]Nofactory builtins.dict()——

EvaluationStatus ​

python
m3.types.EvaluationStatus(
    *values,
)
  • PASSED = 'passed'
  • FAILED = 'failed'
  • INCONCLUSIVE = 'inconclusive'
  • ERROR = 'error'
  • NOT_RUN = 'not_run'

EvaluationSource ​

python
m3.types.EvaluationSource(
    *,
    kind: str,
    provider: str | None = None,
    model: str | None = None,
    rubric_id: str | None = None,
    rubric_version: str | None = None,
    config_digest: str | None = None,
) -> None

Optional, redaction-safe provenance for a structured judgment.

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
kindstrYes—min_length=1, max_length=128—
providerstr | NoneNoNonemax_length=256—
modelstr | NoneNoNonemax_length=256—
rubric_idstr | NoneNoNonemax_length=256—
rubric_versionstr | NoneNoNonemax_length=128—
config_digeststr | NoneNoNonemax_length=256—

TraceResult ​

python
m3.types.TraceResult(
    *,
    trace_id: m3.types.TraceId,
    execution_id: m3.types.ExecutionId,
    completeness: Literal['complete', 'partial'] = 'complete',
    highest_sequence: int = 0,
    events: tuple[m3.types.Event, ...] = (),
    limitations: tuple[str, ...] = (),
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
trace_idm3.types.TraceIdYes———
execution_idm3.types.ExecutionIdYes———
completenessLiteral['complete', 'partial']No'complete'——
highest_sequenceintNo0ge=0—
eventstuple[m3.types.Event, ...]No()——
limitationstuple[str, ...]No()——
python
view(
    self,
) -> _TraceView

Project this finalized stable trace into the typed view.

EvidenceRef ​

python
m3.types.EvidenceRef(
    *,
    evidence_id: str,
    sha256: str | None = None,
    size_bytes: int | None = None,
    media_type: str | None = None,
    storage_key: str | None = None,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
evidence_idstrYes—min_length=1, max_length=256—
sha256str | NoneNoNonepattern='^[0-9a-f]{64}$'—
size_bytesint | NoneNoNonege=0—
media_typestr | NoneNoNonemax_length=256—
storage_keystr | NoneNoNonemin_length=1, max_length=1024—

ArtifactRef ​

python
m3.types.ArtifactRef(
    *,
    artifact_id: m3.types.ArtifactId,
    execution_id: m3.types.ExecutionId,
    name: str,
    media_type: str | None = None,
    size_bytes: int,
    sha256: str,
    redacted: Literal[True] = True,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
artifact_idm3.types.ArtifactIdYes———
execution_idm3.types.ExecutionIdYes———
namestrYes—min_length=1—
media_typestr | NoneNoNone——
size_bytesintYes—ge=0—
sha256strYes—pattern='^[0-9a-f]{64}$'—
redactedLiteral[True]NoTrue——

ExecutionReport ​

python
m3.types.ExecutionReport(
    *,
    snapshot: m3.types.ExecutionState,
    agent: m3.types.AgentIdentity | None = None,
    events: tuple[m3.types.Event, ...] = (),
    artifacts: tuple[m3.types.ArtifactRef, ...] = (),
    direct_result: m3.types.ListToolsResult | m3.types.ListResourcesResult | m3.types.ListTemplatesResult | m3.types.ListPromptsResult | m3.types.CallToolResult | m3.types.ReadResourceResult | m3.types.GetPromptResult | m3.types.PingResult | None = None,
    error: m3.types.ErrorInfo | None = None,
    evidence: m3.types.ExecutionEvidence | None = None,
    turns: tuple[m3.types.TurnResult, ...] = (),
    evaluations: tuple[m3.types.EvaluationRecord, ...] = (),
    event_count: int = 0,
    events_truncated: bool = False,
    next_after_sequence: int | None = None,
    artifact_count: int = 0,
    artifacts_truncated: bool = False,
) -> None

Portable evidence that is actually persisted by an execution store.

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
snapshotm3.types.ExecutionStateYes———
agentm3.types.AgentIdentity | NoneNoNone——
eventstuple[m3.types.Event, ...]No()——
artifactstuple[m3.types.ArtifactRef, ...]No()——
direct_resultm3.types.ListToolsResult | m3.types.ListResourcesResult | m3.types.ListTemplatesResult | m3.types.ListPromptsResult | m3.types.CallToolResult | m3.types.ReadResourceResult | m3.types.GetPromptResult | m3.types.PingResult | NoneNoNonevariant 1: discriminator='kind'—
errorm3.types.ErrorInfo | NoneNoNone——
evidencem3.types.ExecutionEvidence | NoneNoNone——
turnstuple[m3.types.TurnResult, ...]No()——
evaluationstuple[m3.types.EvaluationRecord, ...]No()——
event_countintNo0ge=0—
events_truncatedboolNoFalse——
next_after_sequenceint | NoneNoNonege=-1—
artifact_countintNo0ge=0—
artifacts_truncatedboolNoFalse——

ExecutionEvidence ​

python
m3.types.ExecutionEvidence(
    *,
    completeness: Literal['complete', 'partial'],
    limitations: tuple[str, ...] = (),
    reason: str | None = None,
) -> None

Typed completeness markers persisted in stable terminal events.

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
completenessLiteral['complete', 'partial']Yes———
limitationstuple[str, ...]No()——
reasonstr | NoneNoNone——

Capability ​

python
m3.types.Capability(
    *,
    name: str,
    status: m3.types.CapabilityStatus,
    reason: str | None = None,
    detected_version: str | None = None,
    protocol_version: str | None = None,
    transport: m3.types.TransportKind | None = None,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
namestrYes———
statusm3.types.CapabilityStatusYes———
reasonstr | NoneNoNone——
detected_versionstr | NoneNoNone——
protocol_versionstr | NoneNoNone——
transportm3.types.TransportKind | NoneNoNone——

Readiness ​

python
m3.types.Readiness(
    *,
    ready: bool,
    capabilities: tuple[m3.types.Capability, ...] = (),
    reason: str | None = None,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
readyboolYes———
capabilitiestuple[m3.types.Capability, ...]No()——
reasonstr | NoneNoNone——

ProtocolConstraint ​

python
m3.types.ProtocolConstraint(
    *,
    revision: str | None = None,
    transport: m3.types.TransportKind | None = None,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
revisionstr | NoneNoNonemin_length=1, max_length=128—
transportm3.types.TransportKind | NoneNoNone——

WorkspacePolicy ​

python
m3.types.WorkspacePolicy(
    *,
    kind: m3.types.WorkspaceKind = WorkspaceKind.TEMPORARY,
    source: str | None = None,
    acknowledge_risk: bool = False,
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
kindm3.types.WorkspaceKindNoWorkspaceKind.TEMPORARY ('temporary')——
sourcestr | NoneNoNone——
acknowledge_riskboolNoFalse——

PermissionPolicy ​

python
m3.types.PermissionPolicy(
    *,
    mode: Literal['deny', 'prompt', 'allow'] = 'deny',
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
modeLiteral['deny', 'prompt', 'allow']No'deny'——

SamplingPolicy ​

python
m3.types.SamplingPolicy(
    *,
    mode: Literal['deny', 'allow'] = 'deny',
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
modeLiteral['deny', 'allow']No'deny'——

FilesystemPolicy ​

python
m3.types.FilesystemPolicy(
    *,
    mode: Literal['deny', 'read_only', 'read_write'] = 'deny',
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
modeLiteral['deny', 'read_only', 'read_write']No'deny'——

TerminalPolicy ​

python
m3.types.TerminalPolicy(
    *,
    mode: Literal['deny', 'allow'] = 'deny',
) -> None

Model fields:

FieldTypeRequiredDefaultConstraintsDescription
modeLiteral['deny', 'allow']No'deny'——