Prism
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CROSSDECK_API_BASE | No | Override the API base URL (e.g., for sandbox). | https://api.cross-deck.com |
| CROSSDECK_SECRET_KEY | Yes | Your secret API key from the Crossdeck dashboard (starts with cd_sk_). Required for local stdio mode. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_projectsA | List every app (project) in your Crossdeck portfolio that this connector can read — the same set your Pulse dashboard shows. Returns an array of { id, name } per app. Call this FIRST when a workspace key (cd_wk_) is connected, then pass an id to other tools or set a default with use_project. With a single-app key it returns just that one app. Read-only; takes no arguments. |
| use_projectA | Set the current app for this conversation so later tools default to it without repeating |
| get_revenueA | Get an app's recurring revenue from its maintained revenue ledger (a point-read, never a scan). Returns MRR in cents, the paying-customer count, and the per-rail split across Stripe, Apple, and Google; with granularity='day' it adds a daily time series over the window. Use for 'what's our MRR', 'how many paying customers', or revenue-trend questions. An app with no revenue yet returns zeros, not an error. |
| get_read_costA | Get an app's database read-cost over the last |
| get_error_impactA | For one error (by fingerprint/issue id), get its blast radius joined to identity. Returns distinct users affected, how many of those are PAYING customers, and the error's type, status, occurrence count, and first/last-seen timestamps — counts only. Use to size an error's impact. For the NAMED paying users behind the counts (and their revenue at risk), call get_error_affected_users instead. |
| get_error_affected_usersA | For one error (by fingerprint), get the PAYING users it actually hit — the row-level moat answer: which paying customer broke, and how much are they worth. Returns a list sorted by revenue at risk (highest first), each row with your own user id, monthly revenue in cents, and when they last hit the error. Joins the error layer to identity and revenue. Returns only your own identifiers — never emails or names you didn't provide. Use when you need the actual customers, not just the counts from get_error_impact. |
| get_customerA | Cross-match one customer across every layer Crossdeck joins by identity. Returns what they pay (monthly cents), their active entitlement count, and their database read-cost — in one view. Identify the person by ANY ONE of the identifiers below; they all resolve to the same canonical customer. Use for 'how much does this user pay and what do they cost us?'. If no customer resolves, returns a no-match result, not an error. |
| get_host_analyticsA | Get headless web analytics for one host/subdomain the app owns (e.g. a tenant's subdomain). Returns page views and unique visitors with totals; granularity='day' adds a daily series. The host MUST be a verified origin of the project, or the request is rejected (403). Use for per-tenant or per-subdomain traffic questions. |
| get_host_top_pagesA | Get the top pages or top referrers for one host the app owns, ranked and paginated. Returns rows of { key, views } highest-first, where |
| draw_user_growthA | Render an interactive line chart of unique visitors and page views over time for a host you own, and return the period totals as text. Returns a rendered chart in MCP-Apps-capable hosts (a text summary elsewhere) plus the totals. Use when asked to chart, graph, draw, or visualize growth or traffic for a subdomain. The host must be a verified origin of the project, or the request is rejected. |
| open_moat_dashboardA | Render a customer's cross-layer dashboard — what they pay (monthly), their active entitlements, and their database read-cost, joined by identity — and return the same as a text summary. Returns a rendered dashboard in MCP-Apps-capable hosts (a text summary elsewhere). Identify the customer by ANY ONE of the identifiers below; they all resolve to the same canonical customer. Use when asked to show, open, or visualize a customer's full picture. Returns a no-match result if no customer resolves. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| ui://crossdeck/user-growth | |
| ui://crossdeck/moat-dashboard |
TDQS
Scored across 11 tools
Most tools target distinct resources (projects, customers, errors, hosts, revenue, costs). However, get_customer and open_moat_dashboard both return overlapping customer info (payment, entitlements, read-cost) with different output formats, which could cause selection ambiguity.
Tools follow a consistent imperative_underscore pattern with verbs like get_, list_, draw_, open_, and use_. The naming is clear and predictable, though the verb choice varies appropriately across actions.
With 11 tools covering project management, customer insights, error analysis, host analytics, and revenue/costs, the set is well-scoped for a product analytics platform. Each tool serves a distinct purpose without redundancy.
The core analytics needs are covered: customer overview, error impact, traffic analysis, revenue tracking, and cost breakdown. Minor gaps like user-level event logs or data export are acceptable given the server's focus on cross-layer analytics.