@raytio/mcp-server 10.0.0 → 10.2.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/dist/authorization.d.ts.map +1 -1
- package/dist/authorization.js +4 -0
- package/dist/authorization.js.map +1 -1
- package/dist/tools/_shared/side-effect.d.ts +25 -2
- package/dist/tools/_shared/side-effect.d.ts.map +1 -1
- package/dist/tools/_shared/side-effect.js +29 -4
- package/dist/tools/_shared/side-effect.js.map +1 -1
- package/dist/tools/bkm/bkm-adapter-configuration-update.d.ts +17 -0
- package/dist/tools/bkm/bkm-adapter-configuration-update.d.ts.map +1 -0
- package/dist/tools/bkm/bkm-adapter-configuration-update.js +79 -0
- package/dist/tools/bkm/bkm-adapter-configuration-update.js.map +1 -0
- package/dist/tools/bkm/bkm-availability-search-start.d.ts +20 -0
- package/dist/tools/bkm/bkm-availability-search-start.d.ts.map +1 -0
- package/dist/tools/bkm/bkm-availability-search-start.js +110 -0
- package/dist/tools/bkm/bkm-availability-search-start.js.map +1 -0
- package/dist/tools/bkm/bkm-provider-item-mapping-create.d.ts +15 -0
- package/dist/tools/bkm/bkm-provider-item-mapping-create.d.ts.map +1 -0
- package/dist/tools/bkm/bkm-provider-item-mapping-create.js +62 -0
- package/dist/tools/bkm/bkm-provider-item-mapping-create.js.map +1 -0
- package/dist/tools/bkm/generated-reads.d.ts +5 -0
- package/dist/tools/bkm/generated-reads.d.ts.map +1 -0
- package/dist/tools/bkm/generated-reads.js +33 -0
- package/dist/tools/bkm/generated-reads.js.map +1 -0
- package/dist/tools/bkm/index.d.ts +5 -0
- package/dist/tools/bkm/index.d.ts.map +1 -0
- package/dist/tools/bkm/index.js +13 -0
- package/dist/tools/bkm/index.js.map +1 -0
- package/dist/tools/dcm/dcm-device-command-dispatch.d.ts +28 -0
- package/dist/tools/dcm/dcm-device-command-dispatch.d.ts.map +1 -0
- package/dist/tools/dcm/dcm-device-command-dispatch.js +96 -0
- package/dist/tools/dcm/dcm-device-command-dispatch.js.map +1 -0
- package/dist/tools/dcm/dcm-device-register.d.ts +22 -0
- package/dist/tools/dcm/dcm-device-register.d.ts.map +1 -0
- package/dist/tools/dcm/dcm-device-register.js +86 -0
- package/dist/tools/dcm/dcm-device-register.js.map +1 -0
- package/dist/tools/dcm/dcm-device-slot-configure.d.ts +13 -0
- package/dist/tools/dcm/dcm-device-slot-configure.d.ts.map +1 -0
- package/dist/tools/dcm/dcm-device-slot-configure.js +68 -0
- package/dist/tools/dcm/dcm-device-slot-configure.js.map +1 -0
- package/dist/tools/dcm/dcm-device-update.d.ts +13 -0
- package/dist/tools/dcm/dcm-device-update.d.ts.map +1 -0
- package/dist/tools/dcm/dcm-device-update.js +55 -0
- package/dist/tools/dcm/dcm-device-update.js.map +1 -0
- package/dist/tools/dcm/generated-reads.d.ts +5 -0
- package/dist/tools/dcm/generated-reads.d.ts.map +1 -0
- package/dist/tools/dcm/generated-reads.js +30 -0
- package/dist/tools/dcm/generated-reads.js.map +1 -0
- package/dist/tools/dcm/index.d.ts +5 -0
- package/dist/tools/dcm/index.d.ts.map +1 -0
- package/dist/tools/dcm/index.js +15 -0
- package/dist/tools/dcm/index.js.map +1 -0
- package/dist/tools/domains.d.ts.map +1 -1
- package/dist/tools/domains.js +36 -0
- package/dist/tools/domains.js.map +1 -1
- package/dist/tools/ixn/generated-reads.d.ts +5 -0
- package/dist/tools/ixn/generated-reads.d.ts.map +1 -0
- package/dist/tools/ixn/generated-reads.js +29 -0
- package/dist/tools/ixn/generated-reads.js.map +1 -0
- package/dist/tools/ixn/index.d.ts +5 -0
- package/dist/tools/ixn/index.d.ts.map +1 -0
- package/dist/tools/ixn/index.js +8 -0
- package/dist/tools/ixn/index.js.map +1 -0
- package/dist/tools/ixn/ixn-conversation-start.d.ts +22 -0
- package/dist/tools/ixn/ixn-conversation-start.d.ts.map +1 -0
- package/dist/tools/ixn/ixn-conversation-start.js +98 -0
- package/dist/tools/ixn/ixn-conversation-start.js.map +1 -0
- package/dist/tools/ixn/ixn-message-send.d.ts +28 -0
- package/dist/tools/ixn/ixn-message-send.d.ts.map +1 -0
- package/dist/tools/ixn/ixn-message-send.js +92 -0
- package/dist/tools/ixn/ixn-message-send.js.map +1 -0
- package/dist/tools/role-mapping.d.ts.map +1 -1
- package/dist/tools/role-mapping.js +24 -0
- package/dist/tools/role-mapping.js.map +1 -1
- package/dist/tools/xrm/generated-reads.d.ts +5 -0
- package/dist/tools/xrm/generated-reads.d.ts.map +1 -0
- package/dist/tools/xrm/generated-reads.js +37 -0
- package/dist/tools/xrm/generated-reads.js.map +1 -0
- package/dist/tools/xrm/index.d.ts +5 -0
- package/dist/tools/xrm/index.d.ts.map +1 -0
- package/dist/tools/xrm/index.js +13 -0
- package/dist/tools/xrm/index.js.map +1 -0
- package/dist/tools/xrm/xrm-inbound-email-rule-create.d.ts +21 -0
- package/dist/tools/xrm/xrm-inbound-email-rule-create.d.ts.map +1 -0
- package/dist/tools/xrm/xrm-inbound-email-rule-create.js +85 -0
- package/dist/tools/xrm/xrm-inbound-email-rule-create.js.map +1 -0
- package/dist/tools/xrm/xrm-merchant-create.d.ts +22 -0
- package/dist/tools/xrm/xrm-merchant-create.d.ts.map +1 -0
- package/dist/tools/xrm/xrm-merchant-create.js +85 -0
- package/dist/tools/xrm/xrm-merchant-create.js.map +1 -0
- package/dist/tools/xrm/xrm-merchant-update.d.ts +14 -0
- package/dist/tools/xrm/xrm-merchant-update.d.ts.map +1 -0
- package/dist/tools/xrm/xrm-merchant-update.js +61 -0
- package/dist/tools/xrm/xrm-merchant-update.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { API_ERROR, errorResponse, successResponse } from '../types.js';
|
|
3
|
+
import { cap } from '../../capabilities/tool-capability.js';
|
|
4
|
+
import { confirmFlagSchema, unenforcedIdempotencyKeySchema, writeHeadersWithIdempotency, } from '../_shared/side-effect.js';
|
|
5
|
+
/**
|
|
6
|
+
* Provisioning semantic tool: create a new marketplace merchant
|
|
7
|
+
* (`xrm_merchants`) linked to an existing PRM party. Creating a
|
|
8
|
+
* merchant makes it discoverable to buyers and causes downstream
|
|
9
|
+
* provisioning (search indexing, listings), so the tool requires:
|
|
10
|
+
*
|
|
11
|
+
* - `confirm: true` to prevent accidental invocation;
|
|
12
|
+
* - a `party_id` (natural key — the merchant's owning PRM party).
|
|
13
|
+
* (party_id, tenant_id) is unique, so a retry fails with a
|
|
14
|
+
* duplicate-key error rather than provisioning a duplicate.
|
|
15
|
+
*
|
|
16
|
+
* `merchant_approval_status_code` is deliberately not an input:
|
|
17
|
+
* approving a merchant is a separate decision from creating one.
|
|
18
|
+
*
|
|
19
|
+
* Provider credentials (`xrm_merchant_authentication_configuration_details`
|
|
20
|
+
* and `xrm_merchant_payment_processor_credentials`) are EXCLUDED from
|
|
21
|
+
* the MCP surface by the credentials guardrail and are never written
|
|
22
|
+
* or returned by this tool.
|
|
23
|
+
*/
|
|
24
|
+
export const xrmMerchantCreateTool = {
|
|
25
|
+
name: 'xrm_merchant_create',
|
|
26
|
+
description: 'Provision a new marketplace merchant (xrm_merchants). Requires confirm=true and a ' +
|
|
27
|
+
'party_id linking the merchant to its owning PRM party. Provider credentials are ' +
|
|
28
|
+
'never written through this tool. One merchant per party: a retry for the same party ' +
|
|
29
|
+
'fails with a duplicate-key error instead of creating a second merchant.',
|
|
30
|
+
inputSchema: z.object({
|
|
31
|
+
party_id: z
|
|
32
|
+
.string()
|
|
33
|
+
.min(1)
|
|
34
|
+
.describe('UUID of the prm_parties row this merchant is owned by. One merchant per party.'),
|
|
35
|
+
merchant_name: z.string().min(1).max(256).describe('Display name of the merchant'),
|
|
36
|
+
merchant_common_name: z
|
|
37
|
+
.string()
|
|
38
|
+
.max(256)
|
|
39
|
+
.optional()
|
|
40
|
+
.describe('Short / common name of the merchant'),
|
|
41
|
+
merchant_description: z.string().optional(),
|
|
42
|
+
merchant_type_code: z.string().max(32).optional(),
|
|
43
|
+
merchant_class_code: z.string().max(32).optional(),
|
|
44
|
+
merchant_status_code: z.string().max(32).optional(),
|
|
45
|
+
merchant_image_url_logo: z.string().url().optional(),
|
|
46
|
+
merchant_image_url_thumbnail: z.string().url().optional(),
|
|
47
|
+
display_order: z.number().int().optional(),
|
|
48
|
+
metadata: z.record(z.unknown()).optional(),
|
|
49
|
+
confirm: confirmFlagSchema,
|
|
50
|
+
idempotency_key: unenforcedIdempotencyKeySchema,
|
|
51
|
+
}),
|
|
52
|
+
capabilities: [cap('xrm_merchants', 'INSERT')],
|
|
53
|
+
sideEffect: 'provisioning',
|
|
54
|
+
confirmation: 'caller_confirms',
|
|
55
|
+
idempotency: 'natural_key',
|
|
56
|
+
handler: async (args, ctx) => {
|
|
57
|
+
const input = args;
|
|
58
|
+
const body = {
|
|
59
|
+
party_id: input.party_id,
|
|
60
|
+
merchant_name: input.merchant_name,
|
|
61
|
+
};
|
|
62
|
+
for (const field of [
|
|
63
|
+
'merchant_common_name',
|
|
64
|
+
'merchant_description',
|
|
65
|
+
'merchant_type_code',
|
|
66
|
+
'merchant_class_code',
|
|
67
|
+
'merchant_status_code',
|
|
68
|
+
'merchant_image_url_logo',
|
|
69
|
+
'merchant_image_url_thumbnail',
|
|
70
|
+
'display_order',
|
|
71
|
+
'metadata',
|
|
72
|
+
]) {
|
|
73
|
+
if (input[field] !== undefined)
|
|
74
|
+
body[field] = input[field];
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const rows = await ctx.apiClient.post(`${ctx.apiClient.dbBasePath}/xrm_merchants?select=*`, body, { headers: writeHeadersWithIdempotency(input.idempotency_key) });
|
|
78
|
+
return successResponse(rows[0]);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
return errorResponse(API_ERROR, `Failed to create XRM merchant: ${error.message}`);
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=xrm-merchant-create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xrm-merchant-create.js","sourceRoot":"","sources":["../../../src/tools/xrm/xrm-merchant-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Tool } from '../registry.js';
|
|
2
|
+
/**
|
|
3
|
+
* Explicit-schema update for `xrm_merchants` — safe metadata fields
|
|
4
|
+
* only. `party_id` (natural key) is intentionally not writable through
|
|
5
|
+
* this tool; retargeting a merchant to a different party is not a
|
|
6
|
+
* rename operation. `merchant_approval_status_code` is not writable
|
|
7
|
+
* either: this tool needs no confirmation, so it must not be able to
|
|
8
|
+
* approve a merchant. Provider credentials are in an excluded table and
|
|
9
|
+
* are never touched.
|
|
10
|
+
*
|
|
11
|
+
* Retry-safe (converges on the same target state).
|
|
12
|
+
*/
|
|
13
|
+
export declare const xrmMerchantUpdateTool: Tool;
|
|
14
|
+
//# sourceMappingURL=xrm-merchant-update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xrm-merchant-update.d.ts","sourceRoot":"","sources":["../../../src/tools/xrm/xrm-merchant-update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAQtC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,EAAE,IAqDnC,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { API_ERROR, errorResponse, successResponse } from '../types.js';
|
|
3
|
+
import { cap } from '../../capabilities/tool-capability.js';
|
|
4
|
+
import { unenforcedIdempotencyKeySchema, writeHeadersWithIdempotency, } from '../_shared/side-effect.js';
|
|
5
|
+
/**
|
|
6
|
+
* Explicit-schema update for `xrm_merchants` — safe metadata fields
|
|
7
|
+
* only. `party_id` (natural key) is intentionally not writable through
|
|
8
|
+
* this tool; retargeting a merchant to a different party is not a
|
|
9
|
+
* rename operation. `merchant_approval_status_code` is not writable
|
|
10
|
+
* either: this tool needs no confirmation, so it must not be able to
|
|
11
|
+
* approve a merchant. Provider credentials are in an excluded table and
|
|
12
|
+
* are never touched.
|
|
13
|
+
*
|
|
14
|
+
* Retry-safe (converges on the same target state).
|
|
15
|
+
*/
|
|
16
|
+
export const xrmMerchantUpdateTool = {
|
|
17
|
+
name: 'xrm_merchant_update',
|
|
18
|
+
description: 'Update marketplace merchant metadata (xrm_merchants) with an explicit safe field set. ' +
|
|
19
|
+
'party_id and merchant_approval_status_code are not writable. Provider credentials live ' +
|
|
20
|
+
'in an excluded table and cannot be set through MCP. Retry-safe.',
|
|
21
|
+
inputSchema: z.object({
|
|
22
|
+
id: z.string().min(1).describe('UUID of the merchant'),
|
|
23
|
+
merchant_name: z.string().min(1).max(256).optional(),
|
|
24
|
+
merchant_common_name: z.string().max(256).nullable().optional(),
|
|
25
|
+
merchant_description: z.string().nullable().optional(),
|
|
26
|
+
merchant_type_code: z.string().max(32).nullable().optional(),
|
|
27
|
+
merchant_class_code: z.string().max(32).nullable().optional(),
|
|
28
|
+
merchant_status_code: z.string().max(32).nullable().optional(),
|
|
29
|
+
merchant_image_url_logo: z.string().url().nullable().optional(),
|
|
30
|
+
merchant_image_url_thumbnail: z.string().url().nullable().optional(),
|
|
31
|
+
display_order: z.number().int().nullable().optional(),
|
|
32
|
+
metadata: z.record(z.unknown()).nullable().optional(),
|
|
33
|
+
idempotency_key: unenforcedIdempotencyKeySchema,
|
|
34
|
+
}),
|
|
35
|
+
capabilities: [cap('xrm_merchants', 'UPDATE')],
|
|
36
|
+
sideEffect: 'state_change',
|
|
37
|
+
confirmation: 'none',
|
|
38
|
+
idempotency: 'natural_key',
|
|
39
|
+
handler: async (args, ctx) => {
|
|
40
|
+
const { id, idempotency_key, ...rest } = args;
|
|
41
|
+
const body = {};
|
|
42
|
+
for (const [k, v] of Object.entries(rest)) {
|
|
43
|
+
if (v !== undefined)
|
|
44
|
+
body[k] = v;
|
|
45
|
+
}
|
|
46
|
+
if (Object.keys(body).length === 0) {
|
|
47
|
+
return errorResponse(API_ERROR, 'Update payload is empty — supply at least one field to change.');
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const rows = await ctx.apiClient.patch(`${ctx.apiClient.dbBasePath}/xrm_merchants?id=eq.${id}&select=*`, body, { headers: writeHeadersWithIdempotency(idempotency_key) });
|
|
51
|
+
if (!rows || rows.length === 0) {
|
|
52
|
+
return errorResponse(API_ERROR, `XRM merchant ${id} not found or not accessible`);
|
|
53
|
+
}
|
|
54
|
+
return successResponse(rows[0]);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
return errorResponse(API_ERROR, `Failed to update XRM merchant: ${error.message}`);
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=xrm-merchant-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xrm-merchant-update.js","sourceRoot":"","sources":["../../../src/tools/xrm/xrm-merchant-update.ts"],"names":[],"mappings":"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"}
|