@proof-holdings/mcp-server 1.0.0 → 1.1.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/LICENSE +1 -1
- package/README.md +223 -216
- package/dist/authBoundary.d.ts +182 -0
- package/dist/authBoundary.d.ts.map +1 -0
- package/dist/authBoundary.js +328 -0
- package/dist/authBoundary.js.map +1 -0
- package/dist/factory.d.ts +33 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +123 -0
- package/dist/factory.js.map +1 -0
- package/dist/http.d.ts +63 -3
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +183 -4
- package/dist/http.js.map +1 -1
- package/dist/remote.d.ts +111 -0
- package/dist/remote.d.ts.map +1 -0
- package/dist/remote.js +787 -0
- package/dist/remote.js.map +1 -0
- package/dist/server.js +11 -57
- package/dist/server.js.map +1 -1
- package/dist/tools/{projects.d.ts → accounts.d.ts} +1 -1
- package/dist/tools/accounts.d.ts.map +1 -0
- package/dist/tools/accounts.js +70 -0
- package/dist/tools/accounts.js.map +1 -0
- package/dist/tools/api-keys.d.ts.map +1 -1
- package/dist/tools/api-keys.js +14 -5
- package/dist/tools/api-keys.js.map +1 -1
- package/dist/tools/auth-flows.d.ts +4 -0
- package/dist/tools/auth-flows.d.ts.map +1 -0
- package/dist/tools/auth-flows.js +34 -0
- package/dist/tools/auth-flows.js.map +1 -0
- package/dist/tools/authorizations.d.ts +4 -0
- package/dist/tools/authorizations.d.ts.map +1 -0
- package/dist/tools/authorizations.js +111 -0
- package/dist/tools/authorizations.js.map +1 -0
- package/dist/tools/circles.d.ts +4 -0
- package/dist/tools/circles.d.ts.map +1 -0
- package/dist/tools/circles.js +215 -0
- package/dist/tools/circles.js.map +1 -0
- package/dist/tools/confirmations.d.ts +4 -0
- package/dist/tools/confirmations.d.ts.map +1 -0
- package/dist/tools/confirmations.js +86 -0
- package/dist/tools/confirmations.js.map +1 -0
- package/dist/tools/delegation-verify-outcomes.d.ts +23 -0
- package/dist/tools/delegation-verify-outcomes.d.ts.map +1 -0
- package/dist/tools/delegation-verify-outcomes.js +51 -0
- package/dist/tools/delegation-verify-outcomes.js.map +1 -0
- package/dist/tools/delegation-verify.d.ts +24 -0
- package/dist/tools/delegation-verify.d.ts.map +1 -0
- package/dist/tools/delegation-verify.js +192 -0
- package/dist/tools/delegation-verify.js.map +1 -0
- package/dist/tools/delegations.d.ts +4 -0
- package/dist/tools/delegations.d.ts.map +1 -0
- package/dist/tools/delegations.js +84 -0
- package/dist/tools/delegations.js.map +1 -0
- package/dist/tools/domains.d.ts.map +1 -1
- package/dist/tools/domains.js +1 -2
- package/dist/tools/domains.js.map +1 -1
- package/dist/tools/hitl-keys.d.ts +4 -0
- package/dist/tools/hitl-keys.d.ts.map +1 -0
- package/dist/tools/hitl-keys.js +52 -0
- package/dist/tools/hitl-keys.js.map +1 -0
- package/dist/tools/hitl.d.ts +4 -0
- package/dist/tools/hitl.d.ts.map +1 -0
- package/dist/tools/hitl.js +151 -0
- package/dist/tools/hitl.js.map +1 -0
- package/dist/tools/phones.js +1 -1
- package/dist/tools/phones.js.map +1 -1
- package/dist/tools/profiles.d.ts.map +1 -1
- package/dist/tools/profiles.js +73 -0
- package/dist/tools/profiles.js.map +1 -1
- package/dist/tools/proof-me.d.ts +4 -0
- package/dist/tools/proof-me.d.ts.map +1 -0
- package/dist/tools/proof-me.js +107 -0
- package/dist/tools/proof-me.js.map +1 -0
- package/dist/tools/proofs.d.ts.map +1 -1
- package/dist/tools/proofs.js +9 -6
- package/dist/tools/proofs.js.map +1 -1
- package/dist/tools/render-auth-link.d.ts +3 -0
- package/dist/tools/render-auth-link.d.ts.map +1 -0
- package/dist/tools/render-auth-link.js +30 -0
- package/dist/tools/render-auth-link.js.map +1 -0
- package/dist/tools/sessions.js +5 -5
- package/dist/tools/sessions.js.map +1 -1
- package/dist/tools/settings.d.ts.map +1 -1
- package/dist/tools/settings.js +69 -0
- package/dist/tools/settings.js.map +1 -1
- package/dist/tools/twofa.d.ts.map +1 -1
- package/dist/tools/twofa.js +16 -3
- package/dist/tools/twofa.js.map +1 -1
- package/dist/tools/user-requests.d.ts.map +1 -1
- package/dist/tools/user-requests.js +1 -2
- package/dist/tools/user-requests.js.map +1 -1
- package/dist/tools/verification-requests.d.ts.map +1 -1
- package/dist/tools/verification-requests.js +40 -13
- package/dist/tools/verification-requests.js.map +1 -1
- package/dist/tools/verifications.d.ts.map +1 -1
- package/dist/tools/verifications.js +59 -12
- package/dist/tools/verifications.js.map +1 -1
- package/dist/types.d.ts +18 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +114 -5
- package/dist/types.js.map +1 -1
- package/package.json +11 -5
- package/dist/tools/projects.d.ts.map +0 -1
- package/dist/tools/projects.js +0 -159
- package/dist/tools/projects.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@proof-holdings/mcp-server",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"mcpName": "holdings.proof/mcp-server",
|
|
5
|
+
"description": "MCP server for the proof.holdings API — 176 tools for identity verification, proofs, and asset management",
|
|
5
6
|
"type": "module",
|
|
6
7
|
"license": "MIT",
|
|
7
8
|
"author": "proof.holdings <hello@proof.holdings> (https://proof.holdings)",
|
|
8
9
|
"homepage": "https://proof.holdings",
|
|
9
10
|
"repository": {
|
|
10
11
|
"type": "git",
|
|
11
|
-
"url": "https://
|
|
12
|
-
"directory": "mcp"
|
|
12
|
+
"url": "https://github.com/ProofHoldings/mcp-server.git"
|
|
13
13
|
},
|
|
14
14
|
"bugs": {
|
|
15
15
|
"email": "hello@proof.holdings",
|
|
@@ -39,10 +39,13 @@
|
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
42
|
+
"@proof-holdings/delegation-verifier": "^0.1.0",
|
|
43
|
+
"qrcode": "^1.5.4",
|
|
42
44
|
"zod": "^3.24.0"
|
|
43
45
|
},
|
|
44
46
|
"devDependencies": {
|
|
45
47
|
"@types/node": "^20.11.0",
|
|
48
|
+
"@types/qrcode": "^1.5.6",
|
|
46
49
|
"typescript": "^5.5.0",
|
|
47
50
|
"vitest": "^3.0.0"
|
|
48
51
|
},
|
|
@@ -53,5 +56,8 @@
|
|
|
53
56
|
"dist",
|
|
54
57
|
"README.md",
|
|
55
58
|
"LICENSE"
|
|
56
|
-
]
|
|
59
|
+
],
|
|
60
|
+
"publishConfig": {
|
|
61
|
+
"access": "public"
|
|
62
|
+
}
|
|
57
63
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,QA6LlE"}
|
package/dist/tools/projects.js
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { jsonResult, errorResult } from '../types.js';
|
|
3
|
-
import { ApiError } from '../http.js';
|
|
4
|
-
export function registerTools(tool, http) {
|
|
5
|
-
tool('list_projects', 'List all projects for the authenticated account. Projects enable multi-brand support with separate branding and templates.', {}, async () => {
|
|
6
|
-
try {
|
|
7
|
-
const result = await http.get('/api/v1/me/projects');
|
|
8
|
-
return jsonResult(result);
|
|
9
|
-
}
|
|
10
|
-
catch (e) {
|
|
11
|
-
if (e instanceof ApiError)
|
|
12
|
-
return errorResult(`${e.code}: ${e.message}`);
|
|
13
|
-
throw e;
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
tool('create_project', 'Create a new project with optional branding configuration (business name, logo, colors, support email).', {
|
|
17
|
-
name: z.string().min(1).max(100).describe('Project name'),
|
|
18
|
-
description: z.string().max(500).optional().describe('Project description'),
|
|
19
|
-
branding: z.object({
|
|
20
|
-
business_name: z.string().max(100).optional().describe('Business name for this project'),
|
|
21
|
-
logo_url: z.string().url().refine((u) => u.startsWith('https://'), { message: 'Logo URL must use HTTPS' }).optional().describe('HTTPS URL to project logo'),
|
|
22
|
-
primary_color: z.string().regex(/^#[0-9A-Fa-f]{6}$/).optional().describe('Primary brand color (hex, e.g. #FF5733)'),
|
|
23
|
-
support_email: z.string().email().optional().describe('Support email for this project'),
|
|
24
|
-
}).optional().describe('Project branding configuration'),
|
|
25
|
-
}, async (args) => {
|
|
26
|
-
try {
|
|
27
|
-
const result = await http.post('/api/v1/me/projects', args);
|
|
28
|
-
return jsonResult(result);
|
|
29
|
-
}
|
|
30
|
-
catch (e) {
|
|
31
|
-
if (e instanceof ApiError)
|
|
32
|
-
return errorResult(`${e.code}: ${e.message}`);
|
|
33
|
-
throw e;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
tool('get_project', 'Get a project by ID. Returns project details including name, description, branding, and callback URLs.', {
|
|
37
|
-
id: z.string().describe('Project ID'),
|
|
38
|
-
}, async ({ id }) => {
|
|
39
|
-
try {
|
|
40
|
-
const result = await http.get(`/api/v1/me/projects/${encodeURIComponent(id)}`);
|
|
41
|
-
return jsonResult(result);
|
|
42
|
-
}
|
|
43
|
-
catch (e) {
|
|
44
|
-
if (e instanceof ApiError)
|
|
45
|
-
return errorResult(`${e.code}: ${e.message}`);
|
|
46
|
-
throw e;
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
tool('update_project', 'Update a project. Supports changing name, description, branding, and callback URLs.', {
|
|
50
|
-
id: z.string().describe('Project ID'),
|
|
51
|
-
name: z.string().min(1).max(100).optional().describe('Project name'),
|
|
52
|
-
description: z.string().max(500).optional().describe('Project description'),
|
|
53
|
-
branding: z.object({
|
|
54
|
-
business_name: z.string().max(100).optional().describe('Business name'),
|
|
55
|
-
logo_url: z.string().url().refine((u) => u.startsWith('https://'), { message: 'Logo URL must use HTTPS' }).optional().describe('HTTPS URL to project logo'),
|
|
56
|
-
primary_color: z.string().regex(/^#[0-9A-Fa-f]{6}$/).optional().describe('Primary brand color (hex)'),
|
|
57
|
-
support_email: z.string().email().optional().describe('Support email'),
|
|
58
|
-
}).optional().describe('Branding configuration'),
|
|
59
|
-
callbacks: z.object({
|
|
60
|
-
success_url: z.string().url().refine((u) => u.startsWith('https://'), { message: 'Callback URL must use HTTPS' }).optional().describe('Success callback URL'),
|
|
61
|
-
failure_url: z.string().url().refine((u) => u.startsWith('https://'), { message: 'Callback URL must use HTTPS' }).optional().describe('Failure callback URL'),
|
|
62
|
-
cancel_url: z.string().url().refine((u) => u.startsWith('https://'), { message: 'Callback URL must use HTTPS' }).optional().describe('Cancel callback URL'),
|
|
63
|
-
}).optional().describe('Callback URLs'),
|
|
64
|
-
}, async ({ id, ...body }) => {
|
|
65
|
-
try {
|
|
66
|
-
const result = await http.put(`/api/v1/me/projects/${encodeURIComponent(id)}`, body);
|
|
67
|
-
return jsonResult(result);
|
|
68
|
-
}
|
|
69
|
-
catch (e) {
|
|
70
|
-
if (e instanceof ApiError)
|
|
71
|
-
return errorResult(`${e.code}: ${e.message}`);
|
|
72
|
-
throw e;
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
tool('delete_project', 'Delete a project by ID. This removes the project and all its custom templates.', {
|
|
76
|
-
id: z.string().describe('Project ID'),
|
|
77
|
-
}, async ({ id }) => {
|
|
78
|
-
try {
|
|
79
|
-
const result = await http.del(`/api/v1/me/projects/${encodeURIComponent(id)}`);
|
|
80
|
-
return jsonResult(result);
|
|
81
|
-
}
|
|
82
|
-
catch (e) {
|
|
83
|
-
if (e instanceof ApiError)
|
|
84
|
-
return errorResult(`${e.code}: ${e.message}`);
|
|
85
|
-
throw e;
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
tool('list_project_templates', 'List all custom templates for a project. Returns templates organized by channel and message type.', {
|
|
89
|
-
id: z.string().describe('Project ID'),
|
|
90
|
-
}, async ({ id }) => {
|
|
91
|
-
try {
|
|
92
|
-
const result = await http.get(`/api/v1/me/projects/${encodeURIComponent(id)}/templates`);
|
|
93
|
-
return jsonResult(result);
|
|
94
|
-
}
|
|
95
|
-
catch (e) {
|
|
96
|
-
if (e instanceof ApiError)
|
|
97
|
-
return errorResult(`${e.code}: ${e.message}`);
|
|
98
|
-
throw e;
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
tool('update_project_template', 'Create or update a custom template for a specific project, channel, and message type.', {
|
|
102
|
-
id: z.string().describe('Project ID'),
|
|
103
|
-
channel: z.enum(['telegram', 'whatsapp', 'sms', 'email']).describe('Message channel'),
|
|
104
|
-
type: z.string().describe('Message type (e.g. verification_request, login_request)'),
|
|
105
|
-
subject: z.string().max(200).optional().describe('Email subject line (email channel only)'),
|
|
106
|
-
body: z.string().min(1).max(2000).describe('Template body text with variable placeholders'),
|
|
107
|
-
button_text: z.string().max(50).optional().describe('Button text (email channel only)'),
|
|
108
|
-
button_url_template: z.string().max(500).optional().describe('Button URL template with placeholders'),
|
|
109
|
-
is_active: z.boolean().optional().describe('Whether the template is active'),
|
|
110
|
-
}, async ({ id, channel, type, ...body }) => {
|
|
111
|
-
try {
|
|
112
|
-
const result = await http.put(`/api/v1/me/projects/${encodeURIComponent(id)}/templates/${encodeURIComponent(channel)}/${encodeURIComponent(type)}`, body);
|
|
113
|
-
return jsonResult(result);
|
|
114
|
-
}
|
|
115
|
-
catch (e) {
|
|
116
|
-
if (e instanceof ApiError)
|
|
117
|
-
return errorResult(`${e.code}: ${e.message}`);
|
|
118
|
-
throw e;
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
tool('delete_project_template', 'Delete a custom project template, reverting to the default template for that channel and message type.', {
|
|
122
|
-
id: z.string().describe('Project ID'),
|
|
123
|
-
channel: z.enum(['telegram', 'whatsapp', 'sms', 'email']).describe('Message channel'),
|
|
124
|
-
type: z.string().describe('Message type (e.g. verification_request, login_request)'),
|
|
125
|
-
}, async ({ id, channel, type }) => {
|
|
126
|
-
try {
|
|
127
|
-
const result = await http.del(`/api/v1/me/projects/${encodeURIComponent(id)}/templates/${encodeURIComponent(channel)}/${encodeURIComponent(type)}`);
|
|
128
|
-
return jsonResult(result);
|
|
129
|
-
}
|
|
130
|
-
catch (e) {
|
|
131
|
-
if (e instanceof ApiError)
|
|
132
|
-
return errorResult(`${e.code}: ${e.message}`);
|
|
133
|
-
throw e;
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
tool('preview_project_template', 'Preview a project template with sample data before saving. Shows how the message will look with placeholder variables filled in.', {
|
|
137
|
-
id: z.string().describe('Project ID'),
|
|
138
|
-
channel: z.enum(['telegram', 'whatsapp', 'sms', 'email']).describe('Message channel'),
|
|
139
|
-
message_type: z.enum([
|
|
140
|
-
'verification_request', 'verification_success', 'verification_expired',
|
|
141
|
-
'login_request', 'login_success', '2fa_request', '2fa_success',
|
|
142
|
-
]).describe('Message type'),
|
|
143
|
-
subject: z.string().max(200).optional().describe('Email subject line'),
|
|
144
|
-
body: z.string().min(1).max(2000).describe('Template body text'),
|
|
145
|
-
button_text: z.string().max(50).optional().describe('Button text'),
|
|
146
|
-
button_url_template: z.string().max(500).optional().describe('Button URL template'),
|
|
147
|
-
}, async ({ id, ...body }) => {
|
|
148
|
-
try {
|
|
149
|
-
const result = await http.post(`/api/v1/me/projects/${encodeURIComponent(id)}/templates/preview`, body);
|
|
150
|
-
return jsonResult(result);
|
|
151
|
-
}
|
|
152
|
-
catch (e) {
|
|
153
|
-
if (e instanceof ApiError)
|
|
154
|
-
return errorResult(`${e.code}: ${e.message}`);
|
|
155
|
-
throw e;
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
//# sourceMappingURL=projects.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"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"}
|