Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/api/json/catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -2336,6 +2336,12 @@
"fileMatch": ["docfx.json"],
"url": "https://www.schemastore.org/docfx.json"
},
{
"name": "Docs MCP Manifest",
"description": "Configuration file for Docs MCP",
"fileMatch": [".docs-mcp.json"],
"url": "https://raw.githubusercontent.com/speakeasy-api/docs-mcp/refs/heads/main/schemas/docs-mcp.schema.json"
},
{
"name": "Dofigen",
"description": "Dofigen configuration file. Documentation: https://github.com/lenra-io/dofigen",
Expand Down
1 change: 1 addition & 0 deletions src/schema-validation.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,7 @@
"web-manifest.json",
"web-manifest-app-info.json",
"web-manifest-share-target.json",
"docs-mcp-manifest.json",
// Below this line are standalone schemas without a URL in the catalog,
"lsdlschema-0.7.json",
"lsdlschema-1.0.json",
Expand Down
121 changes: 121 additions & 0 deletions src/schemas/json/docs-mcp-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://json.schemastore.org/docs-mcp-manifest.json",
"additionalProperties": false,
"description": "Docs MCP configuration file (.docs-mcp.json) that controls how documentation is chunked, tagged, and indexed for search.",
"properties": {
"metadata": {
"additionalProperties": {
"type": "string"
},
"description": "Key-value pairs attached to every chunk produced from this directory tree. Each key becomes a filterable taxonomy dimension exposed as an enum parameter on the search tool.",
"examples": [
{
"language": "typescript",
"scope": "sdk-specific"
}
],
"propertyNames": {
"type": "string"
},
"type": "object"
},
"overrides": {
"description": "Per-file-pattern overrides for chunking strategy and metadata. Evaluated top-to-bottom; last match wins.",
"items": {
"additionalProperties": false,
"description": "Overrides the default chunking strategy and/or metadata for files matching a glob pattern. Within the overrides array, later matches take precedence.",
"properties": {
"metadata": {
"additionalProperties": {
"type": "string"
},
"description": "Metadata key-value pairs merged with root metadata for matching files (override keys win). Each key becomes a filterable taxonomy dimension in the search API.",
"examples": [
{
"scope": "global-guide"
}
],
"propertyNames": {
"type": "string"
},
"type": "object"
},
"pattern": {
"description": "A glob pattern matched against file paths relative to the directory containing the manifest.",
"examples": ["guides/advanced/*.md"],
"minLength": 1,
"type": "string"
},
"strategy": {
"additionalProperties": false,
"description": "Chunking strategy override for files matching this pattern. Replaces the root strategy entirely.",
"properties": {
"chunk_by": {
"description": "The heading level at which to split markdown into chunks. 'h1' splits at top-level headings, 'h2'/'h3' at progressively finer granularity, and 'file' treats the entire file as one chunk.",
"enum": ["h1", "h2", "h3", "file"],
"examples": ["h2"],
"type": "string"
},
"max_chunk_size": {
"description": "Maximum chunk size in characters. Chunks exceeding this limit are split at the next available boundary to prevent oversized results.",
"examples": [8000],
"minimum": 1,
"maximum": 9007199254740991,
"type": "integer"
},
"min_chunk_size": {
"description": "Minimum chunk size in characters. Trailing chunks smaller than this are merged into the preceding chunk to avoid fragments.",
"examples": [200],
"minimum": 1,
"maximum": 9007199254740991,
"type": "integer"
}
},
"required": ["chunk_by"],
"type": "object"
}
},
"required": ["pattern"],
"type": "object"
},
"type": "array"
},
"strategy": {
"additionalProperties": false,
"description": "Default chunking strategy applied to all files in this directory tree unless overridden by a more specific rule.",
"properties": {
"chunk_by": {
"description": "The heading level at which to split markdown into chunks. 'h1' splits at top-level headings, 'h2'/'h3' at progressively finer granularity, and 'file' treats the entire file as one chunk.",
"enum": ["h1", "h2", "h3", "file"],
"examples": ["h2"],
"type": "string"
},
"max_chunk_size": {
"description": "Maximum chunk size in characters. Chunks exceeding this limit are split at the next available boundary to prevent oversized results.",
"examples": [8000],
"minimum": 1,
"maximum": 9007199254740991,
"type": "integer"
},
"min_chunk_size": {
"description": "Minimum chunk size in characters. Trailing chunks smaller than this are merged into the preceding chunk to avoid fragments.",
"examples": [200],
"minimum": 1,
"maximum": 9007199254740991,
"type": "integer"
}
},
"required": ["chunk_by"],
"type": "object"
},
"version": {
"const": "1",
"description": "Schema version. Must be '1'.",
"examples": ["1"],
"type": "string"
}
},
"required": ["version"],
"type": "object"
}
19 changes: 1 addition & 18 deletions src/schemas/json/partial-tox.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,22 +9,5 @@
"$ref": "https://json.schemastore.org/tox.json"
}
],
"properties": {
"legacy_tox_ini": {
"type": "string",
"title": "Tox configuration in ini format",
"description": "This is equivalent to tox.ini format, with the difference that the text is stored instead inside the pyproject.toml file under the tool.tox table and legacy_tox_ini key.",
"markdownDescription": "This is equivalent to `tox.ini` format, with the difference that the text is stored instead inside the `pyproject.toml` file under the `tool.tox` table and `legacy_tox_ini` key.",
"x-intellij-html-description": "<p>This is equivalent to <code>tox.ini</code> format, with the difference that the text is stored instead inside the <code>pyproject.toml</code> file under the <code>tool.tox</code> table and <code>legacy_tox_ini</code> key.</p>",
"x-intellij-language-injection": "ini",
"x-taplo": {
"links": {
"key": "https://tox.wiki/en/stable/config.html#pyproject-toml-ini"
}
},
"examples": [
"[tool.tox]\nlegacy_tox_ini = \"\"\"\n[tox]\nenvlist = py38\n[testenv]\ncommands = pytest\n\"\"\""
]
}
}
"additionalProperties": true
}
23 changes: 23 additions & 0 deletions src/test/docs-mcp-manifest/.docs-mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"metadata": {
"language": "typescript",
"scope": "sdk-specific"
},
"overrides": [
{
"metadata": {
"scope": "global-guide"
},
"pattern": "guides/advanced/*.md",
"strategy": {
"chunk_by": "h3"
}
}
],
"strategy": {
"chunk_by": "h2",
"max_chunk_size": 8000,
"min_chunk_size": 200
},
"version": "1"
}
Loading