uniqueness-mcp 0.3.0 → 0.4.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/index.mjs +17 -6
- package/package.json +1 -1
package/index.mjs
CHANGED
|
@@ -14,20 +14,31 @@ import { z } from "zod";
|
|
|
14
14
|
const BASE = process.env.UNIQUENESS_API_URL || "https://uniquenessengine.com";
|
|
15
15
|
const KEY = process.env.UNIQUENESS_API_KEY || "";
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
// Keep in step with mcp/package.json — cli/release-parity.test.ts asserts they match.
|
|
18
|
+
const server = new McpServer({ name: "uniqueness", version: "0.4.0" });
|
|
18
19
|
|
|
19
20
|
server.tool(
|
|
20
21
|
"get_connection_brief",
|
|
21
22
|
"Given a LinkedIn URL (or name + company, or email), return a fact-checked Connection Brief: " +
|
|
22
|
-
"verified personal + professional signal, each claim grounded in a source +
|
|
23
|
-
"identity-gated (returns needs_review rather than guessing)
|
|
24
|
-
"
|
|
23
|
+
"verified personal + professional signal, each claim grounded in a source (`evidence_quote` + " +
|
|
24
|
+
"`source_url`), identity-gated (returns needs_review rather than guessing). Each delivered brief " +
|
|
25
|
+
"carries a `usage` object (cache_status, credits_charged, credits_remaining) and a `capabilities` " +
|
|
26
|
+
"block; a refusal or 0-fact brief is free. The response is COMPACT by default (identity + " +
|
|
27
|
+
"top-ranked facts + capabilities) — pass detail:'full' for the complete brief; set detail " +
|
|
28
|
+
"explicitly. The removed fields outreach_angles / gift_hook / safe_to_use_in_outreach are declared " +
|
|
29
|
+
"in `capabilities`, never returned. Machine-readable contract: " +
|
|
30
|
+
"https://uniquenessengine.com/openapi.json (free sample: GET /api/examples/kitchen-sink). " +
|
|
31
|
+
"Use before personalized outreach or call prep. " +
|
|
32
|
+
"Support: support@uniquenessengine.com.",
|
|
25
33
|
{
|
|
26
34
|
linkedin_url: z.string().optional().describe("LinkedIn profile URL"),
|
|
27
35
|
name: z.string().optional().describe("Full name (use with company)"),
|
|
28
36
|
company: z.string().optional().describe("Company name (use with name)"),
|
|
29
37
|
email: z.string().optional().describe("Work email (optional disambiguator)"),
|
|
30
|
-
|
|
38
|
+
detail: z
|
|
39
|
+
.enum(["compact", "full"])
|
|
40
|
+
.optional()
|
|
41
|
+
.describe("Response shape — compact (default, rolling out) or full"),
|
|
31
42
|
},
|
|
32
43
|
async (args) => {
|
|
33
44
|
if (!KEY) {
|
|
@@ -44,7 +55,7 @@ server.tool(
|
|
|
44
55
|
if (args.name) body.name = args.name;
|
|
45
56
|
if (args.company) body.company = args.company;
|
|
46
57
|
if (args.email) body.email = args.email;
|
|
47
|
-
if (args.
|
|
58
|
+
if (args.detail) body.detail = args.detail;
|
|
48
59
|
|
|
49
60
|
// Async enrich+poll (mirrors cli/uniqueness.mjs `brief`). The sync /api/brief
|
|
50
61
|
// path returns {} to the client past the ~124s delivery cliff on fresh
|