Skip to main content

Schema Reference

Complete JSON Schema reference for all AXAG artifacts.

Annotation Attribute Schema​

Every AXAG-annotated HTML element uses the following attributes:

Required Attributes​

AttributeTypeValuesDescription
axag-intentstringentity.action patternCanonical intent identifier
axag-entitystringsnake_caseEntity this action operates on
axag-action-typestringread | write | delete | navigateOperation category
AttributeTypeValuesDescription
axag-descriptionstringFree textHuman-readable action description
axag-risk-levelstringnone | low | medium | high | criticalRisk classification
axag-idempotentbooleantrue | falseWhether repeated calls are safe
axag-required-parametersJSON array["param1","param2"]Parameters that MUST be provided
axag-optional-parametersJSON array["param1","param2"]Parameters that MAY be provided

Safety Attributes​

AttributeTypeValuesDescription
axag-confirmation-requiredbooleantrue | falseWhether user confirmation is needed
axag-approval-requiredbooleantrue | falseWhether role-based approval is needed
axag-approval-rolesJSON array["role1","role2"]Roles authorized to approve
axag-preconditionsJSON array["condition"]Conditions that MUST be true before execution
axag-postconditionsJSON array["condition"]Conditions guaranteed after successful execution
axag-side-effectsJSON array["effect"]Side-effects of execution

Scope Attributes​

AttributeTypeValuesDescription
axag-scopestringpublic | user | tenant | globalData access scope
axag-tenant-boundarystringstrict | relaxedTenant isolation enforcement

Execution Attributes​

AttributeTypeValuesDescription
axag-asyncbooleantrue | falseWhether operation is asynchronous

Manifest Schema​

The canonical JSON Schema is published at /schema/v1.1/axag-manifest.schema.json; every field is listed in Manifest Fields, and Schema Conformance covers validating against it.

Tool Schema​

Generated MCP tools follow this structure:

{
"name": "entity_action",
"description": "Description of the action",
"input_schema": {
"type": "object",
"properties": { "param_name": { "type": "string", "description": "Parameter description" } },
"required": ["param_name"]
},
"metadata": {
"action_type": "read",
"risk_level": "medium",
"idempotent": true,
"confirmation_required": true,
"approval_required": false,
"side_effects": ["state_change"],
"preconditions": ["entity exists"],
"source_intent": "entity.action",
"source_entity": "entity"
}
}

The same action as a WebMCP tool definition uses inputSchema, and puts the AXAG fields under annotations.axag alongside the standard hints:

{
"name": "entity_action",
"description": "Description of the action",
"inputSchema": {
"type": "object",
"properties": { "param_name": { "type": "string", "description": "Parameter description" } },
"required": ["param_name"]
},
"annotations": {
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"axag": {
"action_type": "read",
"risk_level": "medium",
"idempotent": true,
"confirmation_required": true,
"approval_required": false,
"source_intent": "entity.action",
"source_entity": "entity"
}
}
}

axag generate writes the first shape with --tools and the second with --webmcp. See Tool Mapping Rules.