opedd-mcp 0.6.6 → 0.6.8
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 +4 -4
- package/dist/index.js +4 -1
- package/dist/telemetry.d.ts +2 -2
- package/dist/telemetry.js +13 -3
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<p align="center">
|
|
19
19
|
<a href="cursor://anysphere.cursor-deeplink/mcp/install?name=opedd&config=eyJjb21tYW5kIjoibnB4IC15IG9wZWRkLW1jcCJ9"><img src="https://img.shields.io/badge/Add%20to-Cursor-000?logo=cursor" alt="Add to Cursor"></a>
|
|
20
20
|
<a href="https://insiders.vscode.dev/redirect/mcp/install?name=opedd&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22opedd-mcp%22%5D%7D"><img src="https://img.shields.io/badge/Install%20in-VS%20Code-007ACC?logo=visualstudiocode" alt="Install in VS Code"></a>
|
|
21
|
-
<a href="https://opedd.com/for-ai-agents"><img src="https://img.shields.io/badge/Docs-opedd.com-111" alt="Docs"></a>
|
|
21
|
+
<a href="https://opedd.com/for-ai-agents?utm_source=github&utm_medium=readme&utm_campaign=mcp"><img src="https://img.shields.io/badge/Docs-opedd.com-111" alt="Docs"></a>
|
|
22
22
|
</p>
|
|
23
23
|
|
|
24
24
|
Lets AI assistants (Claude Desktop, Cursor, Windsurf, or any MCP-compatible host) discover, purchase, and verify content licenses autonomously — mid-conversation, without opening a browser. Every license is registered on-chain (Tempo blockchain) with cryptographic proof.
|
|
@@ -31,7 +31,7 @@ Lets AI assistants (Claude Desktop, Cursor, Windsurf, or any MCP-compatible host
|
|
|
31
31
|
npx opedd-mcp
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
Then add it to your MCP host (see [Claude Desktop / Cursor / Windsurf setup](#claude-desktop-setup) below). Discovery + verification tools work with no configuration; purchasing and content retrieval use optional API keys from [opedd.com](https://opedd.com).
|
|
34
|
+
Then add it to your MCP host (see [Claude Desktop / Cursor / Windsurf setup](#claude-desktop-setup) below). Discovery + verification tools work with no configuration; purchasing and content retrieval use optional API keys from [opedd.com](https://opedd.com?utm_source=github&utm_medium=readme&utm_campaign=mcp).
|
|
35
35
|
|
|
36
36
|
## Hosted endpoint — no install (mcp.opedd.com)
|
|
37
37
|
|
|
@@ -279,9 +279,9 @@ Opedd is the **licensed content delivery layer** for AI — not just a licensing
|
|
|
279
279
|
|
|
280
280
|
## Learn more
|
|
281
281
|
|
|
282
|
-
- [Opedd for AI Agents](https://opedd.com/for-ai-agents) — full documentation, code examples, endpoint reference
|
|
282
|
+
- [Opedd for AI Agents](https://opedd.com/for-ai-agents?utm_source=github&utm_medium=readme&utm_campaign=mcp) — full documentation, code examples, endpoint reference
|
|
283
283
|
- [API Docs](https://docs.opedd.com) — OpenAPI spec with agent endpoints
|
|
284
|
-
- [Opedd Registry](https://opedd.com/registry) — browse on-chain license proofs
|
|
284
|
+
- [Opedd Registry](https://opedd.com/registry?utm_source=github&utm_medium=readme&utm_campaign=mcp) — browse on-chain license proofs
|
|
285
285
|
|
|
286
286
|
## License
|
|
287
287
|
|
package/dist/index.js
CHANGED
|
@@ -640,7 +640,10 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
640
640
|
// dispatchTool) keeps unit tests, which call dispatchTool directly, silent.
|
|
641
641
|
const start = Date.now();
|
|
642
642
|
const result = await dispatchTool(request.params.name, (request.params.arguments ?? {}));
|
|
643
|
-
|
|
643
|
+
// channel:"stdio" lets the channel report separate local (npx) usage from
|
|
644
|
+
// hosted-gateway usage (channel:"gateway"); the Phase-2 hosted trigger
|
|
645
|
+
// counts only the latter.
|
|
646
|
+
captureToolCall(request.params.name, Date.now() - start, result.isError !== true, { channel: "stdio" });
|
|
644
647
|
return result;
|
|
645
648
|
});
|
|
646
649
|
// ─── Tool dispatcher (exported for unit tests) ────────────────────────────────
|
package/dist/telemetry.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export declare function isTelemetryEnabled(): boolean;
|
|
|
5
5
|
* PII, keys, or content by construction. Pure; exported so a test can assert
|
|
6
6
|
* the privacy invariant directly.
|
|
7
7
|
*/
|
|
8
|
-
export declare function toolCallProperties(tool: string, durationMs: number, ok: boolean): Record<string, string | number | boolean>;
|
|
8
|
+
export declare function toolCallProperties(tool: string, durationMs: number, ok: boolean, extra?: Record<string, string | number | boolean>): Record<string, string | number | boolean>;
|
|
9
9
|
export declare function initTelemetry(): void;
|
|
10
|
-
export declare function captureToolCall(tool: string, durationMs: number, ok: boolean): void;
|
|
10
|
+
export declare function captureToolCall(tool: string, durationMs: number, ok: boolean, extra?: Record<string, string | number | boolean>): void;
|
|
11
11
|
export declare function shutdownTelemetry(): Promise<void>;
|
package/dist/telemetry.js
CHANGED
|
@@ -36,8 +36,14 @@ export function isTelemetryEnabled() {
|
|
|
36
36
|
* PII, keys, or content by construction. Pure; exported so a test can assert
|
|
37
37
|
* the privacy invariant directly.
|
|
38
38
|
*/
|
|
39
|
-
export function toolCallProperties(tool, durationMs, ok) {
|
|
39
|
+
export function toolCallProperties(tool, durationMs, ok, extra) {
|
|
40
|
+
// Spread `extra` FIRST so it can never overwrite the privacy-critical /
|
|
41
|
+
// integrity fields below. Otherwise a future caller passing e.g.
|
|
42
|
+
// { tool: ... } or { ok: ... } could silently forge metrics or shadow the
|
|
43
|
+
// canonical fields — the "nothing sensitive by construction" guarantee
|
|
44
|
+
// must hold even against a coding mistake in a caller.
|
|
40
45
|
return {
|
|
46
|
+
...extra,
|
|
41
47
|
tool,
|
|
42
48
|
duration_ms: Math.round(durationMs),
|
|
43
49
|
ok,
|
|
@@ -63,14 +69,18 @@ export function initTelemetry() {
|
|
|
63
69
|
client = null;
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
|
-
export function captureToolCall(tool, durationMs, ok
|
|
72
|
+
export function captureToolCall(tool, durationMs, ok,
|
|
73
|
+
// Extra event properties (still no params/PII/keys by construction).
|
|
74
|
+
// The hosted gateway uses this to tag internal probes ({ internal: true })
|
|
75
|
+
// so channel metrics can be filtered to genuinely external callers.
|
|
76
|
+
extra) {
|
|
67
77
|
if (!client)
|
|
68
78
|
return;
|
|
69
79
|
try {
|
|
70
80
|
client.capture({
|
|
71
81
|
distinctId: sessionId,
|
|
72
82
|
event: "mcp_tool_call",
|
|
73
|
-
properties: toolCallProperties(tool, durationMs, ok),
|
|
83
|
+
properties: toolCallProperties(tool, durationMs, ok, extra),
|
|
74
84
|
});
|
|
75
85
|
}
|
|
76
86
|
catch {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opedd-mcp",
|
|
3
|
-
"version": "0.6.
|
|
4
|
-
"description": "Licensed, rights-cleared content for AI agents
|
|
3
|
+
"version": "0.6.8",
|
|
4
|
+
"description": "Licensed, rights-cleared content for AI agents \u2014 verifiable license keys, on-chain proof, and EU AI Act attestation. The MCP alternative to unlicensed scraping for RAG and AI search.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"mcpName": "com.opedd/opedd-mcp",
|
|
@@ -56,5 +56,8 @@
|
|
|
56
56
|
"files": [
|
|
57
57
|
"dist"
|
|
58
58
|
],
|
|
59
|
-
"types": "dist/index.d.ts"
|
|
59
|
+
"types": "dist/index.d.ts",
|
|
60
|
+
"overrides": {
|
|
61
|
+
"esbuild": "^0.28.1"
|
|
62
|
+
}
|
|
60
63
|
}
|