> For the complete documentation index, see [llms.txt](https://docs.dorg.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.dorg.pro/create-competency/develop-a-competency/write-the-competency-manifest.md).

# Write the Competency Manifest

To let the Dorg to consume your MPC you need to prepare a manifest JSON file, that must be named `competency.manifest.json`.

Here an example:

```json
{
  "competency_id": "acme.invoice.analyzer",
  "competency_title": "Invoice Analyzer",
  "competency_description": "Analyzes supplier invoice documents and extracts validated, structured accounting data.",
  "competency_version": "1.2.0",
  "competency_vcpu": 0.5,               // Minimum Number of vCPUs required to run the MCP server
  "competency_ram": 1.5,                // Minimum quantity of memory (in GBytes) required to run the MCP server
  "competency_mcp_path": "/",           // Path on which the MCP endpoints are exposed (default /mcp).
  "competency_health_path": "/health",  // Optional path for health check.
  "competency_env": [
    {
      "key": "API_KEI",
      "label": "Remote service API Key",
      "description": "",
      "required": true,
      "secret": true
    },
  ]
  "supported_dorg_versions": ["3.*"],   // List of Dorg versions supported by this Skill

  "intended_usage": [                   // List of use cases. Intended to be shown in University
    "Use when a supplier invoice must be validated before payment",
    "Use as input for accounting or ERP workflows"
  ],
  
  "tools": [                            // List of tools included in this skill
    {
      "tool_name": "analyze.invoice",   // Name of the tool within the skill, must be tools/list[].name
      "tool_description": "",           // Description of what the tool does and its purpose
      "retention": {                    // Application-side logging and data retention policy for MCP calls
                                        // This does NOT affect MCP internal behavior.
                                        // Retention applies only to logs generated by the hosting application.
                                        //
                                        // Scope: retention is applied per Dorg tenant.
                                        // Logs and I/O data are never shared across tenants.
                                        //
                                        // Values represent MAXIMUM retention bounds.
                                        // Admin Dashboard may reduce these values; increases are not allowed.
                                        //
                                        // Tool must not implement its own retention logic and must emit
                                        // execution logs exclusively via OpenTelemetry.
        "message_retention_hours": 0,   // Max hours to retain any I/O information with this tool
                                        // 0 = no retention, -1 = infinite retention
        "log_retention_hours": 0        // Max hours to retain execution logs related to this tool
                                        // 0 = no retention, -1 = infinite retention
      },
      "law_flags": [                    // Legal compliance tags this tool may need to consider
                                        // Examples: "GDPR", "EU AI Act", "CCPA", "HIPAA"
                                        // Note: Currently not actively enforced, reserved for future use
      ],
      "allowed_groups": [               // List of user groups authorized to execute this tool by default
                                        // Supported values: "hos", "onboarders", "team members", "teachers", 
                                        //   "colleagues", "externals", "guests", "all_users".
                                        // Empty list means deny all, so at least one group must be provided.
      ],
      "injected_params": [             // List of the context paramenters to be injected by Dorg
        { "key": "user_email" },
        { "key": "user_groups" },
        { "key": "tenant_id" },
        { "key": "msgraph_token", "scopes": ["Files.Read.All", "Mail.Read"] }
      ],
    }
  ],

  "documentation": "/doc"               // Relative path on the mcp container endpont for a documentation markdown file (optional)
                                        // Documentation intended to be shown in University
}
```

### Competency Identity and Presentation

These attributes define the identity, presentation, and compatibility of the Competency.

* **`competency_id`**\
  Globally unique and immutable identifier of the Competency.\
  Used by University and Dorg for discovery, installation, and version tracking.\
  Must be in the form `<orgname>-<competencyname>`. Only alphanumeric characters and "-" are allowed.
* **`competency_title`**\
  Human-readable name of the Competency.\
  Used exclusively for presentation in University UIs.
* **`competency_description`**\
  Concise, business-level description of the Competency’s purpose.\
  Must remain stable across patch versions.
* **`competency_version`**\
  Semantic [version](/create-competency/develop-a-competency/write-the-competency-manifest/manage-versioning.md) of the Competency.\
  Represents the functional and technical release.
* **`supported_dorg_versions`**\
  List of compatible Dorg runtime versions.\
  Used to prevent installation on incompatible platforms.

***

### Technical details

* **`competency_vcpu`**\
  Minimum number of virtual CPUs required to run the MCP server.
* **`competency_ram`**\
  Minimum number of memory (in GBytes) required to run the MCP server.

| vCPU | Ram |
| ---- | --- |
| 0.25 | 0.5 |
| 0.5  | 1.0 |
| 0.75 | 1.5 |
| 1.0  | 2.0 |
| 1.25 | 2.5 |
| 1.5  | 3.0 |
| 1.75 | 3.5 |
| 2.0  | 4.0 |
| 2.25 | 4.5 |
| 2.5  | 5.0 |
| 2.75 | 5.5 |
| 3.0  | 6.0 |
| 3.25 | 6.5 |
| 3.5  | 7.0 |
| 3.75 | 7.5 |
| 4.0  | 8.0 |

* **`competency_health_path`**\
  Optional. Absolute path inside the container used for health checks. Must reference an existing, accessible endpoint.
* **`competency_mcp_path`**\
  Optional. Base path where MCP endpoints are exposed if not served from the default path (`/mcp`).\
  For example, if you expose your endpoints at `http://<hostname>:8080/tools/list` you must set **`competency_mcp_path="/"`**.
* **`competency_env`** \
  Optional. List of environment variable definitions the Dorg operator must supply when Learn Competency runs or when Configure is used on an installed skill. \
  Declare keys and metadata only: never put values in the manifest. Dorg injects resolved values into the deployed container; entries with secret: true are stored in Azure Key Vault.&#x20;
  * **key**: environment variable name.
  * **label**: optiona. Human-readable label shown in the Console configuration dialog. Defaults to key when omitted.
  * **description**: optional. Help text shown under the field in the Console.
  * **required**: optional. Default true. When true, the operator must provide a value before install, or keep an existing secret when reconfiguring (leave the field blank).
  * **secret**: Optional. Default true. When true, the value is stored in Azure Key Vault in production and is not displayed in the Console after save..

***

### Intended Usage

* **`intended_usage`**\
  List of explicit scenarios in which the Competency is designed to be used.

This section is informational and intended to:

* guide users and integrators,
* reduce misuse,
* clarify overlap with other Competencies.

Right now, this has no runtime effect.

***

### Tools

* **`tools`**\
  List of tools.

Each entry represents a **metadata overlay** for an MCP tool exposed via `tools/list`.\
The Competency manifest does **not** define tool behavior or schemas.

#### Tool Identification

* **`tool_name`**\
  Name of the tool.\
  **Must match exactly** the corresponding MCP tool name returned by `tools/list`.\
  This field is the join key used to apply governance, retention, and authorization rules.
* **`tool_description`**\
  Human-readable description of the tool’s purpose.\
  Used for UI display and documentation only.

***

### Retention (Application-Side Logging Policy)

* **`retention`**\
  Declares the **application-side logging and data retention policy** for MCP calls related to this tool.

This policy:

* applies only to logs generated by the hosting application,
* does **not** affect MCP internal behavior or model provider storage,
* represents **maximum allowed retention bounds**.

Tenant administrators may **reduce** these values, but must not increase them.

#### Scope

Retention is applied **per DORG tenant**:

* logs and I/O data are isolated per tenant,
* no data is shared across tenants.

#### Fields

* **`message_retention_hours`**\
  Maximum number of hours the application may retain MCP input/output information related to this tool.
  * `0` → no retention
  * `-1` → infinite retention
* **`log_retention_hours`**\
  Maximum number of hours the application may retain execution logs related to MCP calls for this tool.
  * `0` → no retention
  * `-1` → infinite retention

#### Operational Requirements

* Tools must **not** implement their own retention logic.
* All execution telemetry must be emitted via **OpenTelemetry**.
* The hosting application is responsible for enforcing retention across all log sinks it controls.

***

### Legal and Compliance Flags

* **`law_flags`**\
  Informational list of legal or regulatory domains relevant to the tool.

Examples include:

* `GDPR`
* `EU AI Act`
* `CCPA`
* `HIPAA`

These flags are **declarative only** and are not actively enforced at runtime.\
They are intended for governance, auditing, and future policy enforcement.

***

### Access Control

* **`allowed_groups`**\
  List of organizational user groups authorized to execute this tool by default.\
  Group names must be one or more from the following fixed list, that are the buiilt-in and always avaialble groups for any Dorg:
  * `hos`
  * `onboarders`
  * `team members`
  * `colleagues`
  * `teachers`
  * `guests`
  * `externals`

Semantics:

* An empty list means **deny all access** (fail-closed).
* Enforcement is handled at the DORG / University level, not by the tool itself.

***

### Context Parameters Injection

For each tool, the Competency can declare a list of context parameters to be injected by the Dorg in the tool call. by setting the `injected_params` field.

See more details in [Injected parameters](/create-competency/develop-a-competency/mcp-server/injected-parameters.md) chapter.

***

### Documentation Link

* **`documentation`**\
  Relative path (on the MCP container endpoint) to a Markdown documentation file.

This documentation is intended to be shown in University UIs as and end-user manual for the usage of the Skill within the Dorg.\
If empty or omitted, no documentation link is displayed.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.dorg.pro/create-competency/develop-a-competency/write-the-competency-manifest.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
