Manifest, the *Config models, and the filter-predicate signatures.
The *Config models include the transport config TaiMCPConfig.
The impl methods that build the derived lookup maps and run the include/exclude
filtering (model_post_init + the private _build_*/_should_include
helpers) are logic and stay with the impl — only the field shape, the model
validators, and the public predicate/query signatures are the contract.
AgentsConfig
tai42_contract.manifest.AgentsConfig
module import path plus selection config (no extensions).
Attributes
ApiToolsConfig
tai42_contract.manifest.ApiToolsConfig
title and is deliberately NOT
a BaseConfig subclass. include/exclude name operations to project
or suppress; expose_destructive gates destructive-flagged operations; the
extensions map (from the mixin) attaches extension combos to projected
operations. Unlike BaseConfig, a name appearing in BOTH include and
exclude is a loud validation error — this stricter rule is unique to this
config and is never retrofitted onto other configs.
Attributes
BaseConfig
tai42_contract.manifest.BaseConfig
title plus include/exclude selection lists.
Attributes
ExtensionElement
tai42_contract.manifest.ExtensionElement
ExtensionsConfigMixin
tai42_contract.manifest.ExtensionsConfigMixin
extensions attachment map for config kinds that support clip-on extensions.
Mixed into ToolsConfig and TaiMCPConfig.
extensions maps a tool base-name to the extension combo(s) attached to
it, applied AFTER selection and independent of include/exclude. The
stored shape is always tool -> list-of-combos
(dict[str, list[list[ExtensionElement]]]) so resolution reads ONE shape
regardless of how the YAML was written; each combo element is an extension
name or a {"name", "config"} mapping binding author config to it. The
normalizing validator wraps a flat combo and rejects malformed input loudly.
Attributes
Members
normalize_extensions
tai42_contract.manifest.ExtensionsConfigMixin.normalize_extensions
{weather: [chain]} -> {"weather": [["chain"]]}); a list-of-combos
value is kept as multiple combos. A combo element is an extension name or
a {"name", "config"} mapping (author-bound config). This enforces
SHAPE only: it does NOT check that the extension names are registered
(ExtensionRegistry’s job) or that the tool is selected
(missing_tools’ job).
Parameters
MCPConfig
tai42_contract.manifest.MCPConfig
url/uds/command.
Attributes
Members
normalize_args
tai42_contract.manifest.MCPConfig.normalize_args
None args value to an empty list.
Parameters
normalize_dict_values
tai42_contract.manifest.MCPConfig.normalize_dict_values
None to an empty dict and stringify values, failing loudly on a None value.
Parameters
Manifest
tai42_contract.manifest.Manifest
Members
should_include_tool
tai42_contract.manifest.Manifest.should_include_tool
name from module survives the include/exclude filter.
Also records the decision on the matching config.
Parameters
should_include_agent
tai42_contract.manifest.Manifest.should_include_agent
name from module survives the include/exclude filter.
Parameters
should_include_mcp_tool
tai42_contract.manifest.Manifest.should_include_mcp_tool
name under title survives the include/exclude filter.
Parameters
replace_mcp
tai42_contract.manifest.Manifest.replace_mcp
live_manifest
tai42_contract.manifest.Manifest.live_manifest
tools/agents/mcp reflect the live config maps.
The maps are post-filter.
find_title
tai42_contract.manifest.Manifest.find_title
TaiMCPConfig
tai42_contract.manifest.TaiMCPConfig
config plus optional managed-connector binding.
Attributes
Members
is_managed
tai42_contract.manifest.TaiMCPConfig.is_managed
ToolsConfig
tai42_contract.manifest.ToolsConfig
module import path plus selection and extension config.
Attributes

