Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.
Normative language (MUST/SHOULD/MAY) follows the conventions defined in Conformance Language.
This document defines all validation rules enforced by flowmcp validate. Each rule has a code, severity, and description.
This file is the central code registry for FlowMCP v4.2.0. All validation, selection, agent, skill, resource, and placeholder codes (VAL/SEL/AGT/SKL/RES/DEP/SEC/LST/PRM/CAT/ID/PH/TST) are defined here. Other specification documents and downstream tooling reference this registry but do not redefine codes.
main.version is required and MUST match ^4\.\d+\.\d+$ (version ^3\.\d+\.\d+$ accepted with deprecation warning)
VAL015
error
main.root is required when main.tools is non-empty. Optional for resource-only or skill-only schemas.
VAL016
error
main.tools (or deprecated main.routes) must be an object. May be empty {} if main.resources is defined. main.skills is forbidden in v4.0.0 — skills are namespace-, selection-, or agent-scoped (see 14-skills).
VAL017
error
Schema MUST NOT define both main.tools and main.routes simultaneously
VAL018
warning
main.routes is deprecated. Use main.tools instead.
skill.name is required, must be a string, must match ^[a-z][a-z0-9-]{0,63}$
SKL003
error
skill.name must match the key under which the skill is registered (selection.skills, agent.skills) or the file basename without .mjs for namespace-scoped skills.
SKL004
error
skill.version is required and MUST be 'flowmcp/4.0.0' (unified spec version).
SKL005
error
Each entry in requires.tools must exist as a key in main.tools
SKL006
error
Each entry in requires.resources must exist as a key in main.resources
SKL007
error
skill.description is required, must be a string, maximum 1024 characters
SKL008
error
Each {{input:key}} placeholder in content must have a matching entry in skill.input
SKL009
error
input[].values is required when type is 'enum' and forbidden otherwise
SKL010
error
skill.content is required and MUST be a non-empty string
SKL011
error
skill.output is required and MUST be a non-empty string
SKL012
error
input[].key must match ^[a-z][a-zA-Z0-9]*$ (camelCase)
SKL013
error
input[].type must be one of: string, number, boolean, enum
SKL014
error
input[].description is required and MUST be a non-empty string
SKL015
error
input[].required must be a boolean
SKL016
error
Skill registration entries (selection.skills, agent.skills): file must end with .mjs
SKL017
error
Skill registration entries (selection.skills, agent.skills): referenced file MUST exist
SKL018
error
Maximum 4 skills per registration scope (selection or agent)
Async fields are reserved for future versions. If present, they are ignored by the runtime. No validation errors are raised for async fields in v3.0.0.
description is required, must be a non-empty string
AGT003
error
model is required, must contain / (OpenRouter syntax)
AGT004
error
version must be flowmcp/4.0.0 (unified spec version).
AGT005
error
systemPrompt is required, must be a non-empty string
AGT006
error
tools[] is required, must be a non-empty array
AGT007
error
Each tool reference MUST be a valid ID format (namespace/type/name)
AGT008
error
tests[] is required, minimum 3 tests
AGT009
error
Each test MUST have an input field of type string
AGT010
error
Each test MUST have an expectedTools field as a non-empty array
AGT011
error
Each expectedTools entry MUST be a valid ID (contains /)
AGT012
warning
Tests SHOULD cover different tool combinations
AGT013
error
prompts (if present) must be an Object (not Array)
AGT014
error
agent.skills (if present) must be an Object (not Array). Keys MUST NOT contain / (inline form), values are { file } objects pointing to agents/{name}/skills/*.mjs. See VAL110 and 06-agents.md.
AGT015
error
resources (if present) must be an Object (not Array)
AGT016
error
Referenced prompt/skill files MUST exist and be .mjs files
AGT017
error
Prompt files MUST have export const prompt (with content or contentFile)
AGT018
error
Skill files MUST have export const skill (with name, version, content/contentFile, requires, input, output)
AGT030
error
All IDs in agent.selections must be resolvable Selection IDs (added in v4.2.0)
AGT031
error
elicitation.maxRounds must be a positive integer (>= 1) (added in v4.2.0)
AGT004, AGT030, and AGT031 are enforced by core at agent load/startup time; all other AGT codes are pipeline-level validation checks.
See 06-agents.md for the complete agent specification.
meta.isConcurrencySafe is required and MUST be a boolean
VAL103
error
meta.isDestructive is required and MUST be a boolean
VAL104
error
meta.searchHint is required and MUST be a non-empty string
VAL105
error
meta.aliases is required and MUST be a string array
VAL106
error
meta.alwaysLoad is required and MUST be a boolean
VAL107
error
When enum values correspond to a Shared List, {{listName:alias}} MUST be used. Hardcoded enum values that duplicate a Shared List are forbidden.
VAL110
error
Slash-Rule: Keys in selection.tools, selection.resources, selection.prompts, agent.tools, and agent.prompts that act as references MUST contain a / (full ID form). Keys in selection.skills and agent.skills MUST NOT contain a / (inline form with { file }). See 17-selections.md for the full slash-rule matrix.
See 19-mcp-integration.md for the complete meta block specification.
selection.whenToUse is required and MUST be a non-empty string
SEL002
error
A Selection MUST reference at least 1 Primitive (tool, resource, prompt, or skill)
SEL003
error
All Primitive references in a Selection MUST be resolvable within the catalog
SEL004
info
If a Selection includes inline-skill objects, SkillValidator runs on each (recorded in the validation report). Optional — present only when inline skills exist.
See 17-selections.md for the complete Selection specification.