Skip to main content

Tool Mapping Rules Reference

Complete reference for mapping AXAG Semantic Manifest actions to MCP tool definitions.

Mapping Table​

Manifest FieldMCP Tool FieldTransformation
intentnameReplace . with _
descriptiondescriptionDirect copy
required_parameters[]input_schema.properties + input_schema.requiredOne property per parameter; names collected into required
optional_parameters[]input_schema.propertiesOne property per parameter
parameter.min / maxproperties[x].minimum / maximumRenamed to JSON Schema keywords
parameter.formatproperties[x].formaturl → uri, datetime → date-time; others copied
parameter.type, enum, minLength, maxLength, pattern, default, items, properties, descriptionSame nameDirect copy
action_typemetadata.action_typeDirect copy
risk_levelmetadata.risk_levelDirect copy, none when absent
idempotentmetadata.idempotentDirect copy, false when absent
confirmation_requiredmetadata.confirmation_requiredDirect copy, false when absent
approval_requiredmetadata.approval_requiredDirect copy, false when absent
approval_roles, async, scope, tenant_boundary, required_roles, side_effects, preconditions, postconditionsmetadata.*Copied when present and non-empty
intent, entitymetadata.source_intent, metadata.source_entityDirect copy

Tool Name Generation​

name = intent.replaceAll(".", "_")

Examples:

  • product.search → product_search
  • cart.add_item → cart_add_item
  • checkout.begin → checkout_begin

Input Schema Generation​

Manifest parameters​

{
"required_parameters": [{ "name": "query", "type": "string" }],
"optional_parameters": [{ "name": "price_max", "type": "number", "min": 0 }]
}

Generated JSON Schema​

{
"type": "object",
"properties": {
"query": { "type": "string" },
"price_max": { "type": "number", "minimum": 0 }
},
"required": ["query"]
}

Metadata Generation​

Safety and scope fields are grouped into metadata on the tool:

{
"metadata": {
"action_type": "write",
"risk_level": "high",
"idempotent": false,
"confirmation_required": true,
"approval_required": false,
"preconditions": ["cart_validated"],
"side_effects": ["inventory_locked"],
"source_intent": "checkout.begin",
"source_entity": "order"
}
}

Nested Object Handling​

properties on an object parameter is JSON Schema and is copied into the tool unchanged, including any nested required list:

Manifest​

{
"required_parameters": [
{
"name": "budget",
"type": "object",
"properties": {
"amount": { "type": "number", "minimum": 0 },
"currency": { "type": "string", "enum": ["USD", "EUR"] }
}
}
]
}

Generated​

{
"budget": {
"type": "object",
"properties": {
"amount": { "type": "number", "minimum": 0 },
"currency": { "type": "string", "enum": ["USD", "EUR"] }
}
}
}

Array Handling​

items on an array parameter is copied the same way:

Manifest​

{ "optional_parameters": [{ "name": "tags", "type": "array", "items": { "type": "string" } }] }

Generated​

{ "tags": { "type": "array", "items": { "type": "string" } } }

Registry​

generateToolRegistry wraps the tools with schema_version, generated_at and source_manifest. See Tool Registry Generation.