uniqueness-mcp 0.7.2 → 0.8.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/README.md CHANGED
@@ -39,6 +39,7 @@ Hosted and stdio both expose:
39
39
  - `get_personal_context` (`get_connection_brief`)
40
40
  - `resume_personal_context` (`resume_connection_brief`)
41
41
  - `get_billing_status`
42
+ - `request_higher_limits`
42
43
  - `preflight_personal_contexts` (`preflight_connection_briefs`)
43
44
  - `get_connection_brief_job`
44
45
  - `batch_connection_briefs`
@@ -55,4 +56,28 @@ Stdio also exposes `begin_programmatic_signup` and `complete_programmatic_signup
55
56
 
56
57
  MCP has no purchase, payment-method, auto-recharge, or subscription tools. On `402 payment_required`, present checkout URLs only after explicit human consent.
57
58
 
59
+ ## Usage limits
60
+
61
+ Exact current limits are shown on the account page, in `GET /api/account` (`usage_limits`), in `uniqueness account` and in the MCP `get_billing_status` tool.
62
+
63
+ **Public ladder**
64
+ - free: 25 personal contexts per 24h, max batch 25
65
+ - tier_1: 250 personal contexts per 24h, max batch 50
66
+ - tier_2: 1,000 personal contexts per 24h, max batch 100
67
+ - tier_3: 5,000 personal contexts per 24h, max batch 100
68
+ - unlimited: by request, max batch 100
69
+
70
+ **Automatic promotion:**
71
+ - Any real credit pack, subscription or auto-recharge → tier_1.
72
+ - 250 lifetime paid credits → tier_2.
73
+ - 1,000 → tier_3.
74
+ - Intro offers and 5-packs don't count.
75
+ - Limits only go up, never down.
76
+ - Accounts with custom limits we've set don't change automatically.
77
+
78
+ **Window:** 24 hours starting from your first counted personal context. It's not midnight and not rolling. Cache re-serves don't count.
79
+
80
+ How to request more: the account page button, `POST /api/account/usage-limits/request`, `uniqueness limits request`, or the MCP `request_higher_limits` tool.
81
+ A 429 `usage_cap_exceeded` means a pace limit, not credits; honor `Retry-After`.
82
+
58
83
  [MCP quickstart](https://uniquenessengine.com/documentation/mcp/quickstart) · support@uniquenessengine.com
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.7.2";
5
+ export const MCP_SERVER_VERSION = "0.8.0";
6
6
  export const MCP_TOOL_ALIASES = {
7
7
  get_personal_context: ["get_connection_brief"],
8
8
  resume_personal_context: ["resume_connection_brief"],
@@ -14,6 +14,7 @@ const CORE_TOOL_NAMES = [
14
14
  "resume_personal_context",
15
15
  "resume_connection_brief",
16
16
  "get_billing_status",
17
+ "request_higher_limits",
17
18
  "preflight_personal_contexts",
18
19
  "preflight_connection_briefs",
19
20
  "get_connection_brief_job",
@@ -96,7 +97,7 @@ const batchOptionsSchema = z
96
97
  include_sensitive_topics: z
97
98
  .boolean()
98
99
  .optional()
99
- .describe("Default false: withhold family, marital status, grief, trauma, financial distress, and other labeled sensitive topics. Set true to include them."),
100
+ .describe("Sensitive topics are always returned and labeled. This flag does not hide them."),
100
101
  store_raw_quotes: z.boolean().optional(),
101
102
  include_outreach_angles: z.boolean().optional(),
102
103
  })
@@ -313,7 +314,7 @@ export function createMcpServer(context) {
313
314
  registerResume("resume_personal_context", "Verify increased spendable credit, then replay the original request with its idempotency key.");
314
315
  registerResume(MCP_TOOL_ALIASES.resume_personal_context[0], "Deprecated alias for resume_personal_context.");
315
316
  server.registerTool("get_billing_status", {
316
- description: "Read spendable balance and auto-recharge state.",
317
+ description: "Read spendable balance, usage limits (tier, daily limit, used in window, max batch) and auto-recharge state.",
317
318
  inputSchema: {},
318
319
  annotations: { readOnlyHint: true },
319
320
  }, async () => {
@@ -330,6 +331,20 @@ export function createMcpServer(context) {
330
331
  : { error: recharge.body.error || "unavailable" },
331
332
  }, balance.status !== 200);
332
333
  });
334
+ server.registerTool("request_higher_limits", {
335
+ description: "Request an increase to your daily account usage limits.",
336
+ inputSchema: {
337
+ reason: z.string().max(1000).optional(),
338
+ desired_daily_limit: z.number().int().min(1).max(100000).optional(),
339
+ },
340
+ }, async (args) => {
341
+ if (!requireKey())
342
+ return authenticationRequired();
343
+ const response = await api("/api/account/usage-limits/request", {
344
+ body: args,
345
+ });
346
+ return json(response.body, response.status >= 400);
347
+ });
333
348
  const registerPreflight = (name, description) => server.registerTool(name, {
334
349
  description,
335
350
  inputSchema: { profiles: z.array(profileSchema).min(1).max(100) },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uniqueness-mcp",
3
- "version": "0.7.2",
3
+ "version": "0.8.0",
4
4
  "description": "Local stdio fallback for the hosted Uniqueness Engine MCP server.",
5
5
  "type": "module",
6
6
  "bin": {