> For the complete documentation index, see [llms.txt](https://docs.talus.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.talus.network/reference/move/nexus_interface/meta_schema.md).

# nexus\_interface::meta\_schema

* [Struct `PortSchema`](#struct-portschema)
* [Struct `OutputVariantSchema`](#struct-outputvariantschema)
* [Struct `MetaSchema`](#struct-metaschema)
* [Struct `PortInputCommitment`](#struct-portinputcommitment)
* [Enum `ValueKind`](#enum-valuekind)
* [Enum `PortCommitment`](#enum-portcommitment)
* [Constants](#constants)
* [Function `value_kind_object`](#function-value_kind_object)
* [Function `value_kind_data`](#function-value_kind_data)
* [Function `port_schema`](#function-port_schema)
* [Function `output_variant_schema`](#function-output_variant_schema)
* [Function `new`](#function-new)
* [Function `assert_valid_for_tool`](#function-assert_valid_for_tool)
* [Function `conforms_input_cardinality`](#function-conforms_input_cardinality)
* [Function `store_input`](#function-store_input)
* [Function `conforms_input_port`](#function-conforms_input_port)
* [Function `conforms_complete_input`](#function-conforms_complete_input)
* [Function `conforms_raw_output`](#function-conforms_raw_output)
* [Function `canonical_schema_mismatch_failure`](#function-canonical_schema_mismatch_failure)
* [Function `port_commitment_one`](#function-port_commitment_one)
* [Function `port_commitment_many`](#function-port_commitment_many)
* [Function `input_hash`](#function-input_hash)
* [Function `input_hash_for_stored`](#function-input_hash_for_stored)
* [Function `input_ports`](#function-input_ports)
* [Function `port_name`](#function-port_name)
* [Function `port_is_many`](#function-port_is_many)
* [Function `find_input_port`](#function-find_input_port)
* [Function `find_variant_port`](#function-find_variant_port)
* [Function `value_kinds_compatible`](#function-value_kinds_compatible)
* [Function `failure_variant`](#function-failure_variant)
* [Function `failure_port`](#function-failure_port)

### Struct `PortSchema`

One directional Tool port contract.

```move
public struct PortSchema has copy, drop, store
```

<details>

<summary>Fields</summary>

[`port_name`](#nexus_interface_meta_schema_port_name)`: vector<u8>is_many: bool`[`value_kind`](#nexus_interface_meta_schema_value_kind)`:` [`nexus_interface::meta_schema::ValueKind`](#nexus_interface_meta_schema_ValueKind)

</details>

#### Struct `OutputVariantSchema`

One mutually exclusive Tool output alternative.

```move
public struct OutputVariantSchema has copy, drop, store
```

<details>

<summary>Fields</summary>

`variant_name: vector<u8>ports: vector<`[`nexus_interface::meta_schema::PortSchema`](#nexus_interface_meta_schema_PortSchema)`>`

</details>

#### Struct `MetaSchema`

Immutable execution contract registered for one Tool.

```move
public struct MetaSchema has copy, drop, store
```

<details>

<summary>Fields</summary>

[`input_ports`](#nexus_interface_meta_schema_input_ports)`: vector<`[`nexus_interface::meta_schema::PortSchema`](#nexus_interface_meta_schema_PortSchema)`>output_variants: vector<`[`nexus_interface::meta_schema::OutputVariantSchema`](#nexus_interface_meta_schema_OutputVariantSchema)`>`

</details>

#### Struct `PortInputCommitment`

Transient serialization-only binding between one immutable port name and its value commitment.

```move
public struct PortInputCommitment has copy, drop, store
```

<details>

<summary>Fields</summary>

[`port_name`](#nexus_interface_meta_schema_port_name)`: vector<u8>commitment:` [`nexus_interface::meta_schema::PortCommitment`](#nexus_interface_meta_schema_PortCommitment)

</details>

#### Enum `ValueKind`

Execution-relevant class of one typed value.

```move
public enum ValueKind has copy, drop, store
```

<details>

<summary>Variants</summary>

Variant `Object`Variant `Data`

</details>

#### Enum `PortCommitment`

Transient serialization-only commitment for one immutable-schema port.

```move
public enum PortCommitment has copy, drop, store
```

<details>

<summary>Variants</summary>

Variant `Onekind:` [`nexus_interface::meta_schema::ValueKind`](#nexus_interface_meta_schema_ValueKind)`commitment: vector<u8>`Variant `Manykind:` [`nexus_interface::meta_schema::ValueKind`](#nexus_interface_meta_schema_ValueKind)`commitments: vector<vector<u8>>`

</details>

#### Constants

```move
#[error]
const EInvalidMetaSchema: vector<u8> = b"Invalid Tool MetaSchema";
```

```move
#[error]
const EInputSchemaMismatch: vector<u8> = b"Tool input schema or canonical data mismatch";
```

```move
#[error]
const EPortCommitmentMismatch: vector<u8> = b"Tool input commitment has invalid value kinds";
```

```move
const MAX_IDENTIFIER_BYTES: u64 = 128;
```

```move
const MAX_INPUT_PORTS: u64 = 32;
```

```move
const MAX_OUTPUT_VARIANTS: u64 = 8;
```

```move
const MAX_PORTS_PER_OUTPUT_VARIANT: u64 = 16;
```

```move
const MAX_META_SCHEMA_BYTES: u64 = 65536;
```

```move
const MAX_RAW_OUTPUT_BYTES: u64 = 262144;
```

```move
const INPUT_DOMAIN: vector<u8> = vector[110, 101, 120, 117, 115, 46, 100, 105, 114, 101, 99, 116, 46, 118, 51, 46, 114, 101, 115, 111, 108, 118, 101, 100, 45, 105, 110, 112, 117, 116];
```

```move
const FAILURE_VARIANT: vector<u8> = vector[95, 101, 114, 114, 95, 101, 118, 97, 108];
```

```move
const FAILURE_PORT: vector<u8> = vector[114, 101, 97, 115, 111, 110];
```

```move
const SCHEMA_MISMATCH_REASON: vector<u8> = vector[84, 111, 111, 108, 32, 111, 117, 116, 112, 117, 116, 32, 115, 99, 104, 101, 109, 97, 32, 109, 105, 115, 109, 97, 116, 99, 104];
```

#### Function `value_kind_object`

```move
public fun value_kind_object(): nexus_interface::meta_schema::ValueKind
```

#### Function `value_kind_data`

```move
public fun value_kind_data(): nexus_interface::meta_schema::ValueKind
```

#### Function `port_schema`

```move
public fun port_schema(port_name: vector<u8>, is_many: bool, value_kind: nexus_interface::meta_schema::ValueKind): nexus_interface::meta_schema::PortSchema
```

#### Function `output_variant_schema`

```move
public fun output_variant_schema(variant_name: vector<u8>, ports: vector<nexus_interface::meta_schema::PortSchema>): nexus_interface::meta_schema::OutputVariantSchema
```

#### Function `new`

```move
public fun new(input_ports: vector<nexus_interface::meta_schema::PortSchema>, output_variants: vector<nexus_interface::meta_schema::OutputVariantSchema>): nexus_interface::meta_schema::MetaSchema
```

#### Function `assert_valid_for_tool`

```move
public fun assert_valid_for_tool(self: &nexus_interface::meta_schema::MetaSchema, is_offchain: bool)
```

#### Function `conforms_input_cardinality`

Checks whether the One/Many variant matches the schema cardinality.

```move
public fun conforms_input_cardinality(schema: &nexus_interface::meta_schema::PortSchema, value: &nexus_primitives::data::NexusData): bool
```

#### Function `store_input`

Validates untrusted typed values against one port schema and constructs canonical data.

```move
public fun store_input(schema: &nexus_interface::meta_schema::PortSchema, values: vector<nexus_primitives::data::NexusValue>): nexus_primitives::data::NexusData
```

#### Function `conforms_input_port`

Checks canonical cardinality and semantic kind directly from stored values.

```move
public fun conforms_input_port(schema: &nexus_interface::meta_schema::PortSchema, value: &nexus_primitives::data::NexusData): bool
```

#### Function `conforms_complete_input`

Checks complete canonical inputs in immutable schema order.

```move
public fun conforms_complete_input(self: &nexus_interface::meta_schema::MetaSchema, values: &vector<nexus_primitives::data::NexusData>): bool
```

#### Function `conforms_raw_output`

Checks an exact ordered canonical output envelope.

```move
public fun conforms_raw_output(self: &nexus_interface::meta_schema::MetaSchema, output: &nexus_primitives::tagged_output::TaggedOutput): bool
```

#### Function `canonical_schema_mismatch_failure`

Builds the canonical schema-mismatch output through the typed active builder.

```move
public fun canonical_schema_mismatch_failure(): nexus_primitives::tagged_output::TaggedOutput
```

#### Function `port_commitment_one`

```move
public fun port_commitment_one(value: &nexus_primitives::data::NexusValue): nexus_interface::meta_schema::PortCommitment
```

#### Function `port_commitment_many`

```move
public fun port_commitment_many(values: &vector<nexus_primitives::data::NexusValue>): nexus_interface::meta_schema::PortCommitment
```

#### Function `input_hash`

Hashes canonical schema-ordered name/commitment pairs shared by Nexus and on-chain Tools.

```move
public fun input_hash(port_names: vector<vector<u8>>, commitments: vector<nexus_interface::meta_schema::PortCommitment>): vector<u8>
```

#### Function `input_hash_for_stored`

Validates complete persisted canonical inputs and derives the shared input hash.

```move
public fun input_hash_for_stored(self: &nexus_interface::meta_schema::MetaSchema, values: &vector<nexus_primitives::data::NexusData>): vector<u8>
```

#### Function `input_ports`

```move
public fun input_ports(self: &nexus_interface::meta_schema::MetaSchema): &vector<nexus_interface::meta_schema::PortSchema>
```

#### Function `port_name`

```move
public fun port_name(self: &nexus_interface::meta_schema::PortSchema): &vector<u8>
```

#### Function `port_is_many`

```move
public fun port_is_many(self: &nexus_interface::meta_schema::PortSchema): bool
```

#### Function `find_input_port`

```move
public fun find_input_port(self: &nexus_interface::meta_schema::MetaSchema, name: &vector<u8>): std::option::Option<nexus_interface::meta_schema::PortSchema>
```

#### Function `find_variant_port`

```move
public fun find_variant_port(self: &nexus_interface::meta_schema::MetaSchema, variant_name: &vector<u8>, port_name: &vector<u8>): std::option::Option<nexus_interface::meta_schema::PortSchema>
```

#### Function `value_kinds_compatible`

```move
public fun value_kinds_compatible(from: &nexus_interface::meta_schema::PortSchema, to: &nexus_interface::meta_schema::PortSchema): bool
```

#### Function `failure_variant`

```move
public fun failure_variant(): vector<u8>
```

#### Function `failure_port`

```move
public fun failure_port(): vector<u8>
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.talus.network/reference/move/nexus_interface/meta_schema.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `build a script that syncs our docs to a CMS` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
