@withpica/mcp-server-directory 1.4.1 → 1.5.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.
Files changed (98) hide show
  1. package/CHANGELOG.md +53 -1
  2. package/README.md +63 -0
  3. package/dist/client.d.ts +14 -0
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +29 -2
  6. package/dist/client.js.map +1 -1
  7. package/dist/config.js +1 -1
  8. package/dist/index.js +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/lib/changelog.generated.d.ts +2 -2
  11. package/dist/lib/changelog.generated.d.ts.map +1 -1
  12. package/dist/lib/changelog.generated.js +3 -3
  13. package/dist/lib/changelog.generated.js.map +1 -1
  14. package/dist/lib/changelog.js +1 -1
  15. package/dist/prompts/index.js +2 -2
  16. package/dist/prompts/index.js.map +1 -1
  17. package/dist/prompts/public-question-atlas.d.ts.map +1 -1
  18. package/dist/prompts/public-question-atlas.js +15 -1
  19. package/dist/prompts/public-question-atlas.js.map +1 -1
  20. package/dist/resources/llms-primer.d.ts +1 -1
  21. package/dist/resources/llms-primer.d.ts.map +1 -1
  22. package/dist/resources/llms-primer.js +7 -3
  23. package/dist/resources/llms-primer.js.map +1 -1
  24. package/dist/server.js +1 -1
  25. package/dist/skills/index.js +1 -1
  26. package/dist/skills/skills.generated.js +2 -2
  27. package/dist/skills/skills.generated.js.map +1 -1
  28. package/dist/tools/chain.js +1 -1
  29. package/dist/tools/enquiries.d.ts +19 -0
  30. package/dist/tools/enquiries.d.ts.map +1 -0
  31. package/dist/tools/enquiries.js +190 -0
  32. package/dist/tools/enquiries.js.map +1 -0
  33. package/dist/tools/index.d.ts +4 -3
  34. package/dist/tools/index.d.ts.map +1 -1
  35. package/dist/tools/index.js +3 -1
  36. package/dist/tools/index.js.map +1 -1
  37. package/dist/tools/people.js +1 -1
  38. package/dist/tools/recordings.js +1 -1
  39. package/dist/tools/release-notes.d.ts.map +1 -1
  40. package/dist/tools/release-notes.js +3 -2
  41. package/dist/tools/release-notes.js.map +1 -1
  42. package/dist/tools/search.js +1 -1
  43. package/dist/tools/skills.d.ts.map +1 -1
  44. package/dist/tools/skills.js +5 -3
  45. package/dist/tools/skills.js.map +1 -1
  46. package/dist/tools/works.d.ts.map +1 -1
  47. package/dist/tools/works.js +18 -2
  48. package/dist/tools/works.js.map +1 -1
  49. package/dist/utils/errors.d.ts.map +1 -1
  50. package/dist/utils/errors.js +57 -4
  51. package/dist/utils/errors.js.map +1 -1
  52. package/dist/utils/formatting.d.ts.map +1 -1
  53. package/dist/utils/formatting.js +9 -3
  54. package/dist/utils/formatting.js.map +1 -1
  55. package/jest.config.js +4 -1
  56. package/package.json +9 -5
  57. package/scripts/build-changelog.ts +2 -2
  58. package/scripts/build-skills.ts +9 -4
  59. package/src/__tests__/prompts/index.test.ts +1 -1
  60. package/src/__tests__/prompts/prompt-eval-harness.test.ts +4 -3
  61. package/src/__tests__/skills/skills-registry.test.ts +2 -5
  62. package/src/__tests__/skills/skills-tools.test.ts +5 -13
  63. package/src/__tests__/tools/chain.test.ts +1 -1
  64. package/src/__tests__/tools/composability-chains.test.ts +15 -26
  65. package/src/__tests__/tools/enquiries.test.ts +135 -0
  66. package/src/__tests__/tools/people.test.ts +1 -1
  67. package/src/__tests__/tools/search.test.ts +1 -1
  68. package/src/__tests__/tools/tool-count-parity.test.ts +63 -0
  69. package/src/__tests__/tools/works.test.ts +4 -1
  70. package/src/__tests__/utils/errors.test.ts +68 -0
  71. package/src/client.ts +38 -2
  72. package/src/config.ts +1 -1
  73. package/src/index.ts +1 -2
  74. package/src/lib/changelog.ts +1 -1
  75. package/src/prompts/index.ts +2 -2
  76. package/src/prompts/public-question-atlas.ts +16 -1
  77. package/src/resources/llms-primer.ts +7 -3
  78. package/src/server.ts +1 -1
  79. package/src/skills/find-music-for-sync-brief/SKILL.md +2 -2
  80. package/src/skills/index.ts +1 -1
  81. package/src/skills/skills.generated.ts +2 -2
  82. package/src/tools/__tests__/release-notes.test.ts +1 -1
  83. package/src/tools/chain.ts +1 -1
  84. package/src/tools/enquiries.ts +210 -0
  85. package/src/tools/index.ts +7 -4
  86. package/src/tools/people.ts +1 -1
  87. package/src/tools/recordings.ts +1 -1
  88. package/src/tools/release-notes.ts +3 -2
  89. package/src/tools/search.ts +1 -1
  90. package/src/tools/skills.ts +5 -3
  91. package/src/tools/works.ts +20 -2
  92. package/src/utils/errors.ts +72 -4
  93. package/src/utils/formatting.ts +9 -3
  94. package/tsconfig.build.json +10 -0
  95. package/dist/tools/__tests__/release-notes.test.d.ts +0 -2
  96. package/dist/tools/__tests__/release-notes.test.d.ts.map +0 -1
  97. package/dist/tools/__tests__/release-notes.test.js +0 -49
  98. package/dist/tools/__tests__/release-notes.test.js.map +0 -1
@@ -0,0 +1,190 @@
1
+ // Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
2
+ const PROJECT_TYPES = [
3
+ "film",
4
+ "tv series",
5
+ "commercial",
6
+ "trailer",
7
+ "video game",
8
+ "podcast",
9
+ "social media",
10
+ "other",
11
+ ];
12
+ /** The enquiry route answers `{ error: "…" }` or `{ error: { message } }`. */
13
+ function errorMessage(json) {
14
+ const e = json?.error;
15
+ if (typeof e === "string")
16
+ return e;
17
+ if (e && typeof e.message === "string")
18
+ return e.message;
19
+ return null;
20
+ }
21
+ /**
22
+ * The route stores the enquiry and THEN sends the emails, so a 5xx or a lost
23
+ * answer can come after it was stored. Saying "not sent" there would invite a
24
+ * resend, and a second enquiry and email to the owner.
25
+ */
26
+ function outcomeUnknown(detail) {
27
+ const reason = "Outcome unknown: the enquiry may already have reached the owner. " +
28
+ "Do not resend without checking with the user first.";
29
+ return {
30
+ content: [{ type: "text", text: `${reason} (${detail})` }],
31
+ structuredContent: { sent: null, outcome: "unknown", reason, detail },
32
+ isError: true,
33
+ };
34
+ }
35
+ /**
36
+ * The directory's only non-read tool: send a licensing enquiry to the owner
37
+ * of a work listed in the public directory. It goes through the same public
38
+ * route as the directory's web form (POST /api/shop/license-enquiries), so
39
+ * the same rules apply: the work must be listed, the owner must not have
40
+ * switched enquiries off, and a budget is optional.
41
+ */
42
+ export class DirectoryEnquiryTools {
43
+ client;
44
+ constructor(client) {
45
+ this.client = client;
46
+ }
47
+ getTools() {
48
+ return [
49
+ {
50
+ definition: {
51
+ name: "directory_send_licensing_enquiry",
52
+ tier: "write",
53
+ description: "Use when the user asks: 'ask the owner if I can license this', " +
54
+ "'send a licensing enquiry for X', 'contact the rights holder about using this song'. " +
55
+ "Sends a licensing enquiry to the owner of a work listed in the public directory. " +
56
+ "The enquiry is passed to the owner, who can reply to the user by email (the user's address is " +
57
+ "shared with them); a confirmation email to the user is usually sent but not guaranteed. " +
58
+ "Nothing is agreed or priced: it only opens the conversation. " +
59
+ "ONLY call after the user has explicitly asked to send it and has given their own name, " +
60
+ "email and a description of the project. Never invent these, and never send on their behalf " +
61
+ "without asking. Get work_id from directory_lookup_work, directory_list_works or directory_chain. " +
62
+ "A 403 means the owner is not taking enquiries; a 404 means the work is not publicly listed; " +
63
+ "an unknown outcome means it may already have been sent, so never resend without asking. " +
64
+ "NOT FOR: looking up who owns a song (use directory_lookup_work). " +
65
+ "→ then: directory_lookup_work (the work page and credits, to share with the user)",
66
+ inputSchema: {
67
+ type: "object",
68
+ properties: {
69
+ work_id: {
70
+ type: "string",
71
+ description: "The work's UUID from the directory.",
72
+ },
73
+ contact_name: {
74
+ type: "string",
75
+ description: "The user's own name, as they gave it.",
76
+ },
77
+ contact_email: {
78
+ type: "string",
79
+ description: "The user's own email address. The owner will reply to it.",
80
+ },
81
+ company_name: {
82
+ type: "string",
83
+ description: "The user's company or production (optional).",
84
+ },
85
+ project_type: {
86
+ type: "string",
87
+ enum: PROJECT_TYPES,
88
+ description: "The kind of project.",
89
+ },
90
+ project_description: {
91
+ type: "string",
92
+ description: "How the music would be used, in the user's words.",
93
+ },
94
+ territory: {
95
+ type: "string",
96
+ description: "Where it would be used (optional; omit if the user didn't say).",
97
+ },
98
+ term: {
99
+ type: "string",
100
+ description: "For how long (optional; omit if the user didn't say).",
101
+ },
102
+ budget_amount: {
103
+ type: "number",
104
+ description: "Proposed fee, only if the user named one (optional).",
105
+ },
106
+ budget_currency: {
107
+ type: "string",
108
+ description: "Three-letter currency code (default GBP).",
109
+ },
110
+ budget_notes: {
111
+ type: "string",
112
+ description: "Anything the user said about budget that isn't a single amount, e.g. a range.",
113
+ },
114
+ },
115
+ required: [
116
+ "work_id",
117
+ "contact_name",
118
+ "contact_email",
119
+ "project_type",
120
+ "project_description",
121
+ ],
122
+ additionalProperties: false,
123
+ },
124
+ },
125
+ executor: this.sendEnquiry.bind(this),
126
+ },
127
+ ];
128
+ }
129
+ async sendEnquiry(args) {
130
+ const workId = String(args.work_id ?? "");
131
+ let answer;
132
+ try {
133
+ answer = await this.client.sendLicensingEnquiry({
134
+ workId,
135
+ contactName: args.contact_name,
136
+ contactEmail: args.contact_email,
137
+ companyName: args.company_name,
138
+ projectType: args.project_type,
139
+ projectDescription: args.project_description,
140
+ // Not specified is said plainly, never guessed.
141
+ territory: args.territory || "not specified",
142
+ duration: args.term || "not specified",
143
+ proposedBudgetAmount: typeof args.budget_amount === "number" ? args.budget_amount : null,
144
+ proposedBudgetCurrency: args.budget_currency || "GBP",
145
+ budgetNotes: args.budget_notes,
146
+ });
147
+ }
148
+ catch (err) {
149
+ // No answer at all (timeout, network): the route may still have stored it.
150
+ return outcomeUnknown(err.message);
151
+ }
152
+ const { status, json } = answer;
153
+ const page = this.client.workPageUrl(workId);
154
+ if (status >= 200 && status < 300 && json?.data?.id) {
155
+ return {
156
+ content: [
157
+ {
158
+ type: "text",
159
+ text: `Enquiry passed to the owner (reference ${json.data.id}). ` +
160
+ `They can reply to ${args.contact_email} if they want to take it further; ` +
161
+ `nothing has been agreed. Work page: ${page}`,
162
+ },
163
+ ],
164
+ structuredContent: {
165
+ sent: true,
166
+ enquiry_id: json.data.id,
167
+ status: json.data.status,
168
+ work_page_url: page,
169
+ },
170
+ };
171
+ }
172
+ // A 5xx, or a 2xx without the reference, may have stored the enquiry.
173
+ if (status >= 500 || (status >= 200 && status < 300))
174
+ return outcomeUnknown(`HTTP ${status}`);
175
+ const reason = status === 403
176
+ ? "The owner is not taking licensing enquiries for this work."
177
+ : status === 404
178
+ ? "That work is not listed in the public directory."
179
+ : status === 429
180
+ ? "Too many enquiries were sent recently. Try again later."
181
+ : (errorMessage(json) ??
182
+ `The enquiry was not sent (HTTP ${status}).`);
183
+ return {
184
+ content: [{ type: "text", text: `Not sent. ${reason}` }],
185
+ structuredContent: { sent: false, http_status: status, reason },
186
+ isError: true,
187
+ };
188
+ }
189
+ }
190
+ //# sourceMappingURL=enquiries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enquiries.js","sourceRoot":"","sources":["../../src/tools/enquiries.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { DirectoryClient } from "../client.js";
2
2
  /**
3
3
  * ADR-230 — authority tier on every directory_* tool. Sister of the
4
- * creator + team MCP's `Tier` declaration. Every directory tool is
5
- * `read` (public catalogue lookup with no mutation surface), but the
6
- * field is required for cross-surface uniformity and lint enforcement.
4
+ * creator + team MCP's `Tier` declaration. Every directory tool is `read`
5
+ * (public catalogue lookup) except directory_send_licensing_enquiry
6
+ * (`write`, tools/enquiries.ts), which sends an enquiry through the same
7
+ * public route as the directory's web form.
7
8
  */
8
9
  export type Tier = "read" | "draft" | "write" | "destructive";
9
10
  export interface ToolDefinition {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAU/C;;;;;GAKG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAChC,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAEvE,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAGX;gBAEU,MAAM,EAAE,eAAe;IAoBnC,SAAS,IAAI,cAAc,EAAE;IAIvB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;CAgBzE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAW/C;;;;;;GAMG;AACH,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,aAAa,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAChC,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAEvE,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAGX;gBAEU,MAAM,EAAE,eAAe;IAqBnC,SAAS,IAAI,cAAc,EAAE;IAIvB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;CAgBzE"}
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
1
+ // Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
2
2
  import { DirectoryWorksTools } from "./works.js";
3
3
  import { DirectoryPeopleTools } from "./people.js";
4
4
  import { DirectorySearchTools } from "./search.js";
@@ -6,6 +6,7 @@ import { DirectoryRecordingsTools } from "./recordings.js";
6
6
  import { DirectoryChainTools } from "./chain.js";
7
7
  import { DirectorySkillsTools } from "./skills.js";
8
8
  import { DirectoryReleaseNotesTools } from "./release-notes.js";
9
+ import { DirectoryEnquiryTools } from "./enquiries.js";
9
10
  import { formatError, logError, ToolExecutionError } from "../utils/errors.js";
10
11
  export class ToolRegistry {
11
12
  tools;
@@ -19,6 +20,7 @@ export class ToolRegistry {
19
20
  new DirectoryChainTools(client),
20
21
  new DirectorySkillsTools(),
21
22
  new DirectoryReleaseNotesTools(client),
23
+ new DirectoryEnquiryTools(client),
22
24
  ];
23
25
  for (const group of groups) {
24
26
  for (const tool of group.getTools()) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA+B/E,MAAM,OAAO,YAAY;IACf,KAAK,CAGX;IAEF,YAAY,MAAuB;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QAEvB,MAAM,MAAM,GAAG;YACb,IAAI,mBAAmB,CAAC,MAAM,CAAC;YAC/B,IAAI,oBAAoB,CAAC,MAAM,CAAC;YAChC,IAAI,oBAAoB,CAAC,MAAM,CAAC;YAChC,IAAI,wBAAwB,CAAC,MAAM,CAAC;YACpC,IAAI,mBAAmB,CAAC,MAAM,CAAC;YAC/B,IAAI,oBAAoB,EAAE;YAC1B,IAAI,0BAA0B,CAAC,MAAM,CAAC;SACvC,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,IAAyB;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,kBAAkB,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,mBAAmB,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAgC/E,MAAM,OAAO,YAAY;IACf,KAAK,CAGX;IAEF,YAAY,MAAuB;QACjC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;QAEvB,MAAM,MAAM,GAAG;YACb,IAAI,mBAAmB,CAAC,MAAM,CAAC;YAC/B,IAAI,oBAAoB,CAAC,MAAM,CAAC;YAChC,IAAI,oBAAoB,CAAC,MAAM,CAAC;YAChC,IAAI,wBAAwB,CAAC,MAAM,CAAC;YACpC,IAAI,mBAAmB,CAAC,MAAM,CAAC;YAC/B,IAAI,oBAAoB,EAAE;YAC1B,IAAI,0BAA0B,CAAC,MAAM,CAAC;YACtC,IAAI,qBAAqB,CAAC,MAAM,CAAC;SAClC,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,IAAyB;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,kBAAkB,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,mBAAmB,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO;gBACL,OAAO,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC7B,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
1
+ // Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
2
2
  import { formatStructuredList } from "../utils/formatting.js";
3
3
  export class DirectoryPeopleTools {
4
4
  client;
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
1
+ // Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
2
2
  import { formatStructuredList } from "../utils/formatting.js";
3
3
  export class DirectoryRecordingsTools {
4
4
  client;
@@ -1 +1 @@
1
- {"version":3,"file":"release-notes.d.ts","sourceRoot":"","sources":["../../src/tools/release-notes.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAyBtE,qBAAa,0BAA0B;IACzB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,eAAe;IAE3C,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;IA6CzE,OAAO,CAAC,YAAY,CAyDlB;CACH"}
1
+ {"version":3,"file":"release-notes.d.ts","sourceRoot":"","sources":["../../src/tools/release-notes.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAyBtE,qBAAa,0BAA0B;IACzB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,eAAe;IAE3C,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;IA8CzE,OAAO,CAAC,YAAY,CAyDlB;CACH"}
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
1
+ // Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
2
2
  import { parseChangelogText, CHANGELOG_SECTION_NAMES, } from "../lib/changelog.js";
3
3
  import { CHANGELOG_MD, PACKAGE_NAME, PACKAGE_VERSION, } from "../lib/changelog.generated.js";
4
4
  const RESOURCE_URI = "release-notes://withpica/mcp-server-directory/latest";
@@ -34,7 +34,8 @@ export class DirectoryReleaseNotesTools {
34
34
  "directory_list_works / directory_chain for those). " +
35
35
  "Returns { package, current_version, releases: [{ version, date, sections, markdown }], resource_uri }. " +
36
36
  "Defaults to the last 3 releases; use `since_version` to bound the output " +
37
- "or `sections` to filter to Added/Fixed/etc.",
37
+ "or `sections` to filter to Added/Fixed/etc. " +
38
+ "→ then: directory_search (explore anything a release note mentions)",
38
39
  inputSchema: {
39
40
  type: "object",
40
41
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"release-notes.js","sourceRoot":"","sources":["../../src/tools/release-notes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"release-notes.js","sourceRoot":"","sources":["../../src/tools/release-notes.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
1
+ // Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
2
2
  import { formatStructuredList } from "../utils/formatting.js";
3
3
  export class DirectorySearchTools {
4
4
  client;
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/tools/skills.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAGtE,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAiB;;IAMjC,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YA4C3D,UAAU;YAsBV,QAAQ;CA2DvB"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/tools/skills.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAGtE,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAiB;;IAMjC,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YA8C3D,UAAU;YAsBV,QAAQ;CA2DvB"}
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
1
+ // Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
2
2
  import { SkillsRegistry, SkillNotFoundError } from "../skills/index.js";
3
3
  export class DirectorySkillsTools {
4
4
  registry;
@@ -13,7 +13,8 @@ export class DirectorySkillsTools {
13
13
  tier: "read",
14
14
  description: "Use when the user asks: 'what skills do you have?', 'what can you do?', 'show me your methodologies', 'how do I find music here?'. " +
15
15
  "Returns the list of downloadable directory skill methodologies — name, description, trigger phrases. " +
16
- "Cheap to call. Use directory_skill_get(name) to load a specific skill's full methodology body.",
16
+ "Cheap to call. " +
17
+ "→ then: directory_skill_get (load a specific skill's full methodology body)",
17
18
  inputSchema: {
18
19
  type: "object",
19
20
  properties: {},
@@ -28,7 +29,8 @@ export class DirectorySkillsTools {
28
29
  tier: "read",
29
30
  description: "Use when the user asks: 'what skills do you have?', 'what can you do?', 'show me your methodologies'. " +
30
31
  "Returns the full methodology body for one directory skill — markdown with step-by-step instructions and tool chains. " +
31
- "Call directory_skill_list first to see available skill names, then directory_skill_get to load one. Read once at the start of the workflow; do not re-fetch on every step.",
32
+ "Call directory_skill_list first to see available skill names, then directory_skill_get to load one. Read once at the start of the workflow; do not re-fetch on every step. " +
33
+ "→ then: directory_search (run the loaded methodology against the catalogue)",
32
34
  inputSchema: {
33
35
  type: "object",
34
36
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/tools/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/tools/skills.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"works.d.ts","sourceRoot":"","sources":["../../src/tools/works.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1D,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,eAAe;IAInC,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YA2G3D,SAAS;YA2BT,UAAU;YA0GV,UAAU;CAYzB"}
1
+ {"version":3,"file":"works.d.ts","sourceRoot":"","sources":["../../src/tools/works.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1D,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,eAAe;IAInC,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YA2G3D,SAAS;YA2BT,UAAU;YA4HV,UAAU;CAYzB"}
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
1
+ // Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
2
2
  import { formatStructuredList } from "../utils/formatting.js";
3
3
  export class DirectoryWorksTools {
4
4
  client;
@@ -227,10 +227,26 @@ export class DirectoryWorksTools {
227
227
  }
228
228
  lines.push("");
229
229
  }
230
+ // How to reach the owner. Enquiries are opt-out (only an explicit false
231
+ // closes them), the same test the enquiry route applies.
232
+ const workId = data.work_id || data.id;
233
+ const pageUrl = workId ? this.client.workPageUrl(workId) : undefined;
234
+ const enquiriesOpen = data.contact_enabled !== false;
235
+ lines.push("### Licensing");
236
+ if (pageUrl)
237
+ lines.push(`- Work page: ${pageUrl}`);
238
+ lines.push(enquiriesOpen && workId
239
+ ? `- Enquiries open: with the user's go-ahead, send one via directory_send_licensing_enquiry (work_id ${workId}).`
240
+ : "- The owner is not taking licensing enquiries for this work.");
241
+ lines.push("");
230
242
  const markdown = lines.join("\n");
231
243
  return {
232
244
  content: [{ type: "text", text: markdown }],
233
- structuredContent: data,
245
+ structuredContent: {
246
+ ...data,
247
+ work_page_url: pageUrl ?? null,
248
+ enquiries_open: enquiriesOpen && Boolean(workId),
249
+ },
234
250
  };
235
251
  }
236
252
  async lookupIsrc(args) {
@@ -1 +1 @@
1
- {"version":3,"file":"works.js","sourceRoot":"","sources":["../../src/tools/works.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"works.js","sourceRoot":"","sources":["../../src/tools/works.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,cAAe,SAAQ,KAAK;IAG9B,IAAI,EAAE,MAAM;IACZ,OAAO,CAAC,EAAE,GAAG;gBAFpB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,GAAG,YAAA;CAMvB;AAED,qBAAa,kBAAmB,SAAQ,cAAc;gBACxC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;CAI3C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA+BtE;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAS1D"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAEA,qBAAa,cAAe,SAAQ,KAAK;IAG9B,IAAI,EAAE,MAAM;IACZ,OAAO,CAAC,EAAE,GAAG;gBAFpB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,GAAG,YAAA;CAMvB;AAED,qBAAa,kBAAmB,SAAQ,cAAc;gBACxC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;CAI3C;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAuEtE;AA8BD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAS1D"}
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
1
+ // Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
2
2
  export class McpServerError extends Error {
3
3
  code;
4
4
  details;
@@ -23,17 +23,70 @@ export function formatError(error) {
23
23
  text: JSON.stringify({ error: error.code, message: error.message, details: error.details }, null, 2),
24
24
  };
25
25
  }
26
- if (error instanceof Error) {
26
+ // Recover a structured error body so a real domain code surfaces instead of
27
+ // collapsing every route failure to UNKNOWN_ERROR. The mcp-sdk wraps the
28
+ // body inside `ApiError("API request failed: <status> <body>")`, so the JSON
29
+ // is not at the start of the string. PICA's api-response.ts errorResponse()
30
+ // emits { success: false, error: { code, message, details } } — `error` is a
31
+ // nested OBJECT; a few routes emit the flat { code, error } / { error_code,
32
+ // message } conventions. Decode all of them.
33
+ const rawMessage = error instanceof Error
34
+ ? error.message
35
+ : error?.message || String(error);
36
+ const structuredBody = extractEmbeddedJson(rawMessage);
37
+ const nestedError = structuredBody?.error && typeof structuredBody.error === "object"
38
+ ? structuredBody.error
39
+ : null;
40
+ const bodyCode = structuredBody?.error_code ?? structuredBody?.code ?? nestedError?.code;
41
+ const bodyMessage = structuredBody?.message ??
42
+ nestedError?.message ??
43
+ (typeof structuredBody?.error === "string"
44
+ ? structuredBody.error
45
+ : undefined);
46
+ const bodyDetails = structuredBody?.details ?? nestedError?.details;
47
+ // Structured error body from the route — propagate the domain-specific code
48
+ // and message rather than the "API request failed: …" wrapper noise.
49
+ if (bodyCode) {
27
50
  return {
28
51
  type: "text",
29
- text: JSON.stringify({ error: "UNKNOWN_ERROR", message: error.message }, null, 2),
52
+ text: JSON.stringify({
53
+ error: bodyCode,
54
+ message: bodyMessage || rawMessage,
55
+ details: bodyDetails,
56
+ }, null, 2),
30
57
  };
31
58
  }
32
59
  return {
33
60
  type: "text",
34
- text: JSON.stringify({ error: "UNKNOWN_ERROR", message: String(error) }, null, 2),
61
+ text: JSON.stringify({
62
+ error: "UNKNOWN_ERROR",
63
+ // A body without a code still carries the real message — surface it.
64
+ message: bodyMessage || rawMessage,
65
+ }, null, 2),
35
66
  };
36
67
  }
68
+ /**
69
+ * Extract a JSON error body from an error message. The body may be the whole
70
+ * string, or — as the mcp-sdk wraps it — embedded after a prefix
71
+ * ("API request failed: 400 {…}"). Slices from the first `{` to the last `}`
72
+ * so a wrapped body is still recovered. Returns null when there is no
73
+ * parseable object.
74
+ */
75
+ function extractEmbeddedJson(raw) {
76
+ if (typeof raw !== "string")
77
+ return null;
78
+ const first = raw.indexOf("{");
79
+ const last = raw.lastIndexOf("}");
80
+ if (first === -1 || last <= first)
81
+ return null;
82
+ try {
83
+ const parsed = JSON.parse(raw.slice(first, last + 1));
84
+ return parsed && typeof parsed === "object" ? parsed : null;
85
+ }
86
+ catch {
87
+ return null;
88
+ }
89
+ }
37
90
  export function logError(context, error) {
38
91
  const entry = {
39
92
  level: "error",
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,MAAM,OAAO,cAAe,SAAQ,KAAK;IAG9B;IACA;IAHT,YACE,OAAe,EACR,IAAY,EACZ,OAAa;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAM;QAGpB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IACpD,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CAAC,KAAU;IACpC,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EACrE,IAAI,EACJ,CAAC,CACF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EAClD,IAAI,EACJ,CAAC,CACF;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAClD,IAAI,EACJ,CAAC,CACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,KAAU;IAClD,MAAM,KAAK,GAA4B;QACrC,KAAK,EAAE,OAAO;QACd,OAAO;QACP,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IACF,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,KAAK;QAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACrE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,MAAM,OAAO,cAAe,SAAQ,KAAK;IAG9B;IACA;IAHT,YACE,OAAe,EACR,IAAY,EACZ,OAAa;QAEpB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHR,SAAI,GAAJ,IAAI,CAAQ;QACZ,YAAO,GAAP,OAAO,CAAM;QAGpB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IACpD,YAAY,OAAe,EAAE,OAAa;QACxC,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED,MAAM,UAAU,WAAW,CAAC,KAAU;IACpC,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EACrE,IAAI,EACJ,CAAC,CACF;SACF,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,yEAAyE;IACzE,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,6CAA6C;IAC7C,MAAM,UAAU,GACd,KAAK,YAAY,KAAK;QACpB,CAAC,CAAC,KAAK,CAAC,OAAO;QACf,CAAC,CAAE,KAAa,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,cAAc,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,WAAW,GACf,cAAc,EAAE,KAAK,IAAI,OAAO,cAAc,CAAC,KAAK,KAAK,QAAQ;QAC/D,CAAC,CAAE,cAAc,CAAC,KAId;QACJ,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,QAAQ,GACZ,cAAc,EAAE,UAAU,IAAI,cAAc,EAAE,IAAI,IAAI,WAAW,EAAE,IAAI,CAAC;IAC1E,MAAM,WAAW,GACf,cAAc,EAAE,OAAO;QACvB,WAAW,EAAE,OAAO;QACpB,CAAC,OAAO,cAAc,EAAE,KAAK,KAAK,QAAQ;YACxC,CAAC,CAAC,cAAc,CAAC,KAAK;YACtB,CAAC,CAAC,SAAS,CAAC,CAAC;IACjB,MAAM,WAAW,GAAG,cAAc,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,CAAC;IAEpE,4EAA4E;IAC5E,qEAAqE;IACrE,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;gBACE,KAAK,EAAE,QAAQ;gBACf,OAAO,EAAE,WAAW,IAAI,UAAU;gBAClC,OAAO,EAAE,WAAW;aACrB,EACD,IAAI,EACJ,CAAC,CACF;SACF,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;YACE,KAAK,EAAE,eAAe;YACtB,qEAAqE;YACrE,OAAO,EAAE,WAAW,IAAI,UAAU;SACnC,EACD,IAAI,EACJ,CAAC,CACF;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,GAAY;IASvC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,KAAU;IAClD,MAAM,KAAK,GAA4B;QACrC,KAAK,EAAE,OAAO;QACd,OAAO;QACP,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC;IACF,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,KAAK;QAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACrE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,eAAe,CAKvD;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,KAAK,EAAE,CAAC,EAAE,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,eAAe,CASjB"}
1
+ {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC7C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,eAAe,CAWvD;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,KAAK,EAAE,CAAC,EAAE,EACV,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,eAAe,CASjB"}
@@ -1,8 +1,14 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
1
+ // Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
2
2
  export function formatAsText(data) {
3
+ // MCP requires structuredContent to be a RECORD — bare arrays are rejected
4
+ // by the SDK server with -32602. Wrap them in the standard list envelope
5
+ // (mirrors @withpica/mcp-utils formatAsText).
6
+ const envelope = Array.isArray(data)
7
+ ? { items: data, count: data.length }
8
+ : data;
3
9
  return {
4
- content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
5
- structuredContent: data,
10
+ content: [{ type: "text", text: JSON.stringify(envelope, null, 2) }],
11
+ structuredContent: envelope,
6
12
  };
7
13
  }
8
14
  export function formatStructuredList(items, entityName, metadata) {
@@ -1 +1 @@
1
- {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAO7D,MAAM,UAAU,YAAY,CAAC,IAAS;IACpC,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAChE,iBAAiB,EAAE,IAA+B;KACnD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAU,EACV,UAAkB,EAClB,QAA8B;IAE9B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,MAAM,OAAO,GAAG,SAAS,KAAK,IAAI,UAAU,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GACnE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,cAAc,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EACtD,GAAG,CAAC;IACJ,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,QAAQ,EAA6B;KAC5E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAO7D,MAAM,UAAU,YAAY,CAAC,IAAS;IACpC,2EAA2E;IAC3E,yEAAyE;IACzE,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAClC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;QACrC,CAAC,CAAC,IAAI,CAAC;IACT,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACpE,iBAAiB,EAAE,QAAmC;KACvD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAAU,EACV,UAAkB,EAClB,QAA8B;IAE9B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,MAAM,OAAO,GAAG,SAAS,KAAK,IAAI,UAAU,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GACnE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,cAAc,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EACtD,GAAG,CAAC;IACJ,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,QAAQ,EAA6B;KAC5E,CAAC;AACJ,CAAC"}
package/jest.config.js CHANGED
@@ -1,4 +1,4 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
1
+ // Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
2
2
 
3
3
  export default {
4
4
  preset: 'ts-jest/presets/default-esm',
@@ -15,6 +15,9 @@ export default {
15
15
  tsconfig: {
16
16
  module: 'ESNext',
17
17
  moduleResolution: 'node',
18
+ // TS 6.0 errors (TS5107) on the deprecated node10 resolution that
19
+ // 'node' now aliases. Silence until TS 7.0 forces migration.
20
+ ignoreDeprecations: '6.0',
18
21
  },
19
22
  },
20
23
  ],