uniqueness-mcp 0.8.0 → 0.8.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/README.md CHANGED
@@ -8,7 +8,7 @@ Connect remote-capable clients to:
8
8
 
9
9
  `https://uniquenessengine.com/mcp`
10
10
 
11
- Send `Authorization: Bearer uq_live_...` on every request. Hosted tool-catalog fixes arrive without reinstalling this package.
11
+ Send `Authorization: Bearer uq_live_...` on every request. Hosted tool-catalog fixes arrive without reinstalling this package. `uniqueness update` updates the CLI only, not this package. There is no rotate-key tool.
12
12
 
13
13
  Do not pin an old version. `uniqueness-mcp@0.1.1` and `@0.6.0` expose a stale catalog. Use `@latest` or the hosted endpoint.
14
14
 
@@ -36,7 +36,7 @@ Requires Node 18+. After changing the pin, start a new client session so the too
36
36
 
37
37
  Hosted and stdio both expose:
38
38
 
39
- - `get_personal_context` (`get_connection_brief`)
39
+ - `get_personal_context` (`get_connection_brief`) — optional `refresh:true` to force a fresh collection. Omit for ordinary repeat reads. Batch tools do not accept refresh.
40
40
  - `resume_personal_context` (`resume_connection_brief`)
41
41
  - `get_billing_status`
42
42
  - `request_higher_limits`
package/dist/server.js CHANGED
@@ -2,7 +2,7 @@ import { randomUUID } from "node:crypto";
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
  import { z } from "zod";
4
4
  export const MCP_SERVER_NAME = "uniqueness";
5
- export const MCP_SERVER_VERSION = "0.8.0";
5
+ export const MCP_SERVER_VERSION = "0.8.2";
6
6
  export const MCP_TOOL_ALIASES = {
7
7
  get_personal_context: ["get_connection_brief"],
8
8
  resume_personal_context: ["resume_connection_brief"],
@@ -108,12 +108,18 @@ const briefShape = {
108
108
  company: z.string().optional().describe("Company name (use with name)"),
109
109
  email: z.string().optional().describe("Work email (optional disambiguator)"),
110
110
  detail: detailSchema.describe('Response shape. Defaults to "compact"; use "full" for provenance sub-scores.'),
111
+ refresh: z
112
+ .boolean()
113
+ .optional()
114
+ .describe("Set true only when the user asks to rerun, refresh, run again, look again, re-enrich, or check whether new UE changes are working. Ordinary repeat reads must omit this. Do not resubmit while polling an existing job."),
111
115
  };
112
116
  function cleanBriefArgs(args) {
113
117
  const body = {};
114
118
  for (const key of ["linkedin_url", "name", "company", "email", "detail"])
115
119
  if (args[key])
116
120
  body[key] = args[key];
121
+ if (typeof args.refresh === "boolean")
122
+ body.refresh = args.refresh;
117
123
  if (!body.detail)
118
124
  body.detail = "compact";
119
125
  return body;
@@ -285,7 +291,12 @@ export function createMcpServer(context) {
285
291
  });
286
292
  };
287
293
  const registerBrief = (name, description) => server.registerTool(name, { description, inputSchema: briefShape }, async (args) => submitBrief(args));
288
- registerBrief("get_personal_context", "Submit one full-quality written enrichment. Returns an inline result or a job_id for get_connection_brief_job.");
294
+ registerBrief("get_personal_context", "Submit one full-quality written enrichment. Returns an inline result or a job_id for get_connection_brief_job. " +
295
+ "Use refresh=true only when the user says rerun, refresh, run again, look again, re-enrich, or asks whether new UE changes are working. " +
296
+ "Do not use refresh for ordinary repeat reads. Do not resubmit while polling an existing job. " +
297
+ "A normal repeat lookup is not proof that a fresh enrichment occurred. " +
298
+ "Only claim a rerun happened when there is a new job, usage.refresh_executed=true, or a new generated timestamp/source inventory. " +
299
+ "cache_status=hit means this request served an existing result; cache_status=miss means this request ran collection.");
289
300
  registerBrief(MCP_TOOL_ALIASES.get_personal_context[0], "Deprecated alias for get_personal_context.");
290
301
  const resumeShape = {
291
302
  ...briefShape,
@@ -311,7 +322,7 @@ export function createMcpServer(context) {
311
322
  });
312
323
  return submitBrief(args, args.idempotency_key);
313
324
  });
314
- registerResume("resume_personal_context", "Verify increased spendable credit, then replay the original request with its idempotency key.");
325
+ registerResume("resume_personal_context", "Verify increased spendable credit, then replay the original request with its idempotency key. Pass the same refresh value as the 402 request — a refresh 402 resumed without refresh:true is a 409.");
315
326
  registerResume(MCP_TOOL_ALIASES.resume_personal_context[0], "Deprecated alias for resume_personal_context.");
316
327
  server.registerTool("get_billing_status", {
317
328
  description: "Read spendable balance, usage limits (tier, daily limit, used in window, max batch) and auto-recharge state.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uniqueness-mcp",
3
- "version": "0.8.0",
3
+ "version": "0.8.2",
4
4
  "description": "Local stdio fallback for the hosted Uniqueness Engine MCP server.",
5
5
  "type": "module",
6
6
  "bin": {