@loopops/mcp-server 3.50.0 → 3.52.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/index.js +2 -0
- package/dist/tools/deal-prep.js +17 -0
- package/dist/tools/plan.d.ts +15 -0
- package/dist/tools/plan.js +23 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -19,6 +19,7 @@ import { registerPeopleMasterTools } from "./tools/people-master.js";
|
|
|
19
19
|
import { registerScoringTools } from "./tools/scoring.js";
|
|
20
20
|
import { registerCpqTools } from "./tools/cpq.js";
|
|
21
21
|
import { registerDealPrepTools } from "./tools/deal-prep.js";
|
|
22
|
+
import { registerPlanTools } from "./tools/plan.js";
|
|
22
23
|
import { registerSfdcSyncTools } from "./tools/sfdc-sync.js";
|
|
23
24
|
import { registerTalTools } from "./tools/tal.js";
|
|
24
25
|
import { parseSkillModesResponse } from "./skills/loader.js";
|
|
@@ -73,6 +74,7 @@ registerScoringTools(server, allowedSkills);
|
|
|
73
74
|
registerSfdcSyncTools(server, allowedSkills);
|
|
74
75
|
registerCpqTools(server, allowedSkills);
|
|
75
76
|
registerDealPrepTools(server, allowedSkills);
|
|
77
|
+
registerPlanTools(server, allowedSkills);
|
|
76
78
|
// Skills framework — fetch role-visible skills from the Loop API and
|
|
77
79
|
// register each as a server-provided MCP prompt. Surfaces in the
|
|
78
80
|
// client's `/` menu and bundles (system prompt + tool emphasis +
|
package/dist/tools/deal-prep.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
1
2
|
import { trpcQuery } from "../api-client.js";
|
|
2
3
|
import { safeTool } from "./_helpers.js";
|
|
3
4
|
/**
|
|
@@ -20,4 +21,20 @@ export function registerDealPrepTools(server, allowed) {
|
|
|
20
21
|
if (allowed.has("deal_prep_context")) {
|
|
21
22
|
server.tool("deal_prep_context", "Loads Loop's deal-prep playbook: pre-call / during / post-call workflow, MEDDPICC field map (Salesforce API names), progression rules (Not Started → Identified → Validated → Confirmed; score 0-3 per dimension), health bands, conversation patterns, and follow-up actions. Call this ONCE per deal-prep conversation before doing anything else. The deal_prep skill auto-loads this on entry.", {}, safeTool(async () => trpcQuery("mcp.dealPrepContext")));
|
|
22
23
|
}
|
|
24
|
+
if (allowed.has("opportunity_meddpicc")) {
|
|
25
|
+
server.tool("opportunity_meddpicc", "Read all 8 MEDDPICC dimensions + score + band + biggest-gap callout for an Opportunity. Loop-side read via the service account — guaranteed available even when salesforce-hosted MCP is reconnecting. Use this in the pre-call phase of /deal_prep. Look up by opportunityId / opportunityName / accountName (account name resolves to the most recently modified open opp). For WRITES, use salesforce-hosted updateSobjectRecord — per-user OAuth preserves LastModifiedById.", {
|
|
26
|
+
opportunityId: z
|
|
27
|
+
.string()
|
|
28
|
+
.regex(/^006/)
|
|
29
|
+
.optional()
|
|
30
|
+
.describe("SF Opportunity Id (006...). Provide one of: opportunityId / opportunityName / accountName."),
|
|
31
|
+
opportunityName: z.string().optional(),
|
|
32
|
+
accountName: z
|
|
33
|
+
.string()
|
|
34
|
+
.min(2)
|
|
35
|
+
.max(200)
|
|
36
|
+
.optional()
|
|
37
|
+
.describe("Customer account name (substring). Resolves to most recent open opp."),
|
|
38
|
+
}, safeTool(async (args) => trpcQuery("mcp.opportunityMeddpicc", args)));
|
|
39
|
+
}
|
|
23
40
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
/**
|
|
3
|
+
* Planning-chain context tools — surface for the `/plan_design` and
|
|
4
|
+
* `/plan_deploy` skills.
|
|
5
|
+
*
|
|
6
|
+
* Each skill bundles ONE loop-side context tool (loads the playbook)
|
|
7
|
+
* with existing planning-chain tools (capacity_report, list_scenarios,
|
|
8
|
+
* review_user_assignments, edit_quota, etc. — declared in the
|
|
9
|
+
* skill's tools_emphasized).
|
|
10
|
+
*
|
|
11
|
+
* `/plan_design` — ops + leadership; strategic capacity + scenario design
|
|
12
|
+
* `/plan_deploy` — manager + leadership + ops; review + edit + approve
|
|
13
|
+
* placement chain proposals scoped to caller's subtree
|
|
14
|
+
*/
|
|
15
|
+
export declare function registerPlanTools(server: McpServer, allowed: Set<string>): void;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { trpcQuery } from "../api-client.js";
|
|
2
|
+
import { safeTool } from "./_helpers.js";
|
|
3
|
+
/**
|
|
4
|
+
* Planning-chain context tools — surface for the `/plan_design` and
|
|
5
|
+
* `/plan_deploy` skills.
|
|
6
|
+
*
|
|
7
|
+
* Each skill bundles ONE loop-side context tool (loads the playbook)
|
|
8
|
+
* with existing planning-chain tools (capacity_report, list_scenarios,
|
|
9
|
+
* review_user_assignments, edit_quota, etc. — declared in the
|
|
10
|
+
* skill's tools_emphasized).
|
|
11
|
+
*
|
|
12
|
+
* `/plan_design` — ops + leadership; strategic capacity + scenario design
|
|
13
|
+
* `/plan_deploy` — manager + leadership + ops; review + edit + approve
|
|
14
|
+
* placement chain proposals scoped to caller's subtree
|
|
15
|
+
*/
|
|
16
|
+
export function registerPlanTools(server, allowed) {
|
|
17
|
+
if (allowed.has("plan_design_context")) {
|
|
18
|
+
server.tool("plan_design_context", "Loads Loop's plan-design playbook: workflow (initial_read → scenario_iteration → promote_and_open), design heuristics (capacity_vs_target, productivity_assumptions, hire_timing, segment_mix), scenario_promotion_criteria, conversation_patterns. Call ONCE per plan-design conversation before doing anything else. The /plan_design skill auto-loads this on entry.", {}, safeTool(async () => trpcQuery("mcp.planDesignContext")));
|
|
19
|
+
}
|
|
20
|
+
if (allowed.has("plan_deploy_context")) {
|
|
21
|
+
server.tool("plan_deploy_context", "Loads Loop's plan-deploy playbook: three review tracks (user_assignments, quotas, account_assignments), anomaly_checks per track (patch sizing imbalance, manager hierarchy violations, low-confidence picks, etc.), edit_reasons guidance, conversation_patterns, audit_responsibility, and handoff to the commit chain. Call ONCE per plan-deploy conversation before doing anything else. The /plan_deploy skill auto-loads this on entry.", {}, safeTool(async () => trpcQuery("mcp.planDeployContext")));
|
|
22
|
+
}
|
|
23
|
+
}
|