> For the complete documentation index, see [llms.txt](https://docs.libum.io/nexum/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.libum.io/nexum/mcp-policies.md).

# MCP Policies

MCP policies control which SymXchange services and operations are available to an agent. A policy can narrow the services and versions already enabled for an organization's NaaS deployment, but it cannot expose a service or version that the deployment does not allow.

{% hint style="info" %}
Start with the smallest set of read-only tools your workflow needs. Enable write operations only when the use case requires them.
{% endhint %}

## Request a policy

Email <development@libum.io> and include:

* The credit union and NaaS environment
* The Sym number and SymXchange version or versions the agent should use
* The services to expose, such as <mark style="color:purple;">`account`</mark>, <mark style="color:purple;">`findby`</mark>, <mark style="color:purple;">`poweron`</mark>, or <mark style="color:purple;">`transactions`</mark>
* The operations or workflows the agent needs, such as account reads, FindBy searches, PowerOn execution, transaction posting, or user management
* Whether write-capable tools should be enabled
* Any services, operations, or workflows that should be explicitly excluded

The examples below are not request payloads. They show the level of detail that helps us configure and review your policy.

## Policy controls

Use <mark style="color:purple;">`allowedServiceVerbs`</mark> for generic record access:

* <mark style="color:purple;">`get`</mark>
* <mark style="color:purple;">`list`</mark>
* <mark style="color:purple;">`search`</mark>
* <mark style="color:purple;">`create`</mark>
* <mark style="color:purple;">`update`</mark>
* <mark style="color:purple;">`delete`</mark>

Use <mark style="color:purple;">`allowedOperations`</mark> for specific SymXchange operations used by FindBy, PowerOn, transactions, user management, file workflows, and other curated workflows.

Additional controls can restrict:

* SymXchange versions with <mark style="color:purple;">`allowedVersions`</mark>
* Credential shapes with <mark style="color:purple;">`allowedCredentialTypes`</mark>
* Users or applications with <mark style="color:purple;">`allowedIdentities`</mark>
* All write-capable tools with <mark style="color:purple;">`allowWrites`</mark>

Optional fields act as wildcards. For example, a service verb without a <mark style="color:purple;">`recordType`</mark> applies to every record type otherwise allowed by the policy.

## Read-only account lookup

This policy permits Account record reads and three FindBy operations:

```json
{
  "mcp": {
    "enabled": true,
    "allowWrites": false,
    "allowedServices": ["account", "findby"],
    "allowedVersions": ["persistent", "2022.01"],
    "allowedServiceVerbs": [
      { "service": "account", "verb": "get", "recordType": "Account" }
    ],
    "allowedOperations": [
      { "service": "findby", "operation": "findByShortName" },
      { "service": "findby", "operation": "findBySSN" },
      { "service": "findby", "operation": "findByMICR" }
    ],
    "allowedCredentialTypes": ["AdministrativeCredentials", "UserNumberCredentials"]
  }
}
```

## Pattern-based record reads

This broader policy permits Account service reads for any record type and either approved version:

```json
{
  "mcp": {
    "enabled": true,
    "allowWrites": false,
    "allowedServices": ["account"],
    "allowedVersions": ["persistent", "2022.01"],
    "allowedServiceVerbs": [
      { "service": "account", "verb": "get" },
      { "service": "account", "verb": "list" },
      { "service": "account", "verb": "search" }
    ]
  }
}
```

## Write-capable policies

Write tools are disabled unless the policy explicitly enables them. Depending on the services allowed, write-capable tools can include:

* <mark style="color:purple;">`create_record`</mark>
* <mark style="color:purple;">`update_record`</mark>
* <mark style="color:purple;">`delete_record`</mark>
* Transaction, PowerOn, user-management, file, batch, balancing, credit-report, and cash-machine tools that change SymXchange data

A write-capable policy should name each required operation:

```json
{
  "mcp": {
    "enabled": true,
    "allowWrites": true,
    "allowedServices": ["poweron", "transactions"],
    "allowedVersions": ["2022.01"],
    "allowedOperations": [
      { "service": "poweron", "operation": "executePowerOn", "version": "2022.01" },
      { "service": "poweron", "operation": "executeMCWPowerOn", "version": "2022.01" },
      { "service": "transactions", "operation": "getDonorRecipientAccounts", "version": "2022.01" },
      { "service": "transactions", "operation": "deposit", "version": "2022.01" },
      { "service": "transactions", "operation": "reverseDeposit", "version": "2022.01" }
    ],
    "allowedCredentialTypes": ["AdministrativeCredentials"],
    "allowedIdentities": ["ops@example.com"]
  }
}
```

For write workflows, call <mark style="color:purple;">`describe_operation`</mark> first. Include <mark style="color:purple;">`ProcessorUser`</mark> with <mark style="color:purple;">`AdministrativeCredentials`</mark> when SymXchange write attribution is required.

## Next steps

* Use the [MCP Quickstart](/nexum/mcp-quickstart.md) to connect a client and make your first read.
* Use [Credentials](/nexum/symxchange/credentials.md) to choose a supported SymXchange credential type.
* Use [Capabilities](/nexum/capabilities.md#mcp-server) for a broader MCP feature overview.


---

# 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.libum.io/nexum/mcp-policies.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.
