Skip to content

MCP Tools ​

These tools are designed to help developers use QuickModel effectively in their applications.

Available Tools ​

The following tools are available for public use.

  • Model Creation: Generate full QModel classes from descriptions.
  • Validation: Analyze code for proper usage of @Quick and decorators.
  • Simulation: Test how data transforms without running full application code.
  • Mocking: Generate realistic mock data for testing.
  • Inspection: Analyze model structures and available transformers.

Guided workflows (Skills)

Need the AI to handle a complete task automatically? Check out Skills / Workflows — guided workflows for converting, debugging, and validating models.

create_model ​

Generates the TypeScript code for a class extending QModel based on a list of properties. Use this to quickly create new models.

json
{
	"className": {
		"description": "The name of the class (e.g., \"User\")"
	},
	"properties": {
		"description": "Key-value pairs where key is property name and value is the type (e.g., \"string\", \"Date\")"
	}
}

explain_error ​

Explain a QuickModel validation error in human-readable language.

json
{
	"error": {
		"description": "The JSON string of the validation error"
	}
}

export_json_schema ​

Generate a JSON Schema Definition from a QuickModel class.

json
{
	"code": {
		"description": "The QuickModel class code"
	}
}

generate_mock ​

Generate mock data for a given schema definition using QuickModel.

json
{
	"schema": {
		"description": "Key-value pairs where key is field name and value is transformer type (e.g. { \"birth\": \"date\", \"name\": \"string\" })"
	},
	"count": {
		"description": "Number of mock objects to generate",
		"optional": true
	}
}

inspect_model ​

Analyze a QuickModel class definition and explain its structure.

json
{
	"code": {
		"description": "The TypeScript code of the model class"
	}
}

interface_to_model ​

Convert a TypeScript interface definition into a QuickModel class.

json
{
	"code": {
		"description": "The TypeScript interface code"
	}
}

json_to_model ​

Convert a JSON string into a QuickModel class definition with inferred types.

json
{
	"json": {
		"description": "The JSON string to convert"
	},
	"className": {
		"description": "The name of the generated class",
		"optional": true
	}
}

list_transformers ​

List all available data transformers in QuickModel (e.g., string, date, email).

json
{}

list_validators ​

List all available built-in validator decorators in QuickModel with their usage signatures and descriptions.

json
{}

search_docs ​

Search the QuickModel documentation for a query string.

json
{
	"query": {
		"description": "The search term or phrase"
	}
}

check_integrity ​

Run transformer-level integrity checks on a data object. Detects invalid Date values, oversized BigInts, malformed RegExps, etc. Complements simulate_validation (which covers @QRule business-logic predicates). Returns { valid, errors[], evaluated }.

json
{
	"data": {
		"description": "The data object to check"
	},
	"options": {
		"description": "Type configuration — same format as @Quick() (e.g. { birth: \"Date\", balance: \"BigInt\" })"
	}
}

diff_models ​

Compare two QuickModel class definitions and report structural differences. Detects added/removed fields, changed transformer configuration in @Quick({}), and added/removed field decorators (@QField, @QRule, @QGroup, @QAlias, @QComputed). Performs static code analysis — no execution needed. Returns { added_fields, removed_fields, changed_fields, changed_transformers, added_decorators, removed_decorators, summary }.

json
{
	"model_a": {
		"description": "Source code of the baseline QuickModel class (the \"before\")"
	},
	"model_b": {
		"description": "Source code of the new QuickModel class (the \"after\")"
	}
}

get_form_schema ​

Extract the form schema from a QuickModel class by parsing its @QField and @QGroup decorators. Uses the real QModel.getFormSchema() API (static) — equivalent to calling instance.$qGetFormSchema(). Set grouped=true to get the schema grouped by @QGroup sections. Returns { schema, count }.

json
{
	"code": {
		"description": "The QuickModel class code containing @QField and optional @QGroup decorators"
	},
	"grouped": {
		"description": "When true, returns the schema grouped by @QGroup sections (default: false)",
		"optional": true
	}
}

get_model_schema ​

Generate a model schema in any supported format from a QuickModel class definition. Supported formats: json, openapi, zod, mongo, typescript, graphql, ajv. Uses the real QModel.getSchema() API for accurate output.

json
{
	"code": {
		"description": "The QuickModel class code (must include @Quick({...}) decorator)"
	},
	"format": {
		"description": "Schema format to generate: json | openapi | zod | mongo | typescript | graphql | ajv"
	}
}

roundtrip ​

Verifies that serializing and re-creating a QuickModel instance is lossless. Runs: s1 = new Model(data).$qSerialize() → s2 = new Model(s1).$qSerialize() and reports whether s1 === s2. Returns { lossless, input, serialized, roundtrip_serialized, diff, summary }.

json
{
	"data": {
		"description": "Raw input data to populate the model"
	},
	"options": {
		"description": "@Quick() configuration options (e.g. { field: \"Date\" }). Type names must match the same strings accepted by simulate_transformation."
	}
}

simulate_async_rules ​

⚠️ ASYNC-ONLY: Run async business-logic rules through the real instance.$qCheckRulesAsync() API. Use this ONLY when predicates genuinely require async operations (e.g. simulating DB lookups, API calls). For synchronous rules, use simulate_rules instead — it is simpler and faster. Supports timeoutMs, timeoutMessage, and mode: "parallel" | "serial".

json
{
	"data": {
		"description": "The data object to validate"
	},
	"rules": {
		"description": "Array of { field, predicate, message } objects. Predicate strings have access to `value` and `data`."
	},
	"options": {
		"description": "Async options: { timeoutMs?, timeoutMessage?, mode?: \"parallel\" | \"serial\" }",
		"optional": true
	}
}

simulate_rules ​

Run business-logic rules through the real instance.$qCheckRules() API. Applies rules via @QRule metadata so the result format matches production IQRulesResult exactly. Use simulate_validation for standalone predicate evaluation; use this when you need to verify the exact @QRule + checkRules() output your code will produce at runtime. Returns { valid, errors[], evaluated }.

json
{
	"data": {
		"description": "The data object to validate"
	},
	"rules": {
		"description": "Array of { field, predicate, message } objects. Predicate strings have access to `value` and `data`."
	}
}

simulate_transformation ​

Simulates a QuickModel data transformation given an input object and a configuration map.

json
{
	"data": {
		"description": "The raw input data object"
	},
	"options": {
		"description": "The configuration object typically passed to @Quick() (e.g. { field: \"Date\", list: [\"Date\"] })"
	}
}

simulate_validation ​

Simulates @QRule-style predicate validation on a data object. Each rule has a predicate (JS expression with value and data vars) and a message. Optionally filter by group. Returns { valid, errors, evaluated }.

json
{
	"data": {
		"description": "The data object to validate"
	},
	"rules": {
		"description": "Array of { field, predicate, message, group? } objects"
	},
	"group": {
		"description": "Optional group name — only rules with this group will run",
		"optional": true
	}
}

validate_usage ​

Analyzes a code snippet to check for common QuickModel usage errors (e.g. missing declare, wrong inheritance).

json
{
	"code": {
		"description": "The TypeScript code to analyze"
	}
}