> 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/capabilities.md).

# Capabilities

## Overview

NexumAPI is the quickest way to use SymXchange and fortunately it comes with a growing feature set of new capabilities. Discover what's possible and what's coming to NexumAPI.

| Feature                                                                                 | Description                                                                                                                                       | Status                                           |
| --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [RESTful interface in JSON](#restful-interface-in-json)                                 | all SymXchange services and operations are available through NexumAPI in JSON                                                                     | <mark style="color:green;">`Available`</mark>    |
| [Full content SymX API reference](#full-content-symx-api-reference)                     | end-to-end coverage of parameter descriptions and mocks with working playground requests                                                          | <mark style="color:yellow;">`In Progress`</mark> |
| [HTTP error codes](#http-error-codes)                                                   | all SymXchange error responses are translated to HTTP error codes for better stack management                                                     | <mark style="color:green;">`Available`</mark>    |
| [Recursive order agnostic request elements](#recursive-order-agnostic-request-elements) | ignore the schema-mandated ordering of request elements                                                                                           | <mark style="color:green;">`Available`</mark>    |
| [Form URLEncoded content-type](#form-urlencoded-content-type)                           | send silent NaaS requests through custom PowerOn requests                                                                                         | <mark style="color:green;">`Available`</mark>    |
| [Multi-version support](#multi-version-support)                                         | we maintain translations for all supported SymXchange versions and persistent endpoints                                                           | <mark style="color:green;">`Available`</mark>    |
| [Runtime discovery endpoints](#runtime-discovery-endpoints)                             | inspect health, host configs, connection status, supported services, and operations                                                               | <mark style="color:green;">`Available`</mark>    |
| [MCP server](#mcp-server)                                                               | expose NaaS, SymXchange records, PowerOns, transactions, and operational workflows to AI agents through a protected Model Context Protocol server | <mark style="color:green;">`Available`</mark>    |
| [SymXchange native passthrough](#symxchange-native-passthrough)                         | gain insight on all third-party connections to your SymXchange instance                                                                           | <mark style="color:green;">`Available`</mark>    |
| [Detailed logging transports](#detailed-logging-transports)                             | track all SymXchange requests and bubble up critical user information with little to no configuration                                             | <mark style="color:green;">`Available`</mark>    |
| [Configurable service exposure](#configurable-service-exposure)                         | limit a NaaS deployment to approved SymXchange services, versions, and MCP write access                                                           | <mark style="color:green;">`Available`</mark>    |
| [Managed infrastructure](#managed-infrastructure)                                       | we manage all of the infrastructure                                                                                                               | <mark style="color:green;">`Available`</mark>    |
| [Automatic updates](#automatic-updates)                                                 | we automatically update NexumAPI on new releases                                                                                                  | <mark style="color:green;">`Available`</mark>    |
| [Load balancing & auto scaling](#load-balancing-and-auto-scaling)                       | we load balance requests and automatically provision compute resources to meet demand                                                             | <mark style="color:green;">`Available`</mark>    |
| [High availability](#high-availability)                                                 | we host your NexumAPI instance in multiple availability zones to keep it operational                                                              | <mark style="color:green;">`Available`</mark>    |

## RESTful interface in JSON

NexumAPI provides a way to interact with Symitar data strictly from JSON in a RESTful-like way using a proprietary translation engine compiled in native code for virtually no impacts on performance.

> "...NexumAPI isn't just another middleware or endpoint; it's a revolution for Symitar credit unions. It transforms the way we interact with the Symitar database, replacing outdated software and systems with a modern, streamlined approach. It significantly lowers the barrier to entry for working with the Symitar database via SymXchange..." - *Ray Satterfield, Programmer II, Dover Federal Credit Union*

## Full content SymX API reference

We provide a complete SymXchange API reference for every service and operation to use with NexumAPI. This includes detailed parameter descriptions, references to [Symitar eDocs](https://learnmore.symitar.com/edocs/#enus/GUID-E38BF7C1-D941-4A30-99E0-206788EF9D89.html), and working request payloads for the NexumAPI Playground or your credit union's environment.

## HTTP error codes

NexumAPI uses the standard HTTP status codes to indicate the success or failure of an API request. The <mark style="color:purple;">`2xx`</mark> codes will generally indicate success, <mark style="color:purple;">`4xx`</mark> will indicate an error within the information provided (e.g. invalid payload), and <mark style="color:purple;">`5xx`</mark> will indicate an error on our side (this shouldn't happen).

```http
              
              200 - OK  Everything worked as intended.
          
     400 - Bad Request  Request was unacceptable.
          
       404 - Not Found  Endpoint doesn't exist, resource not found.
   
    500 - Server Error  Something happened within NexumAPI.

```

{% hint style="info" %}
**Symitar eDocs References:** [SymXchange Specification Response Codes](https://learnmore.symitar.com/edocs/#h2d/Admin/symconnect/syc_specresponsecodes.html), [SymXchange Error Messages](https://learnmore.symitar.com/edocs/#xml/DeviceControl/PagerSymExchangeErrorMessages_Ref.html), [SymXchange Error Codes](https://learnmore.symitar.com/edocs/#Guides/SymXchangeDevelopersGuide/SymXErrorCodes_R.html)
{% endhint %}

## Recursive order agnostic request elements

NexumAPI provides flexibility when constructing SymXchange request payloads. This prevents developers from having to reference a schema and ensure the order of their many request elements match 100%. We take care of this for every request, no matter the depth.

## Form URLEncoded content-type

NexumAPI supports the <mark style="color:purple;">`application/x-www-form-urlencoded`</mark> content-type for all requests, enabling developers to easily send silent HTTP requests from inline PowerOn.

Check out our white paper on sending a NexumAPI request via Validation PowerOn to circumvent inherent PowerOn limitations:

{% file src="/files/EK9hpFvSDxCnplE5PLIx" %}
Using NexumAPI as a Service (NaaS) with a Validation PowerOn, October 2023
{% endfile %}

## Multi-version support

NexumAPI supports every Jack Henry supported SymXchange version (<mark style="color:purple;">`v2018`</mark> through <mark style="color:purple;">`v2023`</mark> + <mark style="color:purple;">`Persistent endpoint`</mark>).

## Runtime discovery endpoints

NaaS includes utility endpoints for discovering and monitoring the runtime surface exposed to a given environment:

* <mark style="color:purple;">`/health`</mark> and <mark style="color:purple;">`/keep-alive`</mark> return basic service availability.
* <mark style="color:purple;">`/connection-status`</mark> checks SymXchange host and port reachability and reports devices still being retried.
* <mark style="color:purple;">`/host-configs`</mark> returns configured SymXchange host metadata.
* <mark style="color:purple;">`/supported-services`</mark> returns the available SymXchange services and versions.
* <mark style="color:purple;">`/nexum/{sym}/{version}/{service}/operations`</mark> returns the operations available for a service.

## MCP server

<mark style="color:blue;">`Configurable`</mark> • NaaS can expose a protected [Model Context Protocol](https://modelcontextprotocol.io/) server at <mark style="color:purple;">`/mcp/`</mark> so AI agents can discover and use approved SymXchange capabilities without hand-crafting raw HTTP requests.

The MCP server includes tools for:

* Listing NaaS capabilities, configured Syms, SymXchange services, record types, and operation schemas.
* Reading records with <mark style="color:purple;">`get_record`</mark>, <mark style="color:purple;">`list_records`</mark>, and <mark style="color:purple;">`search_records`</mark>, including high-value services like accounts, users, user management, parameters, and other supported SymXchange record surfaces.
* Running global FindBy account searches through <mark style="color:purple;">`find_accounts`</mark>.
* Executing PowerOns through <mark style="color:purple;">`run_poweron`</mark>, including standard and MCW PowerOn operations when write tools are enabled.
* Posting, reversing, and looking up transactions through transaction-specific MCP tools when enabled for the deployment.
* Supporting operational workflows such as user logon/logoff, password management, ECAA authentication, file upload/download, batch jobs, balancing, credit reports, and cash-machine operations where the underlying SymXchange services are available.
* Mirroring NaaS utility endpoints with tools for health, host configs, connection status, and supported services.
* Creating, updating, and deleting records when MCP write tools are explicitly enabled for the deployment.

SymXchange credentials are supplied through a dedicated MCP HTTP header or tool argument and should not be embedded in prompts.

## SymXchange native passthrough

<mark style="color:blue;">`Libum-hosted`</mark> • Most third-party SymXchange traffic is unknown to a credit union unless there's a failure. Even then, it can be tricky to quickly access and interpret the available logging information. NexumAPI can gain insight on all third-party traffic over any SymXchange instance without making any internal Symitar configuration changes, simply tell your vendor to access SymXchange through a new endpoint.

{% hint style="success" %}
The participating third-party can send either native SymXchange or NexumAPI request payloads to the endpoint and the traffic is interpreted and logged just the same.
{% endhint %}

## Detailed logging transports

All NexumAPI traffic is accessible through all logging transports and bubbles up critical user identifying information desired by auditors. Even further, this can be coupled with NexumAPI attributes using <mark style="color:purple;">`customFields`</mark> to expose custom metadata to various logging levels.

## Configurable service exposure

NaaS deployments can restrict the SymXchange services and versions that are exposed to callers. Those same filters are honored by runtime discovery and MCP tools, so agents and applications only see the services approved for that environment.

MCP write tools are separately gated and only register when write access is explicitly enabled.

## Managed infrastructure

<mark style="color:blue;">`Libum-hosted`</mark> • NexumAPI is available on a completely managed infrastructure with availability subject to our published [SLA](https://libum.io/legal/sla/). For those wondering, this is handled completely by infrastructure as code (IaC) on a serverless compute engine on AWS.

## Automatic updates

<mark style="color:blue;">`Libum-hosted`</mark> • As new features become available, NexumAPI will automatically be updated using non-invasive techniques keeping your institution on the latest release without the need for scheduled updates or even downtime.

## Load balancing & auto scaling

<mark style="color:blue;">`Libum-hosted`</mark> • Given NexumAPI's infrastructure is serverless it is also governed by a load balancer such that it automatically distributes incoming application traffic across multiple targets and virtual appliances to meet your SymXchange demand.

## High availability

<mark style="color:blue;">`Libum-hosted`</mark> • NexumAPI is spread across multiple availability zones to meet the standards described in our [SLA](https://libum.io/legal/sla/).


---

# 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/capabilities.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.
