@loopops/mcp-server 3.40.0 → 3.41.0
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/dist/tools/crm.js +6 -6
- package/dist/tools/deploy.d.ts +1 -1
- package/dist/tools/deploy.js +1 -1
- package/dist/tools/eng.js +33 -1
- package/dist/tools/pursue.d.ts +1 -1
- package/dist/tools/pursue.js +1 -1
- package/dist/tools/reporting.js +3 -3
- package/dist/tools/sfdc-sync.js +2 -2
- package/dist/tools/tal.d.ts +1 -1
- package/dist/tools/tal.js +1 -1
- package/package.json +1 -1
package/dist/tools/crm.js
CHANGED
|
@@ -7,19 +7,19 @@ export function registerCrmTools(server, allowed) {
|
|
|
7
7
|
// view analytics.my_pipeline. Row policies on salesforce.opportunity
|
|
8
8
|
// enforce per-user scoping (rep: own; manager: team; leadership/ops/eng:
|
|
9
9
|
// all). Query via the Cloud Remote MCP server (mcp.clickhouse.cloud/mcp).
|
|
10
|
-
// See docs/
|
|
10
|
+
// See docs/data/analytics-views.md.
|
|
11
11
|
// my_leads retired 2026-05-06 — replaced by ClickHouse view
|
|
12
12
|
// analytics.my_leads. Row policies on salesforce.lead enforce per-user
|
|
13
|
-
// scoping. Filter by created_date in the caller. See docs/
|
|
13
|
+
// scoping. Filter by created_date in the caller. See docs/data/analytics-views.md.
|
|
14
14
|
// pipeline_health retired 2026-05-06 — replaced by ClickHouse views
|
|
15
15
|
// analytics.pipeline_by_stage + analytics.win_rate(range_days).
|
|
16
|
-
// See docs/
|
|
16
|
+
// See docs/data/analytics-views.md.
|
|
17
17
|
// rep_performance retired 2026-05-06 — replaced by ClickHouse view
|
|
18
|
-
// analytics.rep_performance(range_days). See docs/
|
|
18
|
+
// analytics.rep_performance(range_days). See docs/data/analytics-views.md.
|
|
19
19
|
// forecast retired 2026-05-06 — replaced by ClickHouse view
|
|
20
|
-
// analytics.forecast(quarter_start, quarter_end). See docs/
|
|
20
|
+
// analytics.forecast(quarter_start, quarter_end). See docs/data/analytics-views.md.
|
|
21
21
|
// update_opportunity / update_lead removed 2026-05-09 (Phase 2 of
|
|
22
|
-
// docs/
|
|
22
|
+
// docs/plans/salesforce-mcp.md). Opportunity + Lead writes go through
|
|
23
23
|
// the `salesforce-hosted` MCP for every Loop role: per-user OAuth+PKCE
|
|
24
24
|
// preserves LastModifiedById; sharing rules + FLS + validation rules
|
|
25
25
|
// enforce server-side. Use mcp__salesforce-hosted__updateSobjectRecord.
|
package/dist/tools/deploy.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Phase 1.2 (this file) ships the first user-placement tool:
|
|
5
5
|
* propose_user_assignments — run the Python placement model on Modal,
|
|
6
6
|
* persist proposals against an open
|
|
7
|
-
* planning_cycle. See docs/
|
|
7
|
+
* planning_cycle. See docs/plans/deploy.md.
|
|
8
8
|
*
|
|
9
9
|
* The review/edit/approve/commit triplet (Phase 1.3–1.5) lands here too
|
|
10
10
|
* as it ships. Quota + account placement (Phases 2–3) get separate
|
package/dist/tools/deploy.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Phase 1.2 (this file) ships the first user-placement tool:
|
|
5
5
|
* propose_user_assignments — run the Python placement model on Modal,
|
|
6
6
|
* persist proposals against an open
|
|
7
|
-
* planning_cycle. See docs/
|
|
7
|
+
* planning_cycle. See docs/plans/deploy.md.
|
|
8
8
|
*
|
|
9
9
|
* The review/edit/approve/commit triplet (Phase 1.3–1.5) lands here too
|
|
10
10
|
* as it ships. Quota + account placement (Phases 2–3) get separate
|
package/dist/tools/eng.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { execSync } from "node:child_process";
|
|
2
|
-
import {
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { trpcMutation, trpcQuery } from "../api-client.js";
|
|
3
4
|
import { safeTool } from "./_helpers.js";
|
|
4
5
|
import { rangeSchema } from "./_schemas.js";
|
|
5
6
|
export function registerEngTools(server, allowed) {
|
|
@@ -33,4 +34,35 @@ export function registerEngTools(server, allowed) {
|
|
|
33
34
|
}
|
|
34
35
|
}));
|
|
35
36
|
}
|
|
37
|
+
if (allowed.has("promote_skill_to_tool")) {
|
|
38
|
+
server.tool("promote_skill_to_tool", "Scaffold a new MCP tool from a Claude skill (markdown). Generates Zod schema + tRPC procedure + MCP registration + role-gate entry on a feature branch, then opens a PR. Eng-only. See docs/plans/promote-skill-to-tool.md.", {
|
|
39
|
+
toolName: z
|
|
40
|
+
.string()
|
|
41
|
+
.describe("Snake_case MCP wire name, e.g. 'review_partner_pipeline'."),
|
|
42
|
+
skillContent: z
|
|
43
|
+
.string()
|
|
44
|
+
.describe("Full markdown content of the skill (frontmatter + body)."),
|
|
45
|
+
intendedRole: z
|
|
46
|
+
.enum(["rep", "manager", "leadership", "ops", "eng"])
|
|
47
|
+
.describe("MCP role gate — which role tier should see the tool."),
|
|
48
|
+
implementation: z
|
|
49
|
+
.enum(["agent", "code"])
|
|
50
|
+
.describe("'agent' = procedure delegates to Claude on the server. 'code' = procedure is hand-written TS; skill becomes a doc comment."),
|
|
51
|
+
category: z
|
|
52
|
+
.string()
|
|
53
|
+
.optional()
|
|
54
|
+
.describe("Tool category file under packages/mcp-server/src/tools/. Defaults to 'eng' for eng-tier tools, otherwise 'misc'."),
|
|
55
|
+
proposerEmail: z
|
|
56
|
+
.string()
|
|
57
|
+
.optional()
|
|
58
|
+
.describe("Email of the person who proposed the skill — for PR attribution."),
|
|
59
|
+
}, safeTool(async ({ toolName, skillContent, intendedRole, implementation, category, proposerEmail }) => trpcMutation("mcp.promoteSkillToTool", {
|
|
60
|
+
toolName,
|
|
61
|
+
skillContent,
|
|
62
|
+
intendedRole,
|
|
63
|
+
implementation,
|
|
64
|
+
category,
|
|
65
|
+
proposerEmail,
|
|
66
|
+
})));
|
|
67
|
+
}
|
|
36
68
|
}
|
package/dist/tools/pursue.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pursue-loop hybrid analysis tools.
|
|
3
3
|
*
|
|
4
|
-
* Home for hybrid-tools-pattern (docs/
|
|
4
|
+
* Home for hybrid-tools-pattern (docs/engineering/hybrid-tools.md) tools that operate
|
|
5
5
|
* on the deal-progression / pipeline-health surface — composing CH +
|
|
6
6
|
* Salesforce + Postgres reads to deliver deterministic structured analysis
|
|
7
7
|
* an operator can act on. By rule, these tools are read-only; they emit
|
package/dist/tools/pursue.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pursue-loop hybrid analysis tools.
|
|
3
3
|
*
|
|
4
|
-
* Home for hybrid-tools-pattern (docs/
|
|
4
|
+
* Home for hybrid-tools-pattern (docs/engineering/hybrid-tools.md) tools that operate
|
|
5
5
|
* on the deal-progression / pipeline-health surface — composing CH +
|
|
6
6
|
* Salesforce + Postgres reads to deliver deterministic structured analysis
|
|
7
7
|
* an operator can act on. By rule, these tools are read-only; they emit
|
package/dist/tools/reporting.js
CHANGED
|
@@ -4,11 +4,11 @@ import { rangeSchema, salesforceLeadIdSchema, } from "./_schemas.js";
|
|
|
4
4
|
export function registerReportingTools(server, allowed) {
|
|
5
5
|
// loop_health retired 2026-05-06 — replaced by ClickHouse parameterized
|
|
6
6
|
// view analytics.loop_health(range_days). Query via the Cloud Remote MCP
|
|
7
|
-
// server (mcp.clickhouse.cloud/mcp). See docs/
|
|
7
|
+
// server (mcp.clickhouse.cloud/mcp). See docs/data/analytics-views.md.
|
|
8
8
|
// scoring_distribution retired 2026-05-06 — replaced by ClickHouse view
|
|
9
|
-
// analytics.scoring_distribution(range_days). See docs/
|
|
9
|
+
// analytics.scoring_distribution(range_days). See docs/data/analytics-views.md.
|
|
10
10
|
// routing_report retired 2026-05-06 — replaced by ClickHouse view
|
|
11
|
-
// analytics.routing_report(range_days). See docs/
|
|
11
|
+
// analytics.routing_report(range_days). See docs/data/analytics-views.md.
|
|
12
12
|
if (allowed.has("enrichment_coverage")) {
|
|
13
13
|
server.tool("enrichment_coverage", "Analyze lead enrichment coverage: enrichment rate, top industries, headcount distribution.", {
|
|
14
14
|
range: rangeSchema
|
package/dist/tools/sfdc-sync.js
CHANGED
|
@@ -71,7 +71,7 @@ export function registerSfdcSyncTools(server, allowed) {
|
|
|
71
71
|
" 4. Add a reason on each approve=yes row (audit log; required, ≥3 chars)",
|
|
72
72
|
" 5. Run `process_approvals_csv` with the edited CSV content",
|
|
73
73
|
"",
|
|
74
|
-
"See docs/csv-templates/pending-approvals.csv for the canonical shape.",
|
|
74
|
+
"See docs/operations/tools/csv-templates/pending-approvals.csv for the canonical shape.",
|
|
75
75
|
].join("\n"), {
|
|
76
76
|
limit: z
|
|
77
77
|
.number()
|
|
@@ -102,7 +102,7 @@ export function registerSfdcSyncTools(server, allowed) {
|
|
|
102
102
|
"the corrected CSV any time; already-approved accounts return 'not_in_review' and are",
|
|
103
103
|
"reported as failures (idempotent — no double-approval).",
|
|
104
104
|
"",
|
|
105
|
-
"See docs/csv-templates/pending-approvals.csv for the canonical shape.",
|
|
105
|
+
"See docs/operations/tools/csv-templates/pending-approvals.csv for the canonical shape.",
|
|
106
106
|
].join("\n"), {
|
|
107
107
|
csv: z
|
|
108
108
|
.string()
|
package/dist/tools/tal.d.ts
CHANGED
package/dist/tools/tal.js
CHANGED