Apps
List apps, look up by name, or fetch a single app by id.
A Model Context Protocol server that exposes your TrackVia account — apps, views, records, and files — plus a rich library of higher-level helpers for query, workflow, import, dedupe, aggregation, state machines, and lifecycle — for any MCP-aware assistant.
Point an MCP-aware client at the server, pass through a TrackVia access token, and your model can work directly against your TrackVia apps.
List apps, look up by name, or fetch a single app by id.
List account users, create one, bulk-invite many, or batch-resolve by email.
List views, filter by name, page through records, run keyword search.
Read, create (single or batch), update, or delete records — including bulk delete within a view.
Download, upload, or delete files attached to record fields.
Annotate a view, record, or whole account with field metadata; export an app's full schema.
Filter, sort, select, and export records — evaluated inside the MCP server. Fan-out search across every view.
Upsert by a unique field, or bulk-update / bulk-delete by filter (with preview, backup, and safety confirm).
Duplicate records, copy between views, and expand relationships inline.
Turn human names (view, field, user) into the right ids.
Locate fields across views and walk a relationship graph around any record.
Find and merge duplicates, and surface records missing required fields.
Dry-run or execute CSV / JSON imports with casting and optional upsert.
Group-by, pivot, trend, and top-N — computed client-side over paginated records with bounded scans.
Status-field transitions with optimistic-concurrency checks, plus a bulk "advance workflow" variant.
Soft-delete and restore patterns that flip an archive field instead of destroying data.
Inventory every registered tool with version and status — useful for discovery from the model.
The server speaks MCP over streamable HTTP at the
/mcp endpoint. Every MCP request must carry a TrackVia access token (see Configure). Other MCP clients should work too, but Claude Code is the only one we
currently document.
claude mcp add --transport http trackvia https://k8s-qa4.qa.xvia.com/mcp/mcp \
--header "Authorization: Bearer YOUR_TRACKVIA_ACCESS_TOKEN"
Optional: pin a specific TrackVia host (defaults to the server's configured host) and/or target a sandbox account inside that account:
claude mcp add --transport http trackvia https://k8s-qa4.qa.xvia.com/mcp/mcp \
--header "Authorization: Bearer YOUR_TRACKVIA_ACCESS_TOKEN" \
--header "X-TrackVia-Host: qa1.qa.xvia.com" \
--header "X-TrackVia-Account-Id: 12345"
Verify with claude mcp list — TrackVia should appear as connected.
Headers your MCP client passes through on every request. The client sets them for you once you paste the values in at install time.
| Header | Required | Purpose |
|---|---|---|
Authorization |
Yes | TrackVia OAuth access token, as Bearer <token>. |
X-TrackVia-Host |
Optional |
Override the upstream TrackVia host this request targets — e.g. qa1.qa.xvia.com. Falls back to the default host https://go.trackvia.com. Must match the hardcoded allowlist: *.trackvia.com, *.xvia.com, or localhost.
|
X-TrackVia-Account-Id |
Optional | Target a sandbox account id inside the account implied by the access token. Must be a positive integer. Omit to use the access token's default account. |
Every tool the server registers at startup.
| Group | Tool | Description |
|---|---|---|
| Bootstrap | whoAmI | Returns the session's cached AccountContext: {userId, email, defaultAccountId, accounts: [...]}. |
serverCapabilities | Returns `{name, version, tools: [{name, since, status, replacedBy?}]}` — the authoritative list of what this server exposes and how stable each tool is. |
From your TrackVia account — exchange your API user credentials for a short-lived OAuth access token through TrackVia's OAuth flow. Refer to the TrackVia API docs for the exact steps; this server does not issue tokens.
No. Access tokens are extracted from request headers, used for the outbound TrackVia call, and discarded. The logger redacts credential fields rather than writing them.
X-TrackVia-Host?
Only when you need to point this request at a non-default TrackVia environment — e.g.
qa1.qa.xvia.com while developing against QA. The host must match the
hardcoded allowlist: *.trackvia.com, *.xvia.com, or
localhost. Omit the header to use the server's default host.
X-TrackVia-Account-Id?Only when you want to target a sandbox account inside the account your access token belongs to. Pass the sandbox's numeric account id; omit the header to use the access token's default account.
Once connected, ask your model in plain language. The server composes small tools into real workflows, so most of these are one sentence.
I'm new to this account. Give me a one-shot orientation — apps, views, and a few sample fields per view — so I know what I'm working with.
Tell me which tools this server exposes, when each was introduced, and whether any are marked experimental or deprecated.
Search every view in the "Operations" app for the word "urgent" and show me the top hits per view.
Which views anywhere in the account have a field called "Priority"?
Pull record 7421 from the "Orders" view with every field annotated — type,
required, writable, and linked ids.
Upsert this lead into the "Leads" view, keying on Email — update if it exists, otherwise create.
Preview what would happen if I set Status="Archived" on every record in "Old
Tickets" last updated before 2025-01-01. Don't write anything yet.
Back up every matching record first, then archive every "Inactive" contact in the "Contacts" view.
Here's a CSV of new leads. Dry-run the import first, using Email as the unique key, and tell me which rows would create vs. update vs. fail validation.
The dry run looks clean. Now actually run the import and upsert on Email.
Find duplicate contacts in the "Contacts" view grouped by email, case-insensitive, with at least 2 matches per cluster.
Take this cluster of duplicate contacts, merge them into one — keep the oldest record and fill any empty fields from the others.
In the "Projects" view, show me every record that's missing any required field, annotated with which fields are missing.
Build a 3-deep graph around record 7421 in "Orders" — every parent, every
child, every link.
Pull record 7421 from "Orders" and expand its Customer and Owner relationship
fields inline.
Export every "Active" deal as CSV with just Name, Amount, Stage, and CloseDate.
Page through the "Tickets" view filtered to Status="Open", sorted by Priority desc — return up to 5000 records.
Export the full schema of the "Operations" app so I can see every view, every field, every choice, and every relationship target in one JSON blob.
Describe the "Contacts" view — show me every field's type, requiredness, writability, and choices.
In "Orders", group by Status and show me the count and the sum of Amount per group.
Build a pivot of "Deals" with Stage across the rows and Region across the columns, averaging Amount.
Show me a month-by-month trend of new records created in "Leads" this year — bucket by CreatedAt.
Who are the top 10 customers by total order amount in "Orders"?
Move record 4412 from Status "Submitted" to "Approved" — only if it's still
"Submitted" right now — and stamp ApprovedAt with the current timestamp.
For every "Expense Report" still sitting in "Pending Manager" assigned to user 88, advance Status to "Pending Finance".
Archive record 8890 in "Contacts" by setting Archived=true and
ArchivedAt=now. Don't actually delete.
Restore record 8890 in "Contacts": Archived=false, clear ArchivedAt.
Invite these 20 users — pasted below as CSV — and tell me which rows failed and why. confirm: true.
Look up these emails in the account and return the user ids, plus any that didn't match.