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
operation_idtool_nameDirect copy (snake_case)
descriptiondescriptionDirect copy
parametersinput_schema.propertiesConvert to JSON Schema properties
parameters[x].required=trueinput_schema.requiredCollect into required array
parameters[x].typeinput_schema.properties[x].typeDirect copy
parameters[x].enuminput_schema.properties[x].enumDirect copy
parameters[x].minimuminput_schema.properties[x].minimumDirect copy
parameters[x].maximuminput_schema.properties[x].maximumDirect copy
parameters[x].formatinput_schema.properties[x].formatDirect copy
parameters[x].defaultinput_schema.properties[x].defaultDirect copy
risk_levelsafety.risk_levelDirect copy
idempotentsafety.idempotentDirect copy
confirmation_requiredsafety.confirmation_requiredDirect copy
approval_requiredsafety.approval_requiredDirect copy
preconditionssafety.preconditionsDirect copy
side_effectssafety.side_effectsDirect copy

Tool Name Generation

tool_name = operation_id || (entity + "_" + action)

Examples:

  • product.searchproduct_search
  • cart.add_itemcart_add_item
  • billing.change_planbilling_change_plan

Input Schema Generation

Parameters are converted from AXAG format to JSON Schema:

AXAG Parameter Definition

{
"query": { "type": "string", "required": true },
"price_max": { "type": "number", "required": false, "minimum": 0 }
}

Generated JSON Schema

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

Note: required is moved from individual parameters to the schema-level required array.

Safety Metadata Generation

All safety-related manifest fields are grouped into a safety object on the tool:

{
"safety": {
"execution_type": "write",
"risk_level": "high",
"idempotent": false,
"confirmation_required": true,
"approval_required": false,
"preconditions": ["order must be within return window"],
"side_effects": ["refund_processing", "inventory_update"]
}
}

Nested Object Handling

When a parameter has type: "object", its properties are recursively converted:

AXAG

{
"budget": {
"type": "object",
"required": true,
"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"] }
},
"required": ["amount", "currency"]
}
}

Array Handling

When a parameter has type: "array", the items schema is included:

AXAG

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

Generated

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