Replaces the project's description and routing hints
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Describe what a project covers so that AI assistants connected through MCP can choose the right project for a question. The request replaces the whole content, so send the full description and every key you want to keep.
Basic Usage
Request
{
"description": "Sales orders and revenue for the EMEA region.",
"metadata": {
"includes": ["EMEA sales", "orders"],
"excludes": ["marketing spend"],
"owner": ["Sales Ops"]
},
"baseVersion": "3f9a1c0b7d2e4a68"
}Response
{
"description": "Sales orders and revenue for the EMEA region.",
"metadata": {
"includes": ["EMEA sales", "orders"],
"excludes": ["marketing spend"],
"owner": ["Sales Ops"]
},
"version": "b81e07d24c5a9f13",
"updatedAt": "2026-10-12T08:40:21.000Z",
"invalidReason": null,
"projectType": "CLASSIC"
}Information for the AI, not instructions
Assistants treat the description and metadata as data about the project. The metadata grants no access, and it does not change who can query the project.
Metadata Keys
includes: what the project coversexcludes: related data that another project owns, so the assistant looks elsewhere- Other keys: your own routing hints, such as
ownerorregion. They keep the order you sent them in.
In Project Settings, includes and excludes are field types you can add once each, next to custom fields.
Avoiding Overwrites
Send the version from your last read as baseVersion. If someone changed the metadata since then, the request returns 409 CONFLICT_DETECTED and nothing is saved. Read it again and retry. An agentic project can also return this 409 when its repository keeps changing while the metadata is saved.
baseVersion: null: expects that nothing is saved yet- No
baseVersion: overwrites without a check
To clear the metadata, send null for both description and metadata.
Where It Is Stored
Classic projects keep the metadata in Wren AI. Agentic projects keep it as project_routing_metadata.yml in the project's shared-data Git repository, and clearing the metadata deletes the file.
If a project_routing_metadata.yml pushed through Git is not valid, it reads as empty and invalidReason says why. The next save replaces it.
