Overview
This page documents the Features MCP tools for direct integration with the gloria.dev MCP server. It does not cover everyday agent workflows — for that, see Features Skill Reference. All calls run in the caller’s active organization. For the broader product surface, see Features and MCP Tools.
put_feature
Purpose: Create or update one feature record in a project.
| Name | Type | Required | Description |
|---|---|---|---|
projectSlug | string | Yes | Project slug. |
feature | FeatureDefinitionSchema | Yes | Feature definition to upsert. |
Behavior:
- Requires
inventory:write. - Returns
403when access is denied and404when the organization or project is missing. - Creates or updates the feature selected by slug.
- Requires structured
detailson every feature payload. - Requires
screenshotson every feature payload. - Rejects
notesin sync payloads. - Rejects unknown fields because the schema is strict.
{
"projectSlug": "acme-api",
"feature": {
"slug": "csv-export",
"name": "CSV export",
"description": "Download any report as a CSV file.",
"layer": "reporting",
"userFacing": true,
"aliases": ["download as csv", "export to spreadsheet"],
"details": [],
"files": ["src/export/csv.ts"],
"symbols": ["exportCsv"],
"docUrls": [],
"screenshots": [],
"analyzedCommit": "<git rev-parse HEAD>"
}
}get_feature
Purpose: Return full detail for one feature.
| Name | Type | Required | Description |
|---|---|---|---|
projectSlug | string | Yes | Project slug. |
slug | string | Yes | Feature slug. |
Behavior:
- Requires
inventory:read. - Returns
403when access is denied and404when the organization, project, or feature is missing. - Returns the full stored record, including structured
details,screenshots, fullnotes, files, symbols,docUrls, and timestamps.
{
"projectSlug": "acme-api",
"slug": "csv-export"
}Example response:
{
"slug": "csv-export",
"name": "CSV export",
"description": "Download any report as a CSV file.",
"layer": "reporting",
"userFacing": true,
"aliases": ["download as csv", "export to spreadsheet"],
"details": [],
"files": ["src/export/csv.ts"],
"symbols": ["exportCsv"],
"docUrls": [],
"screenshots": [],
"notes": [],
"analyzedCommit": "<git rev-parse HEAD>",
"createdAt": "2026-07-10T12:00:00.000Z",
"updatedAt": "2026-07-13T09:30:00.000Z"
}list_features
Purpose: List compact feature summaries for one project.
| Name | Type | Required | Description |
|---|---|---|---|
projectSlug | string | Yes | Project slug. |
Behavior:
- Requires
inventory:read. - Returns
403when access is denied and404when the organization or project is missing. - Stays intentionally compact. It returns summary rows only:
slug,name,description,layer,userFacing, andaliases. - Does not return
details,screenshots, ornotes. Callget_featurefor the full record. - Includes
analyzedCommit, taken from the most recently updated feature row.
{
"projectSlug": "acme-api"
}upload_feature_screenshot
Purpose: Upload one screenshot and return the screenshot reference to store later in feature.screenshots.
| Name | Type | Required | Description |
|---|---|---|---|
projectSlug | string | Yes | Project slug. |
screenshot | object | Yes | One screenshot upload payload. |
Behavior:
- Requires
inventory:write. - Returns
403when access is denied and404when the organization or project is missing. - Uploads one screenshot and returns the screenshot reference object.
- Does not update a feature record on its own. Store the returned object in a later
put_featurecall.
delete_feature
Purpose: Remove one feature from a project.
| Name | Type | Required | Description |
|---|---|---|---|
projectSlug | string | Yes | Project slug. |
slug | string | Yes | Feature slug. |
Behavior:
- Requires
inventory:write. - Returns
403when access is denied and404when the organization or project is missing. - Is idempotent.
- Cleans up stored screenshots linked to the feature.
- Reports whether it removed a record.
{
"projectSlug": "acme-api",
"slug": "csv-export"
}Feature shapes
FeatureDefinition
| Field | Type | Description |
|---|---|---|
slug | string | Kebab-case feature identifier. |
name | string | User-facing feature name. |
description | string | Short end-user description. |
layer | string | Owning product layer. |
userFacing | boolean | Whether end users interact with it directly. |
aliases | string[] | Alternate phrases users may say. |
details | object[] | Structured detail records stored with the feature. |
files | string[] | Implementing file paths. |
symbols | string[] | Implementing exported symbols. |
docUrls | string[] | Related documentation page URLs. |
screenshots | object[] | Screenshot references for the feature. Send [] when none exist yet. |
analyzedCommit | string | The HEAD SHA used for the scan. |
The schema is strict and rejects unknown fields. Every payload must include screenshots, even when it is empty. Sync payloads must not include notes, so dashboard authored notes stay protected.
FeatureIndexEntry
list_features returns this compact summary shape. It carries the summary fields documented in the list_features section, and the response also includes the newest analyzedCommit for the project.
FeatureDetail
get_feature and put_feature return this stored record. It uses the full FeatureDefinition shape and adds full notes, createdAt, and updatedAt.
FeatureScreenshot
upload_feature_screenshot returns this screenshot reference shape. FeatureDefinition.screenshots accepts the same object. Preserve the returned fields exactly as received when storing or replaying a feature record.
Domain model
For field-level detail on project and feature storage, see Domain Model.