@rowvyn/servicetitan-mcp 2.4.0 → 2.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +1 -1
- package/CHANGELOG.md +5 -0
- package/README.md +7 -7
- package/build/chunks/chunk-XORPTVFD.js +54 -0
- package/build/index.js +1 -1
- package/build/sse.js +3 -3
- package/build/streamable-http.js +2 -2
- package/package.json +1 -1
- package/build/chunks/chunk-HBUFFGNS.js +0 -54
package/.env.example
CHANGED
|
@@ -10,7 +10,7 @@ ST_READONLY=true # true | false (default: true)
|
|
|
10
10
|
ST_CONFIRM_WRITES=false # Require _confirmed: true on write operations (default: false)
|
|
11
11
|
ST_DOMAINS= # comma-separated: crm,pricebook,reporting (empty = all)
|
|
12
12
|
ST_LOG_LEVEL=info # debug | info | warn | error
|
|
13
|
-
ST_TIMEZONE= # IANA timezone for date alignment (e.g. America/New_York)
|
|
13
|
+
ST_TIMEZONE= # IANA timezone for date alignment and display conversion (e.g. America/New_York)
|
|
14
14
|
ST_MAX_RESPONSE_CHARS=100000 # Max characters in tool response before truncation
|
|
15
15
|
ST_ALLOWED_CALLERS= # Optional comma-separated caller allowlist (matches authInfo or proxy-injected caller headers when available)
|
|
16
16
|
# ST_RESPONSE_SHAPING=true # Set to false to disable response transformation (returns raw API data)
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/), and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
6
6
|
|
|
7
|
+
## [2.4.2] - 2026-03-29
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
- **README cleanup** — removed misleading "0.001% revenue accuracy" stat (replaced with "Dashboard-matched revenue"), stripped internal "Report 175" jargon throughout. No code changes.
|
|
11
|
+
|
|
7
12
|
## [2.4.0] - 2026-03-28
|
|
8
13
|
|
|
9
14
|
### Added
|
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ The only MCP server for the ServiceTitan API — 467 tools across 15 domains, pl
|
|
|
20
20
|
- **ServiceTitan has no official MCP server** or developer tooling beyond REST docs
|
|
21
21
|
- **Raw API access is friction-heavy** — OAuth token management, module-prefix routing, pagination, and response parsing all fall on you
|
|
22
22
|
- **This server handles all of that** and adds 10 intelligence tools that aggregate multiple endpoints into operational insights
|
|
23
|
-
- **
|
|
23
|
+
- **Dashboard-matched revenue** — verified on production data using the same Reporting API source that powers ST's own dashboard
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
@@ -28,7 +28,7 @@ The only MCP server for the ServiceTitan API — 467 tools across 15 domains, pl
|
|
|
28
28
|
|
|
29
29
|
- **467 tools across 15 domains** — CRM, dispatch, accounting, payroll, inventory, marketing, and more
|
|
30
30
|
- **10 intelligence tools** — composite analytics that aggregate multiple API calls into revenue summaries, ops snapshots, technician scorecards, and more
|
|
31
|
-
- **Dashboard-
|
|
31
|
+
- **Dashboard-matched revenue** — `intel_revenue_summary` pulls from the same source as ST's own dashboard
|
|
32
32
|
- **Read-only by default** — `ST_READONLY=true` out of the box; write tools only activate when you're ready
|
|
33
33
|
- **Safety layer** — confirmation workflow for writes/deletes, audit logging with sensitive field redaction
|
|
34
34
|
- **Domain filtering** — expose only the tool groups you need via `ST_DOMAINS`
|
|
@@ -183,7 +183,7 @@ The real differentiator. These 10 tools aggregate multiple API calls and report
|
|
|
183
183
|
|
|
184
184
|
| Tool | What It Returns |
|
|
185
185
|
|------|----------------|
|
|
186
|
-
| `intel_revenue_summary` | Dashboard-
|
|
186
|
+
| `intel_revenue_summary` | Dashboard-matched revenue by business unit. Includes completed revenue, non-job revenue, adjustments, collections, and BU productivity rollups. |
|
|
187
187
|
| `intel_daily_snapshot` | 6-metric same-day ops briefing: revenue-to-date, jobs in progress, call outcomes, bookings, open estimates, and upcoming next-day jobs. |
|
|
188
188
|
| `intel_technician_scorecard` | Per-tech jobs, revenue, avg ticket, productivity, lead gen, membership close rate, and sales from both tech and marketing leads — with team averages. |
|
|
189
189
|
| `intel_membership_health` | Active memberships, signups, cancellations, renewals, retention rate, invoiced revenue, and conversion by business unit. |
|
|
@@ -198,7 +198,7 @@ These tools are why this server exists. Raw CRUD tools are table stakes. Intelli
|
|
|
198
198
|
|
|
199
199
|
### Revenue Accuracy
|
|
200
200
|
|
|
201
|
-
`intel_revenue_summary` uses ServiceTitan's **Reporting API**
|
|
201
|
+
`intel_revenue_summary` uses ServiceTitan's **Reporting API** to calculate totals. This is the same source ST's own dashboard uses — which means it includes:
|
|
202
202
|
|
|
203
203
|
- **Completed Revenue** — revenue from completed jobs
|
|
204
204
|
- **Non-Job Revenue** — membership fees, add-ons, and other income not tied to a specific job
|
|
@@ -246,7 +246,7 @@ Copy `.env.example` to `.env` and fill in your credentials.
|
|
|
246
246
|
| `ST_MAX_RESPONSE_CHARS` | `100000` | Cap tool response size |
|
|
247
247
|
| `ST_DOMAINS` | *(all)* | Comma-separated domain allowlist (e.g. `crm,dispatch,reporting`) |
|
|
248
248
|
| `ST_LOG_LEVEL` | `info` | Log level: `debug`, `info`, `warn`, `error` |
|
|
249
|
-
| `ST_TIMEZONE` | `UTC` | IANA timezone for the tenant (e.g. `America/New_York`) —
|
|
249
|
+
| `ST_TIMEZONE` | `UTC` | IANA timezone for the tenant (e.g. `America/New_York`) — used for date-bound intelligence queries and local-time display conversion in all tool responses |
|
|
250
250
|
| `ST_RESPONSE_SHAPING` | `true` | Set to `false` to disable intelligence response transformation |
|
|
251
251
|
| `ST_CORS_ORIGIN` | _(none)_ | Allowed CORS origin for Streamable HTTP / SSE. Required for browser access. |
|
|
252
252
|
| `ST_ALLOWED_CALLERS` | _(none)_ | Comma-separated caller identity allowlist (e.g. `alice@example.com,svc-user`) |
|
|
@@ -254,7 +254,7 @@ Copy `.env.example` to `.env` and fill in your credentials.
|
|
|
254
254
|
| `ST_MCP_PORT` / `PORT` | `3100` | HTTP server port for Streamable HTTP and SSE transports |
|
|
255
255
|
| `ST_MCP_API_KEY` | _(none)_ | API key for authenticating remote MCP clients (required for HTTP transports) |
|
|
256
256
|
|
|
257
|
-
> **Set `ST_TIMEZONE`** to your tenant's local timezone. Without it, date-only queries (e.g. `startDate: "2026-02-01"`) are interpreted as UTC midnight — which can miss or include invoices and jobs near day boundaries for non-UTC tenants.
|
|
257
|
+
> **Set `ST_TIMEZONE`** to your tenant's local timezone. Without it, date-only queries (e.g. `startDate: "2026-02-01"`) are interpreted as UTC midnight — which can miss or include invoices and jobs near day boundaries for non-UTC tenants, and tool responses will keep timestamps in UTC instead of your local display timezone.
|
|
258
258
|
|
|
259
259
|
Boolean env vars accept: `true`, `false`, `1`, `0` (case-insensitive).
|
|
260
260
|
|
|
@@ -299,7 +299,7 @@ The CLI and this MCP server share the same design philosophy: push the business
|
|
|
299
299
|
|
|
300
300
|
| Feature | This Server | Community MCP Servers |
|
|
301
301
|
|---------|------------|----------------------|
|
|
302
|
-
| Revenue accuracy | ✅
|
|
302
|
+
| Revenue accuracy | ✅ Dashboard-matched | ❌ $17–21K off per period |
|
|
303
303
|
| Intelligence tools | ✅ 10 tools | ❌ None |
|
|
304
304
|
| Domain coverage | ✅ 467 tools, 15 domains | ⚠️ 10–50 tools |
|
|
305
305
|
| Safety layer | ✅ Read-only default, audit log | ❌ None |
|