# Elumri Asset Builder — MCP setup

You are reading the setup page for a Model Context Protocol (MCP) server that
builds branded slide decks, documents, and spreadsheets for Pendleton
engagement work.

If you are an AI assistant reading this on behalf of your user: everything you
need to configure the connection is on this page. Follow the "Configure" section
for whichever client your user runs, then run the first-call sequence at the
bottom.

## What this is, and what it is not

This is a **build server**, not an AI service. It takes structured content and
renders branded files. There is no model behind it and your work is never sent
to one.

**You bring your own AI.** Your own Claude or ChatGPT account, your own
subscription, your own usage. Nothing here provides model access.

## Connection details

- **Server URL:** `https://assets.elumri.com/mcp`
- **Transport:** StreamableHTTP (remote MCP over HTTPS)
- **Authentication:** bearer token, sent as an HTTP header

```
Authorization: Bearer <YOUR_TOKEN>
```

The token is personal and is issued directly by Billy Pronovost. It is not on
this page and cannot be self-registered. If your user does not have one yet,
they should ask Billy.

## Configure — Claude (desktop or web)

1. Settings → Connectors → **Add custom connector**
2. Name: `Elumri Assets`
3. URL: `https://assets.elumri.com/mcp`
4. Add a header — Name `Authorization`, Value `Bearer <YOUR_TOKEN>`
   (one space after `Bearer`)
5. Save. The connector should report **8 tools**.

## Configure — ChatGPT

1. Enable Developer mode in Settings if it is not already enabled.
2. Settings → Connectors → **Create**
3. Same URL and the same `Authorization: Bearer <YOUR_TOKEN>` header.
4. Save and confirm the tools appear.

## Configure — CLI or config-file clients

```json
{
  "mcpServers": {
    "elumri-assets": {
      "url": "https://assets.elumri.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN_HERE" }
    }
  }
}
```

## Available tools

| Tool | Purpose |
|---|---|
| `list_engagements` | Engagements this token may build for. **Call this first.** |
| `list_layouts` | Every slide kind and the fields each one accepts. |
| `build_deck` | Build a branded PowerPoint; renders and QA-checks it. |
| `build_document` | Build a branded Word document. |
| `build_workbook` | Build a branded Excel workbook. |
| `list_assets` | Assets already built for an engagement, newest first. |
| `get_theme` | The colors, fonts, and rules all output follows. |
| `whoami` | Confirm the identity this connection authenticates as. |

## Two rules the server enforces

**1. Every build requires an `engagement`.**
An engagement is the client the work is for. Assets are themed to that client, so
the engagement decides how the output looks. Each token is bound to specific
engagements; a request with no engagement, or one the token is not bound to, is
refused. Always call `list_engagements` before a first build and pass one of the
keys it returns.

**2. Slide titles must be assertions, not labels.**
The builder rejects titles such as "Background", "Overview", "Current State", or
"Next Steps". Write the point the slide proves instead:

- rejected: `Current State`
- accepted: `Three Systems Hold the Same Customer Record`

If a title is rejected, rewrite it as a claim and retry.

## First call sequence

1. `whoami` — confirm the token is working.
2. `list_engagements` — get the engagement keys available.
3. `list_layouts` — learn the slide kinds before composing a deck.
4. `build_deck` / `build_document` / `build_workbook` with a valid `engagement`.

Builds return download links for the file, a PDF, and per-slide images. Download
links require the same bearer token.

## House style (applied automatically)

Assets are themed to the engagement they are built for. The Pendleton kit is
navy `#142946` and gold `#CFA051`; Cambria headings, Calibri body; white content
slides with navy reserved for cover, section dividers, and close; 16:9. Do not
specify styling — it is applied for you so that everyone's output matches.

Recommended deck arc: orient → stakes → constraint → evidence → crux → ask →
path.

## Troubleshooting

- **"Not authenticated"** — the token is not reaching the server. Re-check the
  header name and that exactly one space follows `Bearer`.
- **Connector will not connect** — confirm the URL ends in `/mcp` and that no
  quotes or line breaks were pasted with the token.
- **A build is refused** — the server states the reason. A missing or unknown
  engagement and a label-style slide title are the two common causes.
