@opennous/mcp 0.54.0 → 0.55.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/server.js +12 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opennous/mcp",
3
- "version": "0.54.0",
3
+ "version": "0.55.0",
4
4
  "description": "Nous — the Context Graph for AI Agents.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
package/src/server.js CHANGED
@@ -456,6 +456,7 @@ export function createServer() {
456
456
  facts: z.boolean().optional().describe("search the FACTS corpus (durable atomic facts about accounts) instead of activity. Needs `question` — a cross-account semantic fact search, e.g. 'which accounts want off Clay'. return:'entities' = the best matching fact per account."),
457
457
  reporting: z.enum(["company", "role"]).optional().describe("Return the distilled REPORTING for a seat instead of activity: 'role' = the insights routed to a GTM role (deal-blockers/objections with account counts + relevant themes, reframed for that seat); 'company' = the whole-company founder lens. Routed server-side by the caller's role — a member only ever gets their own seat, an admin/founder can ask for 'company' or any role."),
458
458
  role: z.string().optional().describe("With reporting:'role', which seat to report for — account_executive | sdr | sales | customer_success | engineer | marketing | revops | founder. Defaults to the caller's own role(s) from whoami."),
459
+ attention: z.enum(["mine"]).optional().describe("Return the daily WORKLIST instead of activity: the engine-curated Studio surface — upcoming meetings, the follow-ups you owe, and the accounts to focus on (open attention flags) — scoped to the caller (a member sees only their owned book; an admin/founder sees the whole workspace). Powers the morning read."),
459
460
  }).describe("Corpus filter"),
460
461
  without: z.object({
461
462
  kind: z.enum(["event", "state"]).optional(),
@@ -495,6 +496,17 @@ export function createServer() {
495
496
  return { content: [{ type: "text", text: out.join("\n").trim() }] };
496
497
  }
497
498
 
499
+ // Worklist response (scope.attention='mine') — the daily Studio surface.
500
+ if (r.attention) {
501
+ const out = [`WORKLIST · ${r.scope === "member" ? "your book" : "whole workspace"}`, ""];
502
+ const mt = r.upcoming_meetings || [], fu = r.follow_ups || [], af = r.accounts_to_focus || [];
503
+ if (mt.length) { out.push("UPCOMING MEETINGS:"); for (const m of mt) out.push(` • ${m.account || "(unknown)"}${m.when ? ` — ${m.when}` : ""}`); out.push(""); }
504
+ if (fu.length) { out.push("FOLLOW UP ON:"); for (const i of fu) out.push(` • ${i.title}${i.account ? ` (${i.account})` : ""}${i.due ? ` — ${i.due}` : ""}`); out.push(""); }
505
+ if (af.length) { out.push("ACCOUNTS TO FOCUS ON:"); for (const f of af) out.push(` • ${f.account || "(account)"}${f.flag_type ? ` [${f.flag_type}]` : ""}${f.reason ? ` — ${f.reason}` : ""}`); }
506
+ if (!mt.length && !fu.length && !af.length) out.push("Nothing on your worklist right now — nothing scheduled, owed, or flagged. Run some ingest/backfill if this looks empty on a live workspace.");
507
+ return { content: [{ type: "text", text: out.join("\n").trim() }] };
508
+ }
509
+
498
510
  const head = `${r.matched} match${r.matched !== 1 ? "es" : ""}` +
499
511
  (r.sampled ? ` (showing ${r.returned})` : "") +
500
512
  (r.corpus === "facts" ? " · facts" : r.return === "entities" ? " · grouped by entity" : "");