@withpica/mcp-server-directory 1.0.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 (53) hide show
  1. package/dist/client.d.ts +12 -0
  2. package/dist/client.d.ts.map +1 -0
  3. package/dist/client.js +92 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/config.d.ts +9 -0
  6. package/dist/config.d.ts.map +1 -0
  7. package/dist/config.js +14 -0
  8. package/dist/config.js.map +1 -0
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +27 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/prompts/index.d.ts +32 -0
  14. package/dist/prompts/index.d.ts.map +1 -0
  15. package/dist/prompts/index.js +168 -0
  16. package/dist/prompts/index.js.map +1 -0
  17. package/dist/resources/llms-primer.d.ts +2 -0
  18. package/dist/resources/llms-primer.d.ts.map +1 -0
  19. package/dist/resources/llms-primer.js +34 -0
  20. package/dist/resources/llms-primer.js.map +1 -0
  21. package/dist/server.d.ts +13 -0
  22. package/dist/server.d.ts.map +1 -0
  23. package/dist/server.js +103 -0
  24. package/dist/server.js.map +1 -0
  25. package/dist/tools/index.d.ts +26 -0
  26. package/dist/tools/index.d.ts.map +1 -0
  27. package/dist/tools/index.js +42 -0
  28. package/dist/tools/index.js.map +1 -0
  29. package/dist/tools/people.d.ts +14 -0
  30. package/dist/tools/people.d.ts.map +1 -0
  31. package/dist/tools/people.js +189 -0
  32. package/dist/tools/people.js.map +1 -0
  33. package/dist/tools/recordings.d.ts +12 -0
  34. package/dist/tools/recordings.d.ts.map +1 -0
  35. package/dist/tools/recordings.js +140 -0
  36. package/dist/tools/recordings.js.map +1 -0
  37. package/dist/tools/search.d.ts +12 -0
  38. package/dist/tools/search.d.ts.map +1 -0
  39. package/dist/tools/search.js +52 -0
  40. package/dist/tools/search.js.map +1 -0
  41. package/dist/tools/works.d.ts +15 -0
  42. package/dist/tools/works.d.ts.map +1 -0
  43. package/dist/tools/works.js +248 -0
  44. package/dist/tools/works.js.map +1 -0
  45. package/dist/utils/errors.d.ts +14 -0
  46. package/dist/utils/errors.d.ts.map +1 -0
  47. package/dist/utils/errors.js +47 -0
  48. package/dist/utils/errors.js.map +1 -0
  49. package/dist/utils/formatting.d.ts +10 -0
  50. package/dist/utils/formatting.d.ts.map +1 -0
  51. package/dist/utils/formatting.js +15 -0
  52. package/dist/utils/formatting.js.map +1 -0
  53. package/package.json +34 -0
@@ -0,0 +1,42 @@
1
+ import { DirectoryWorksTools } from "./works.js";
2
+ import { DirectoryPeopleTools } from "./people.js";
3
+ import { DirectorySearchTools } from "./search.js";
4
+ import { DirectoryRecordingsTools } from "./recordings.js";
5
+ import { formatError, logError, ToolExecutionError } from "../utils/errors.js";
6
+ export class ToolRegistry {
7
+ tools;
8
+ constructor(client) {
9
+ this.tools = new Map();
10
+ const groups = [
11
+ new DirectoryWorksTools(client),
12
+ new DirectoryPeopleTools(client),
13
+ new DirectorySearchTools(client),
14
+ new DirectoryRecordingsTools(client),
15
+ ];
16
+ for (const group of groups) {
17
+ for (const tool of group.getTools()) {
18
+ this.tools.set(tool.definition.name, tool);
19
+ }
20
+ }
21
+ }
22
+ listTools() {
23
+ return Array.from(this.tools.values()).map((t) => t.definition);
24
+ }
25
+ async executeTool(name, args) {
26
+ const tool = this.tools.get(name);
27
+ if (!tool) {
28
+ throw new ToolExecutionError(`Tool not found: ${name}`);
29
+ }
30
+ try {
31
+ return await tool.executor(args);
32
+ }
33
+ catch (error) {
34
+ logError(`Tool execution: ${name}`, error);
35
+ return {
36
+ content: [formatError(error)],
37
+ isError: true,
38
+ };
39
+ }
40
+ }
41
+ }
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,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,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAoB/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;SACrC,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"}
@@ -0,0 +1,14 @@
1
+ import { DirectoryClient } from "../client.js";
2
+ import { ToolDefinition, ToolExecutor } from "./index.js";
3
+ export declare class DirectoryPeopleTools {
4
+ private client;
5
+ constructor(client: DirectoryClient);
6
+ getTools(): Array<{
7
+ definition: ToolDefinition;
8
+ executor: ToolExecutor;
9
+ }>;
10
+ private listPeople;
11
+ private lookupPerson;
12
+ private lookupPersonFull;
13
+ }
14
+ //# sourceMappingURL=people.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../../src/tools/people.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1D,qBAAa,oBAAoB;IAC/B,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;YA+E3D,UAAU;YAuBV,YAAY;YAQZ,gBAAgB;CA2F/B"}
@@ -0,0 +1,189 @@
1
+ import { formatAsText, formatStructuredList } from "../utils/formatting.js";
2
+ export class DirectoryPeopleTools {
3
+ client;
4
+ constructor(client) {
5
+ this.client = client;
6
+ }
7
+ getTools() {
8
+ return [
9
+ {
10
+ definition: {
11
+ name: "directory_list_people",
12
+ description: "Browse and filter creators in the PICA public directory. " +
13
+ "Search by name, ISNI, or IPI number. Returns paginated results. " +
14
+ "→ then: directory_lookup_person_full (full profile with works and identifiers)",
15
+ inputSchema: {
16
+ type: "object",
17
+ properties: {
18
+ q: {
19
+ type: "string",
20
+ description: "Text search across creator names",
21
+ },
22
+ isni: {
23
+ type: "string",
24
+ description: "Filter by ISNI identifier",
25
+ },
26
+ ipi: {
27
+ type: "string",
28
+ description: "Filter by IPI number",
29
+ },
30
+ page: {
31
+ type: "number",
32
+ description: "Page number (default: 1, 20 results per page)",
33
+ },
34
+ },
35
+ },
36
+ },
37
+ executor: this.listPeople.bind(this),
38
+ },
39
+ {
40
+ definition: {
41
+ name: "directory_lookup_person",
42
+ description: "Get full details of a single creator by their global creator ID, ISNI, IPI, or MusicBrainz ID. " +
43
+ "Returns roles, works, identifiers, and profile information. " +
44
+ "→ then: directory_lookup_person_full (agent-optimised markdown), directory_lookup_work_full (inspect a credited work)",
45
+ inputSchema: {
46
+ type: "object",
47
+ properties: {
48
+ id: {
49
+ type: "string",
50
+ description: "Global creator ID (UUID), ISNI, IPI number, or MusicBrainz ID",
51
+ },
52
+ },
53
+ required: ["id"],
54
+ },
55
+ },
56
+ executor: this.lookupPerson.bind(this),
57
+ },
58
+ {
59
+ definition: {
60
+ name: "directory_lookup_person_full",
61
+ description: "Get complete details about a person in the public directory — identifiers (IPI, ISNI), " +
62
+ "credited works with roles, collaborator network, and verification score. " +
63
+ "Returns a structured markdown summary. " +
64
+ "→ then: directory_lookup_work_full (inspect a specific work), directory_search_recordings (find their recordings by audio)",
65
+ inputSchema: {
66
+ type: "object",
67
+ properties: {
68
+ id: {
69
+ type: "string",
70
+ description: "Global creator ID (UUID), ISNI, IPI number, or MusicBrainz ID",
71
+ },
72
+ },
73
+ required: ["id"],
74
+ },
75
+ },
76
+ executor: this.lookupPersonFull.bind(this),
77
+ },
78
+ ];
79
+ }
80
+ async listPeople(args) {
81
+ const page = Math.max(args.page || 1, 1);
82
+ const limit = 20;
83
+ const offset = (page - 1) * limit;
84
+ const params = {
85
+ limit: String(limit),
86
+ offset: String(offset),
87
+ };
88
+ if (args.q)
89
+ params.q = args.q;
90
+ if (args.isni)
91
+ params.isni = args.isni;
92
+ if (args.ipi)
93
+ params.ipi = args.ipi;
94
+ const response = await this.client.request("/people", params);
95
+ return formatStructuredList(response.data || [], "creator", {
96
+ page,
97
+ total: response.pagination?.total || 0,
98
+ total_pages: Math.ceil((response.pagination?.total || 0) / limit),
99
+ });
100
+ }
101
+ async lookupPerson(args) {
102
+ const response = await this.client.request(`/people/${encodeURIComponent(args.id)}`);
103
+ return formatAsText(response.data);
104
+ }
105
+ async lookupPersonFull(args) {
106
+ const response = await this.client.request(`/people/${encodeURIComponent(args.id)}`);
107
+ const data = response.data;
108
+ if (!data) {
109
+ return {
110
+ content: [{ type: "text", text: "Person not found." }],
111
+ structuredContent: {},
112
+ };
113
+ }
114
+ const lines = [];
115
+ // Name heading
116
+ const name = data.name || data.full_name || data.display_name || "Unknown";
117
+ lines.push(`## ${name}`);
118
+ lines.push("");
119
+ // Score / verification
120
+ if (data.score !== undefined && data.score !== null) {
121
+ const tier = data.score >= 80
122
+ ? "verified"
123
+ : data.score >= 50
124
+ ? "partial"
125
+ : "incomplete";
126
+ lines.push(`- **Score:** ${data.score}/100 (${tier})`);
127
+ lines.push("");
128
+ }
129
+ // Identifiers
130
+ const identifiers = [];
131
+ if (data.ipi || data.ipi_number)
132
+ identifiers.push({ type: "IPI", value: data.ipi || data.ipi_number });
133
+ if (data.isni)
134
+ identifiers.push({ type: "ISNI", value: data.isni });
135
+ if (data.musicbrainz_id)
136
+ identifiers.push({ type: "MusicBrainz", value: data.musicbrainz_id });
137
+ if (data.ipn)
138
+ identifiers.push({ type: "IPN", value: data.ipn });
139
+ lines.push("### Identifiers");
140
+ if (identifiers.length > 0) {
141
+ lines.push("| Type | Value |");
142
+ lines.push("| --- | --- |");
143
+ for (const id of identifiers) {
144
+ lines.push(`| ${id.type} | ${id.value} |`);
145
+ }
146
+ }
147
+ else {
148
+ lines.push("_No identifiers recorded._");
149
+ }
150
+ lines.push("");
151
+ // Works
152
+ const works = data.works || data.credited_works || [];
153
+ lines.push(`### Works (${works.length})`);
154
+ if (works.length > 0) {
155
+ lines.push("| Title | Role |");
156
+ lines.push("| --- | --- |");
157
+ for (const w of works) {
158
+ const title = w.title || "—";
159
+ const role = w.role || w.credit_role || "—";
160
+ lines.push(`| ${title} | ${role} |`);
161
+ }
162
+ }
163
+ else {
164
+ lines.push("_No works recorded._");
165
+ }
166
+ lines.push("");
167
+ // Collaborators
168
+ const collaborators = data.collaborators || [];
169
+ lines.push(`### Collaborators (${collaborators.length})`);
170
+ if (collaborators.length > 0) {
171
+ lines.push("| Name |");
172
+ lines.push("| --- |");
173
+ for (const c of collaborators) {
174
+ const colName = c.name || c.full_name || c.display_name || "—";
175
+ lines.push(`| ${colName} |`);
176
+ }
177
+ }
178
+ else {
179
+ lines.push("_No collaborators recorded._");
180
+ }
181
+ lines.push("");
182
+ const markdown = lines.join("\n");
183
+ return {
184
+ content: [{ type: "text", text: markdown }],
185
+ structuredContent: data,
186
+ };
187
+ }
188
+ }
189
+ //# sourceMappingURL=people.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"people.js","sourceRoot":"","sources":["../../src/tools/people.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { DirectoryClient } from "../client.js";
2
+ import { ToolDefinition, ToolExecutor } from "./index.js";
3
+ export declare class DirectoryRecordingsTools {
4
+ private client;
5
+ constructor(client: DirectoryClient);
6
+ getTools(): Array<{
7
+ definition: ToolDefinition;
8
+ executor: ToolExecutor;
9
+ }>;
10
+ private searchRecordings;
11
+ }
12
+ //# sourceMappingURL=recordings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordings.d.ts","sourceRoot":"","sources":["../../src/tools/recordings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1D,qBAAa,wBAAwB;IACnC,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;YAiF3D,gBAAgB;CAkD/B"}
@@ -0,0 +1,140 @@
1
+ import { formatStructuredList } from "../utils/formatting.js";
2
+ export class DirectoryRecordingsTools {
3
+ client;
4
+ constructor(client) {
5
+ this.client = client;
6
+ }
7
+ getTools() {
8
+ return [
9
+ {
10
+ definition: {
11
+ name: "directory_search_recordings",
12
+ description: "Search recordings across the PICA directory by audio characteristics. " +
13
+ "Find tracks by BPM, key, energy, danceability, duration, and more. " +
14
+ "Only returns recordings from organisations that have opted into the directory. " +
15
+ "Use this for sync licensing searches like 'find upbeat tracks around 120 BPM in a minor key'. " +
16
+ "→ then: directory_lookup_work_full (credits and licensing details for a matched track)",
17
+ inputSchema: {
18
+ type: "object",
19
+ properties: {
20
+ min_bpm: {
21
+ type: "number",
22
+ description: "Minimum BPM (e.g. 100)",
23
+ },
24
+ max_bpm: {
25
+ type: "number",
26
+ description: "Maximum BPM (e.g. 140)",
27
+ },
28
+ key: {
29
+ type: "string",
30
+ description: "Musical key (e.g. 'C', 'F#', 'Bb'). Matches the detected key.",
31
+ },
32
+ key_mode: {
33
+ type: "string",
34
+ enum: ["major", "minor"],
35
+ description: "Key mode — major or minor",
36
+ },
37
+ min_energy: {
38
+ type: "number",
39
+ description: "Minimum energy (0-1). Higher = more energetic.",
40
+ },
41
+ max_energy: {
42
+ type: "number",
43
+ description: "Maximum energy (0-1).",
44
+ },
45
+ min_danceability: {
46
+ type: "number",
47
+ description: "Minimum danceability (0-1). Higher = more danceable.",
48
+ },
49
+ max_danceability: {
50
+ type: "number",
51
+ description: "Maximum danceability (0-1).",
52
+ },
53
+ min_duration: {
54
+ type: "number",
55
+ description: "Minimum duration in seconds.",
56
+ },
57
+ max_duration: {
58
+ type: "number",
59
+ description: "Maximum duration in seconds.",
60
+ },
61
+ vocals_only: {
62
+ type: "boolean",
63
+ description: "Only return tracks with vocals.",
64
+ },
65
+ instrumental_only: {
66
+ type: "boolean",
67
+ description: "Only return instrumental tracks.",
68
+ },
69
+ mood: {
70
+ type: "string",
71
+ description: "Filter by mood (exact match).",
72
+ },
73
+ limit: {
74
+ type: "number",
75
+ description: "Max results to return (default: 20, max: 100).",
76
+ },
77
+ },
78
+ },
79
+ },
80
+ executor: this.searchRecordings.bind(this),
81
+ },
82
+ ];
83
+ }
84
+ async searchRecordings(args) {
85
+ const params = {};
86
+ // Map all filters to query params
87
+ const numericKeys = [
88
+ "min_bpm",
89
+ "max_bpm",
90
+ "min_energy",
91
+ "max_energy",
92
+ "min_danceability",
93
+ "max_danceability",
94
+ "min_duration",
95
+ "max_duration",
96
+ "limit",
97
+ ];
98
+ for (const k of numericKeys) {
99
+ if (args[k] != null)
100
+ params[k] = String(args[k]);
101
+ }
102
+ if (args.key)
103
+ params.key = args.key;
104
+ if (args.key_mode)
105
+ params.key_mode = args.key_mode;
106
+ if (args.mood)
107
+ params.mood = args.mood;
108
+ if (args.vocals_only)
109
+ params.vocals_only = "true";
110
+ if (args.instrumental_only)
111
+ params.instrumental_only = "true";
112
+ const response = await this.client.request("/recordings", params);
113
+ const recordings = response.data || [];
114
+ // Format each recording for readability
115
+ const formatted = recordings.map((r) => {
116
+ const parts = [`${r.title} (${r.isrc})`];
117
+ if (r.artist_name)
118
+ parts.push(`Artist: ${r.artist_name}`);
119
+ if (r.bpm)
120
+ parts.push(`BPM: ${Math.round(r.bpm)}`);
121
+ if (r.key)
122
+ parts.push(`Key: ${r.key}${r.key_mode ? ` ${r.key_mode}` : ""}`);
123
+ if (r.energy != null)
124
+ parts.push(`Energy: ${r.energy}`);
125
+ if (r.duration_seconds)
126
+ parts.push(`Duration: ${Math.round(r.duration_seconds)}s`);
127
+ if (r.has_vocals != null)
128
+ parts.push(r.has_vocals ? "Vocals: yes" : "Instrumental");
129
+ if (r.owner_org_name)
130
+ parts.push(`Owner: ${r.owner_org_name}`);
131
+ if (r.work_title)
132
+ parts.push(`Work: ${r.work_title}`);
133
+ return { ...r, _summary: parts.join(" | ") };
134
+ });
135
+ return formatStructuredList(formatted, "recording", {
136
+ filters: args,
137
+ });
138
+ }
139
+ }
140
+ //# sourceMappingURL=recordings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordings.js","sourceRoot":"","sources":["../../src/tools/recordings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { DirectoryClient } from "../client.js";
2
+ import { ToolDefinition, ToolExecutor } from "./index.js";
3
+ export declare class DirectorySearchTools {
4
+ private client;
5
+ constructor(client: DirectoryClient);
6
+ getTools(): Array<{
7
+ definition: ToolDefinition;
8
+ executor: ToolExecutor;
9
+ }>;
10
+ private search;
11
+ }
12
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1D,qBAAa,oBAAoB;IAC/B,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;YAgC3D,MAAM;CAiBrB"}
@@ -0,0 +1,52 @@
1
+ import { formatStructuredList } from "../utils/formatting.js";
2
+ export class DirectorySearchTools {
3
+ client;
4
+ constructor(client) {
5
+ this.client = client;
6
+ }
7
+ getTools() {
8
+ return [
9
+ {
10
+ definition: {
11
+ name: "directory_search",
12
+ description: "Search across all verified works and creators in the PICA public directory. " +
13
+ "Returns mixed results sorted by relevance. Use this for broad searches; " +
14
+ "use list_works or list_people for filtered browsing. " +
15
+ "→ then: directory_lookup_work_full (work details), directory_lookup_person_full (creator details)",
16
+ inputSchema: {
17
+ type: "object",
18
+ properties: {
19
+ query: {
20
+ type: "string",
21
+ description: "Search query — matches work titles, ISWCs, creator names, ISNIs",
22
+ },
23
+ type: {
24
+ type: "string",
25
+ enum: ["works", "people"],
26
+ description: "Limit results to a specific entity type",
27
+ },
28
+ },
29
+ required: ["query"],
30
+ },
31
+ },
32
+ executor: this.search.bind(this),
33
+ },
34
+ ];
35
+ }
36
+ async search(args) {
37
+ const params = {
38
+ q: args.query,
39
+ limit: "20",
40
+ offset: "0",
41
+ };
42
+ if (args.type)
43
+ params.type = args.type;
44
+ const response = await this.client.request("/search", params);
45
+ return formatStructuredList(response.data || [], "result", {
46
+ query: args.query,
47
+ type: args.type || "all",
48
+ total: response.pagination?.total || 0,
49
+ });
50
+ }
51
+ }
52
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,OAAO,oBAAoB;IACvB,MAAM,CAAkB;IAEhC,YAAY,MAAuB;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,QAAQ;QACN,OAAO;YACL;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,kBAAkB;oBACxB,WAAW,EACT,8EAA8E;wBAC9E,0EAA0E;wBAC1E,uDAAuD;wBACvD,mGAAmG;oBACrG,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,iEAAiE;6BACpE;4BACD,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;gCACzB,WAAW,EAAE,yCAAyC;6BACvD;yBACF;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;qBACpB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACjC;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,IAAyB;QAC5C,MAAM,MAAM,GAA2B;YACrC,CAAC,EAAE,IAAI,CAAC,KAAK;YACb,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,GAAG;SACZ,CAAC;QAEF,IAAI,IAAI,CAAC,IAAI;YAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEvC,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAEnE,OAAO,oBAAoB,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE;YACzD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,KAAK;YACxB,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,KAAK,IAAI,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import { DirectoryClient } from "../client.js";
2
+ import { ToolDefinition, ToolExecutor } from "./index.js";
3
+ export declare class DirectoryWorksTools {
4
+ private client;
5
+ constructor(client: DirectoryClient);
6
+ getTools(): Array<{
7
+ definition: ToolDefinition;
8
+ executor: ToolExecutor;
9
+ }>;
10
+ private listWorks;
11
+ private lookupWork;
12
+ private lookupWorkFull;
13
+ private lookupIsrc;
14
+ }
15
+ //# sourceMappingURL=works.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"works.d.ts","sourceRoot":"","sources":["../../src/tools/works.ts"],"names":[],"mappings":"AAAA,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;YAqG3D,SAAS;YAwBT,UAAU;YAQV,cAAc;YAkHd,UAAU;CAYzB"}