# In-app Assistant

The **Assistant** is DailyPlay's built-in chatbot. It uses the same org-scoped capabilities as the
remote [MCP server](/api/mcp/) — creating games, generating assets, managing vouchers, reading
reports, and more — without leaving the dashboard or creating an API key.

:::note[Available on all tiers]
The Assistant is available on **all subscription tiers**. Remote MCP and API Keys remain
**Business** or higher. Connection tools in chat follow your plan's Connections page access
(Professional+).
:::

## Open the Assistant

You need to be signed in with an active organization.

| Entry point | How |
| --- | --- |
| Floating panel | Click the assistant button in the bottom-right corner of the app |
| Full page | Open **Assistant** in the sidebar, or go to `/assistant` |

Both views share the same conversations and chat history for your user + organization.

## What You Can Ask

Examples that map well to the assistant's tools:

- “List game templates for a spin-the-wheel campaign”
- “Create a draft game from template X with our brand colors”
- “Generate art for each template asset, then publish the game”
- “Create a voucher set and import these codes”
- “Summarize plays for the last 30 days”
- “Mint a play session link for game 42”

The assistant calls tools on your behalf using your signed-in role (viewer, analyst, editor, admin,
or owner). Tools you are not allowed to use are hidden automatically.

## How It Works

1. You send a message in the panel or on `/assistant`
2. DailyPlay streams a reply (SSE) while the model may call tools
3. Tool activity appears as a compact summary (expand to see individual tools)
4. Messages are saved to your conversation history for that organization

Long multi-step tasks (especially bulk image generation) may pause with a **Continue** prompt when
the tool round limit is reached. Click continue to resume from the same context.

## Conversations

- Start a **new chat** from the history list
- Switch between past conversations
- Delete a conversation when you no longer need it

Conversation titles are derived from your first message.

## Limits & Access

| Constraint | Behavior |
| --- | --- |
| Auth | Signed-in Clerk user + active org (API keys are not accepted) |
| Role | Tools filtered by your organization role |
| Tier | Connection tools hidden unless your plan includes Connections |
| Rate limit | Default **20** messages per minute and **200** per day per user in an org |

Exceeding the rate limit returns a temporary error; wait and try again.

## Privacy

Sensitive tool data is redacted before it is sent back to the model and before it is stored in chat
history. That includes:

- CTA lead PII (name, email, phone, custom fields)
- Voucher codes
- Scoreboard player names
- Credential / secret keys

Aggregates and resource IDs remain so the assistant can keep working. Remote MCP clients that call
tools with an API key still receive full payloads scoped by that key.

## Assistant vs MCP

| | In-app Assistant | Remote MCP |
| --- | --- | --- |
| Who uses it | Dashboard users | External agents (Cursor, Claude, …) |
| Auth | Signed-in session | Organization API key (`dpk_…`) |
| Tier | All tiers | Business+ |
| Setup | None | Client config + MCP scopes on the key |

## Next Steps

- [MCP Server](/api/mcp/) — connect Cursor, Claude, or other agents
- [MCP Tools Reference](/api/mcp-tools/) — every capability the assistant can call
- [API Keys](/api/api-keys/) — scopes for remote MCP access