| Schema file | Target files | Purpose |
|---|---|---|
schema/root.terse.schema.json | .hyperterse | Root service configuration |
schema/adapter.terse.schema.json | app/adapters/*.terse | Adapter definitions |
schema/tool.terse.schema.json | app/tools/*/config.terse | Tool definitions |
schema/prompt.terse.schema.json | app/prompts/**/*.terse | Prompt definitions |
schema/resource.terse.schema.json | app/resources/**/config.terse | Resource and resource-template settings |
Generation
Schemas are generated from the project’s source schema definitions:enum constraints.
Editor setup
Point your editor at the schema files to enable autocompletion, hover docs, and inline validation for.terse files.
VS Code / Cursor
Add to.vscode/settings.json:
JetBrains IDEs
Settings → Languages & Frameworks → Schemas and DTDs → JSON Schema Mappings. Add one mapping per schema with the appropriate file pattern.Schema highlights
Each schema enforces required fields, value constraints, and structural rules for its configuration level.Root (root.terse.schema.json)
name— Required. Pattern:^[a-z][a-z0-9_-]*$.version— Optional string.root— String (default discovery root:app).tools.directory— String (default:tools).tools.cache—enabled(boolean),ttl(integer).tools.search.limit— Integer (default:10) controlling max MCPsearchresults.adapters.directory— String (default:adapters).prompts— Either:{ directory: string }discovery config (default:prompts), or- inline prompt definitions array.
resources— Either:{ directory: string }discovery config (default:resources), or- inline concrete resource definitions array.
resource_templates— Optional inline resource-template definitions array.server.port— Integer or string.server.log_level— Integer, 1–4.build.out/build.out_dir— String.build.clean_dir— Boolean.
Adapter (adapter.terse.schema.json)
connector— Required. Enum:postgres,redis,mysql,mongodb,sqlite.connection_string— Required string.name— Optional.options— Optional map.
Tool (tool.terse.schema.json)
description— Required string.use— String.statement— String.inputs— Map of typed definitions.handler— Optional script handler path (path#exportNamesupported; defaults toexport default).mappers— Optionalinput/outputmapper paths (path#exportNamesupported; defaults toexport default).auth—plugin,policy.cache—enabled,ttl.- Constraint: exactly one of
useorhandleris required (enforced viaoneOf).
Prompt (prompt.terse.schema.json)
name— Optional prompt name override (defaults to filename).title— Optional string.description— Optional string.arguments— Optional map keyed by argument name with:title(string)description(string)required(boolean)completion(string array)
messages— Required non-empty array of{ role, text }where role is one ofuser,assistant,system.
Resource (resource.terse.schema.json)
- Supports both concrete resources and URI templates in one schema.
- Shared optional fields:
name,title,description,mime_type. - Concrete resource mode:
uri(required)- one of
textorfile(required)
- Resource template mode:
uri_template(required)- one of
text_templateorfile_template(required) - optional
argumentsmap keyed by argument name with:title(string)description(string)required(boolean)completion(string array)
Keeping schemas in sync
When configuration shapes change, schemas and documentation must update in the same change:- Regenerate schema artifacts in
schema/. - Update field definitions in reference documentation.
- Update
.vscode/settings.jsonglobs if file-role matching changed. - Verify checklists/reference docs include all current schema files:
root.terse.schema.jsonadapter.terse.schema.jsontool.terse.schema.jsonprompt.terse.schema.jsonresource.terse.schema.json