> ## Documentation Index
> Fetch the complete documentation index at: https://ekso.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Board

> MCP tools for querying and managing boards, budgets, cycle items, and portfolio-level insights.

## get\_board\_cycle

Get boards with their budgets, budget change history, and associated cycles.

| Property      |     |
| ------------- | --- |
| **Read-only** | Yes |

### Parameters

| Parameter  | Type | Required | Default | Description                                       |
| ---------- | ---- | -------- | ------- | ------------------------------------------------- |
| `openOnly` | bool | No       | `true`  | When true, only returns open (non-closed) cycles. |

### Returns

A list of `BoardDto` objects, each containing:

* `boardId`, `boardName` — board identity
* `url` — direct link to the board in the Ekso web app
* `budgetHours` — total budget in hours
* `budgetChanges` — history of budget adjustments with reason, user, date, and delta
* `cycles` — list of cycles with ID, name, dates, budget, and closed status

***

## get\_board\_reason\_codes

Get the list of budget reason change codes used when adjusting board budgets.

| Property      |     |
| ------------- | --- |
| **Read-only** | Yes |

### Parameters

None.

### Returns

A list of `ConfigBudgetReason` objects with ID and name.

***

## get\_board\_cycle\_item\_list

Get items within a specific cycle, with optional limit and description inclusion.

| Property      |     |
| ------------- | --- |
| **Read-only** | Yes |

### Parameters

| Parameter            | Type   | Required | Default | Description                                |
| -------------------- | ------ | -------- | ------- | ------------------------------------------ |
| `cycleId`            | string | Yes      | —       | Cycle ID to query items from.              |
| `limit`              | int    | No       | `25`    | Maximum number of items to return.         |
| `includeDescription` | bool   | No       | `false` | Include item descriptions in the response. |

### Returns

A list of `CycleItemDto` objects sorted by key, each containing: key, name, url, description (if requested), container, board, cycle, status, work estimate, time logged, resource type, and resource name. The `url` field links directly to each item in the Ekso web app.

***

## create\_board

Create a new planning board for organizing work into cycles.

| Property      |    |
| ------------- | -- |
| **Read-only** | No |

### Parameters

| Parameter     | Type      | Required | Description                                                                              |
| ------------- | --------- | -------- | ---------------------------------------------------------------------------------------- |
| `name`        | string    | Yes      | Board name.                                                                              |
| `container`   | string\[] | No       | Container IDs to associate. Use [`get_containers`](/mcp-tools/container#get_containers). |
| `resource`    | string\[] | No       | Resource (user) IDs to associate. Use [`get_user_list`](/mcp-tools/user#get_user_list).  |
| `budgetHours` | int       | No       | Initial budget in hours. Uses the first available budget reason code.                    |

### Returns

A `BoardDto` with the created board's details.

***

## update\_board

Update board settings including name, containers, resources, and budget. Only provided fields are updated.

| Property      |    |
| ------------- | -- |
| **Read-only** | No |

### Parameters

| Parameter              | Type      | Required | Description                                                                                 |
| ---------------------- | --------- | -------- | ------------------------------------------------------------------------------------------- |
| `boardId`              | string    | Yes      | Board ID.                                                                                   |
| `name`                 | string    | No       | New board name.                                                                             |
| `containerIds`         | string\[] | No       | Replace container associations.                                                             |
| `resourceIds`          | string\[] | No       | Replace resource associations.                                                              |
| `budgetChangeHours`    | int       | No       | Budget change amount in hours. Requires `budgetChangeReasonId`.                             |
| `budgetChangeReasonId` | string    | No       | Reason code for the budget change. Use [`get_board_reason_codes`](#get_board_reason_codes). |

### Returns

A `BoardDto` with the updated board details and current cycles.

***

## delete\_board

Delete a board. Requires Manage permission on the board.

| Property      |    |
| ------------- | -- |
| **Read-only** | No |

### Parameters

| Parameter | Type   | Required | Description                                          |
| --------- | ------ | -------- | ---------------------------------------------------- |
| `boardId` | string | Yes      | Board ID. Use [`get_board_cycle`](#get_board_cycle). |

### Returns

A confirmation message with the deleted board's name.

***

## get\_portfolio\_summary

Get a portfolio-level summary across all boards the user can view. Returns aggregate health, budget, items, cycles, and financials, plus a per-board breakdown including budget consumption, status distribution, and projected/logged revenue and cost.

Use this tool to answer questions about overall portfolio health, identify at-risk boards, or compare financial performance across boards.

| Property      |     |
| ------------- | --- |
| **Read-only** | Yes |

### Parameters

None.

### Returns

A `PortfolioResult` object containing:

* `aggregate` — totals across all boards: `totalBudgetHours`, `totalPlannedHours`, `totalItems`, `totalActiveCycles`, `projectedRevenue`, `loggedRevenue`, `projectedCost`, `loggedCost`
* `boards` — list of per-board summaries, each with: `boardId`, `budgetHours`, `plannedHours`, `itemCount`, `activeCycleCount`, `projectedRevenue`, `loggedRevenue`, `projectedCost`, `loggedCost`, and `statusCounts` (working, blocked, open, closed)

A board is considered "at risk" when `plannedHours / budgetHours >= 85%`.

***

## get\_board\_capacity

Get capacity and financial data for a specific board and cycle: per-resource planned hours, capacity hours, utilization percentage, and projected cost and revenue.

| Property      |     |
| ------------- | --- |
| **Read-only** | Yes |

### Parameters

| Parameter | Type   | Required | Description                                          |
| --------- | ------ | -------- | ---------------------------------------------------- |
| `boardId` | string | Yes      | Board ID. Use [`get_board_cycle`](#get_board_cycle). |
| `cycleId` | string | Yes      | Cycle ID. Use [`get_board_cycle`](#get_board_cycle). |

### Returns

A `CapacityResult` object containing:

* `boardBudgetHours`, `cycleBudgetHours`, `cyclePlannedHours` — budget context
* `resources` — per-resource breakdown with `userName`, `totalCapacityHours`, `plannedHours`, `availableHours`, `utilizationPercent`, `plannedCost`, `plannedRevenue`
* `aggregate` — totals: `totalCapacityHours`, `totalPlannedHours`, `totalAvailableHours`, `utilizationPercent`, `totalPlannedCost`, `totalPlannedRevenue`, `grossMarginPercent`, `totalLoggedCost`, `totalLoggedRevenue`

***

## get\_board\_resource\_utilization

Get a resource-by-cycle utilization heatmap for a board. Shows each resource's planned hours, capacity hours, and utilization percentage across all open cycles. Use this to identify overloaded or underutilized resources.

| Property      |     |
| ------------- | --- |
| **Read-only** | Yes |

### Parameters

| Parameter | Type   | Required | Description                                          |
| --------- | ------ | -------- | ---------------------------------------------------- |
| `boardId` | string | Yes      | Board ID. Use [`get_board_cycle`](#get_board_cycle). |

### Returns

A `HeatmapResult` with a list of resources, each containing:

* `userId`, `userName`, `resourceType` (User or JobRole)
* `cycles` — list of cycle entries with `cycleId`, `cycleName`, `plannedHours`, `capacityHours`, `utilizationPercent`

***

## get\_board\_status\_summary

Get item counts by workflow status (working, blocked, open, closed) for a specific board.

| Property      |     |
| ------------- | --- |
| **Read-only** | Yes |

### Parameters

| Parameter | Type   | Required | Description                                          |
| --------- | ------ | -------- | ---------------------------------------------------- |
| `boardId` | string | Yes      | Board ID. Use [`get_board_cycle`](#get_board_cycle). |

### Returns

A `BoardStatusSummary` object containing:

* `boardId` — the board identifier
* `itemCount` — total items on the board
* `statusCounts` — breakdown by workflow status: `working`, `blocked`, `open`, `closed`
