@cyanheads/orcid-mcp-server 0.1.5 → 0.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.
Files changed (56) hide show
  1. package/CLAUDE.md +8 -3
  2. package/README.md +26 -3
  3. package/changelog/0.1.x/0.1.6.md +17 -0
  4. package/changelog/0.2.x/0.2.0.md +22 -0
  5. package/changelog/template.md +1 -1
  6. package/dist/index.js +5 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/mcp-server/resources/definitions/researcher-works.resource.d.ts.map +1 -1
  9. package/dist/mcp-server/resources/definitions/researcher-works.resource.js +11 -1
  10. package/dist/mcp-server/resources/definitions/researcher-works.resource.js.map +1 -1
  11. package/dist/mcp-server/tools/definitions/get-affiliations.tool.d.ts +3 -2
  12. package/dist/mcp-server/tools/definitions/get-affiliations.tool.d.ts.map +1 -1
  13. package/dist/mcp-server/tools/definitions/get-affiliations.tool.js +8 -8
  14. package/dist/mcp-server/tools/definitions/get-affiliations.tool.js.map +1 -1
  15. package/dist/mcp-server/tools/definitions/get-funding.tool.d.ts +3 -2
  16. package/dist/mcp-server/tools/definitions/get-funding.tool.d.ts.map +1 -1
  17. package/dist/mcp-server/tools/definitions/get-funding.tool.js +8 -8
  18. package/dist/mcp-server/tools/definitions/get-funding.tool.js.map +1 -1
  19. package/dist/mcp-server/tools/definitions/get-peer-reviews.tool.d.ts +3 -2
  20. package/dist/mcp-server/tools/definitions/get-peer-reviews.tool.d.ts.map +1 -1
  21. package/dist/mcp-server/tools/definitions/get-peer-reviews.tool.js +8 -8
  22. package/dist/mcp-server/tools/definitions/get-peer-reviews.tool.js.map +1 -1
  23. package/dist/mcp-server/tools/definitions/get-profile.tool.d.ts +1 -1
  24. package/dist/mcp-server/tools/definitions/get-profile.tool.d.ts.map +1 -1
  25. package/dist/mcp-server/tools/definitions/get-research-resources.tool.d.ts +42 -0
  26. package/dist/mcp-server/tools/definitions/get-research-resources.tool.d.ts.map +1 -0
  27. package/dist/mcp-server/tools/definitions/get-research-resources.tool.js +157 -0
  28. package/dist/mcp-server/tools/definitions/get-research-resources.tool.js.map +1 -0
  29. package/dist/mcp-server/tools/definitions/get-work-detail.tool.d.ts +44 -0
  30. package/dist/mcp-server/tools/definitions/get-work-detail.tool.d.ts.map +1 -0
  31. package/dist/mcp-server/tools/definitions/get-work-detail.tool.js +169 -0
  32. package/dist/mcp-server/tools/definitions/get-work-detail.tool.js.map +1 -0
  33. package/dist/mcp-server/tools/definitions/get-works.tool.d.ts +4 -2
  34. package/dist/mcp-server/tools/definitions/get-works.tool.d.ts.map +1 -1
  35. package/dist/mcp-server/tools/definitions/get-works.tool.js +15 -9
  36. package/dist/mcp-server/tools/definitions/get-works.tool.js.map +1 -1
  37. package/dist/mcp-server/tools/definitions/resolve-researcher.tool.d.ts +6 -11
  38. package/dist/mcp-server/tools/definitions/resolve-researcher.tool.d.ts.map +1 -1
  39. package/dist/mcp-server/tools/definitions/resolve-researcher.tool.js +18 -32
  40. package/dist/mcp-server/tools/definitions/resolve-researcher.tool.js.map +1 -1
  41. package/dist/mcp-server/tools/definitions/search-researchers.tool.d.ts +5 -10
  42. package/dist/mcp-server/tools/definitions/search-researchers.tool.d.ts.map +1 -1
  43. package/dist/mcp-server/tools/definitions/search-researchers.tool.js +16 -25
  44. package/dist/mcp-server/tools/definitions/search-researchers.tool.js.map +1 -1
  45. package/dist/services/orcid/normalizers.d.ts +3 -1
  46. package/dist/services/orcid/normalizers.d.ts.map +1 -1
  47. package/dist/services/orcid/normalizers.js +81 -0
  48. package/dist/services/orcid/normalizers.js.map +1 -1
  49. package/dist/services/orcid/orcid-service.d.ts +11 -1
  50. package/dist/services/orcid/orcid-service.d.ts.map +1 -1
  51. package/dist/services/orcid/orcid-service.js +23 -1
  52. package/dist/services/orcid/orcid-service.js.map +1 -1
  53. package/dist/services/orcid/types.d.ts +142 -2
  54. package/dist/services/orcid/types.d.ts.map +1 -1
  55. package/package.json +4 -3
  56. package/server.json +3 -3
@@ -0,0 +1,157 @@
1
+ /**
2
+ * @fileoverview List research resources (equipment, facilities, compute allocations, etc.)
3
+ * associated with an ORCID researcher.
4
+ * @module mcp-server/tools/definitions/get-research-resources
5
+ */
6
+ import { tool, z } from '@cyanheads/mcp-ts-core';
7
+ import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
8
+ import { getOrcidService, normalizeOrcidId } from '../../../services/orcid/orcid-service.js';
9
+ const ExternalIdSchema = z
10
+ .object({
11
+ type: z.string().describe('Identifier type (e.g. uri, doi, grant_number).'),
12
+ value: z.string().describe('Identifier value.'),
13
+ url: z.string().optional().describe('Resolver URL for this identifier, if available.'),
14
+ relationship: z.string().optional().describe('Relationship to the resource (self or part-of).'),
15
+ })
16
+ .describe('External identifier for the research resource.');
17
+ const OrgSchema = z
18
+ .object({
19
+ name: z.string().optional().describe('Organization name.'),
20
+ city: z.string().optional().describe('City of the organization.'),
21
+ country: z.string().optional().describe('Country code of the organization.'),
22
+ disambiguatedId: z
23
+ .string()
24
+ .optional()
25
+ .describe('Disambiguated organization ID (e.g. ROR or GRID identifier).'),
26
+ disambiguationSource: z
27
+ .string()
28
+ .optional()
29
+ .describe('Source of the disambiguation ID (e.g. ROR, GRID, RINGGOLD).'),
30
+ })
31
+ .describe('Hosting organization for the research resource.');
32
+ export const orcidGetResearchResources = tool('orcid_get_research_resources', {
33
+ title: 'Get ORCID Research Resources',
34
+ description: 'List research resources associated with an ORCID researcher — compute allocations, equipment access, lab facilities, data resources, and clinical study registrations. This is a newer ORCID section; most researchers have no entries. Returns the resource title, hosting organization, external identifiers (often a URI to the allocation portal), and access period. Most entries are deposited by resource-allocation systems (e.g. ACCESS, XSEDE) rather than researchers themselves.',
35
+ annotations: { readOnlyHint: true, openWorldHint: false, idempotentHint: true },
36
+ input: z.object({
37
+ orcid_id: z
38
+ .string()
39
+ .regex(/^(https?:\/\/orcid\.org\/)?\d{4}-\d{4}-\d{4}-\d{3}[\dX]$/, 'Must be a valid ORCID iD (e.g. 0000-0001-2345-6789) or full ORCID URI.')
40
+ .describe('ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789).'),
41
+ }),
42
+ output: z.object({
43
+ orcidId: z.string().describe('Normalized ORCID iD (bare format).'),
44
+ orcidUri: z.string().describe('Full ORCID URI.'),
45
+ resourceCount: z.number().describe('Total number of research resources returned.'),
46
+ resources: z
47
+ .array(z
48
+ .object({
49
+ putCode: z.number().describe('Put-code of this research resource record.'),
50
+ title: z.string().optional().describe('Resource or proposal title.'),
51
+ hostOrganization: OrgSchema.optional().describe('Organization that hosts or manages the resource.'),
52
+ externalIds: z
53
+ .array(ExternalIdSchema)
54
+ .describe('External identifiers for the resource (often a portal URI).'),
55
+ startDate: z
56
+ .string()
57
+ .optional()
58
+ .describe('Access or allocation start date (YYYY, YYYY-MM, or YYYY-MM-DD).'),
59
+ endDate: z
60
+ .string()
61
+ .optional()
62
+ .describe('Access or allocation end date (YYYY, YYYY-MM, or YYYY-MM-DD).'),
63
+ url: z.string().optional().describe('URL for the resource or allocation record.'),
64
+ })
65
+ .describe('Research resource record.'))
66
+ .describe('Research resources associated with this ORCID iD.'),
67
+ }),
68
+ enrichment: {
69
+ notice: z
70
+ .string()
71
+ .optional()
72
+ .describe('Note when no research resources are found — this section is sparsely populated across ORCID profiles.'),
73
+ },
74
+ errors: [
75
+ {
76
+ reason: 'profile_not_found',
77
+ code: JsonRpcErrorCode.NotFound,
78
+ when: 'The ORCID iD does not correspond to a registered researcher.',
79
+ recovery: 'Verify the ORCID iD is correct and try orcid_search_researchers to find valid iDs.',
80
+ },
81
+ ],
82
+ async handler(input, ctx) {
83
+ const service = getOrcidService();
84
+ ctx.log.info('orcid_get_research_resources', { orcidId: input.orcid_id });
85
+ let resources;
86
+ try {
87
+ resources = await service.getResearchResources(input.orcid_id, ctx);
88
+ }
89
+ catch (err) {
90
+ if (err instanceof McpError && err.code === JsonRpcErrorCode.NotFound) {
91
+ throw ctx.fail('profile_not_found', `ORCID iD ${normalizeOrcidId(input.orcid_id)} not found`);
92
+ }
93
+ throw err;
94
+ }
95
+ const bareId = normalizeOrcidId(input.orcid_id);
96
+ ctx.log.info('orcid_get_research_resources completed', {
97
+ orcidId: bareId,
98
+ resourceCount: resources.length,
99
+ });
100
+ if (resources.length === 0) {
101
+ ctx.enrich.notice('No research resources found. This ORCID section is sparsely populated — most researchers have no entries. Resources are typically deposited by allocation systems (e.g. ACCESS, XSEDE) rather than self-reported.');
102
+ }
103
+ return {
104
+ orcidId: bareId,
105
+ orcidUri: `https://orcid.org/${bareId}`,
106
+ resourceCount: resources.length,
107
+ resources,
108
+ };
109
+ },
110
+ format: (result) => {
111
+ const lines = [
112
+ `## Research Resources for ORCID ${result.orcidId}`,
113
+ `**URI:** ${result.orcidUri}`,
114
+ `**Total Resources:** ${result.resourceCount}`,
115
+ ];
116
+ if (result.resources.length === 0) {
117
+ return [{ type: 'text', text: lines.join('\n') }];
118
+ }
119
+ lines.push('');
120
+ for (const r of result.resources) {
121
+ lines.push(`### ${r.title ?? '(untitled)'}`);
122
+ lines.push(`**Put-code:** ${r.putCode}`);
123
+ if (r.hostOrganization) {
124
+ const org = r.hostOrganization;
125
+ const parts = [];
126
+ if (org.name)
127
+ parts.push(org.name);
128
+ if (org.city)
129
+ parts.push(org.city);
130
+ if (org.country)
131
+ parts.push(org.country);
132
+ if (parts.length)
133
+ lines.push(`**Host:** ${parts.join(', ')}`);
134
+ if (org.disambiguatedId) {
135
+ lines.push(`**Host ID:** ${org.disambiguatedId} (${org.disambiguationSource ?? 'unknown source'})`);
136
+ }
137
+ }
138
+ if (r.startDate || r.endDate) {
139
+ const period = [r.startDate, r.endDate].filter(Boolean).join(' – ');
140
+ lines.push(`**Period:** ${period}`);
141
+ }
142
+ if (r.url)
143
+ lines.push(`**URL:** ${r.url}`);
144
+ if (r.externalIds.length) {
145
+ const idParts = r.externalIds.map((id) => {
146
+ const rel = id.relationship ? ` [${id.relationship}]` : '';
147
+ const urlPart = id.url ? ` (${id.url})` : '';
148
+ return `${id.type}:${id.value}${urlPart}${rel}`;
149
+ });
150
+ lines.push(`**IDs:** ${idParts.join(', ')}`);
151
+ }
152
+ lines.push('');
153
+ }
154
+ return [{ type: 'text', text: lines.join('\n') }];
155
+ },
156
+ });
157
+ //# sourceMappingURL=get-research-resources.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-research-resources.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-research-resources.tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @fileoverview Fetch the full detail record for a single ORCID work by its put-code.
3
+ * @module mcp-server/tools/definitions/get-work-detail
4
+ */
5
+ import { z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
7
+ export declare const orcidGetWorkDetail: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
8
+ orcid_id: z.ZodString;
9
+ put_code: z.ZodNumber;
10
+ }, z.core.$strip>, z.ZodObject<{
11
+ orcidId: z.ZodString;
12
+ orcidUri: z.ZodString;
13
+ putCode: z.ZodNumber;
14
+ title: z.ZodOptional<z.ZodString>;
15
+ subtitle: z.ZodOptional<z.ZodString>;
16
+ workType: z.ZodOptional<z.ZodString>;
17
+ publicationDate: z.ZodOptional<z.ZodString>;
18
+ journalTitle: z.ZodOptional<z.ZodString>;
19
+ abstract: z.ZodOptional<z.ZodString>;
20
+ citation: z.ZodOptional<z.ZodObject<{
21
+ type: z.ZodString;
22
+ value: z.ZodString;
23
+ }, z.core.$strip>>;
24
+ url: z.ZodOptional<z.ZodString>;
25
+ externalIds: z.ZodArray<z.ZodObject<{
26
+ type: z.ZodString;
27
+ value: z.ZodString;
28
+ url: z.ZodOptional<z.ZodString>;
29
+ relationship: z.ZodOptional<z.ZodString>;
30
+ }, z.core.$strip>>;
31
+ contributors: z.ZodArray<z.ZodObject<{
32
+ name: z.ZodOptional<z.ZodString>;
33
+ orcidId: z.ZodOptional<z.ZodString>;
34
+ role: z.ZodOptional<z.ZodString>;
35
+ sequence: z.ZodOptional<z.ZodString>;
36
+ }, z.core.$strip>>;
37
+ languageCode: z.ZodOptional<z.ZodString>;
38
+ }, z.core.$strip>, readonly [{
39
+ readonly reason: "work_not_found";
40
+ readonly code: JsonRpcErrorCode.NotFound;
41
+ readonly when: "The ORCID iD or put-code does not correspond to a known record.";
42
+ readonly recovery: "Verify the ORCID iD with orcid_search_researchers and the put-code with orcid_get_works.";
43
+ }], undefined>;
44
+ //# sourceMappingURL=get-work-detail.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-work-detail.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-work-detail.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AA8B3E,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAuJ7B,CAAC"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * @fileoverview Fetch the full detail record for a single ORCID work by its put-code.
3
+ * @module mcp-server/tools/definitions/get-work-detail
4
+ */
5
+ import { tool, z } from '@cyanheads/mcp-ts-core';
6
+ import { JsonRpcErrorCode, McpError } from '@cyanheads/mcp-ts-core/errors';
7
+ import { getOrcidService, normalizeOrcidId } from '../../../services/orcid/orcid-service.js';
8
+ const ExternalIdSchema = z
9
+ .object({
10
+ type: z.string().describe('Identifier type (e.g. doi, pmid, arxiv, isbn, ppr).'),
11
+ value: z.string().describe('Identifier value.'),
12
+ url: z.string().optional().describe('Resolver URL for this identifier, if available.'),
13
+ relationship: z.string().optional().describe('Relationship to the work (self or part-of).'),
14
+ })
15
+ .describe('External identifier for the work.');
16
+ const ContributorSchema = z
17
+ .object({
18
+ name: z.string().optional().describe('Contributor display name or credit name.'),
19
+ orcidId: z.string().optional().describe('Contributor ORCID iD (bare format), if linked.'),
20
+ role: z
21
+ .string()
22
+ .optional()
23
+ .describe('Contributor role (e.g. author, editor, conceptualization, data-curation). May be a CRediT taxonomy term.'),
24
+ sequence: z
25
+ .string()
26
+ .optional()
27
+ .describe('Contributor sequence position (first or additional).'),
28
+ })
29
+ .describe('Work contributor with optional role and ORCID iD.');
30
+ export const orcidGetWorkDetail = tool('orcid_get_work_detail', {
31
+ title: 'Get ORCID Work Detail',
32
+ description: 'Fetch the full detail record for a single work by its put-code, which is returned by orcid_get_works in the put_code field of each work entry. Returns the abstract (short-description), all contributors with CRediT roles, the complete external ID list (DOI, PMID, arXiv, ISBN, etc.), citation metadata (BibTeX or other formats when provided), journal title, and URL. Use this when you need more than the summary — especially the abstract or contributor list — after calling orcid_get_works to identify the put-code.',
33
+ annotations: { readOnlyHint: true, openWorldHint: false, idempotentHint: true },
34
+ input: z.object({
35
+ orcid_id: z
36
+ .string()
37
+ .regex(/^(https?:\/\/orcid\.org\/)?\d{4}-\d{4}-\d{4}-\d{3}[\dX]$/, 'Must be a valid ORCID iD (e.g. 0000-0001-2345-6789) or full ORCID URI.')
38
+ .describe('ORCID iD — bare format (0000-0001-2345-6789) or full URI (https://orcid.org/0000-0001-2345-6789).'),
39
+ put_code: z
40
+ .number()
41
+ .int()
42
+ .positive()
43
+ .describe('Work put-code, available in the put_code field returned by orcid_get_works. Each work group has a unique put-code.'),
44
+ }),
45
+ output: z.object({
46
+ orcidId: z.string().describe('Normalized ORCID iD (bare format).'),
47
+ orcidUri: z.string().describe('Full ORCID URI.'),
48
+ putCode: z.number().describe('Put-code of this work record.'),
49
+ title: z.string().optional().describe('Work title.'),
50
+ subtitle: z.string().optional().describe('Work subtitle, when provided.'),
51
+ workType: z
52
+ .string()
53
+ .optional()
54
+ .describe('Work type (e.g. journal-article, dataset, software, preprint).'),
55
+ publicationDate: z
56
+ .string()
57
+ .optional()
58
+ .describe('Publication date (YYYY, YYYY-MM, or YYYY-MM-DD).'),
59
+ journalTitle: z.string().optional().describe('Journal or container title, when provided.'),
60
+ abstract: z.string().optional().describe('Abstract or short description, when provided.'),
61
+ citation: z
62
+ .object({
63
+ type: z.string().describe('Citation format (e.g. bibtex, formatted-unspecified).'),
64
+ value: z.string().describe('Citation string in the specified format.'),
65
+ })
66
+ .optional()
67
+ .describe('Citation metadata, when provided by the depositing system.'),
68
+ url: z.string().optional().describe('URL for the work, when available.'),
69
+ externalIds: z
70
+ .array(ExternalIdSchema)
71
+ .describe('All external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs, etc.).'),
72
+ contributors: z
73
+ .array(ContributorSchema)
74
+ .describe('Work contributors with optional roles. May be empty if not deposited.'),
75
+ languageCode: z.string().optional().describe('Language code of the work, when provided.'),
76
+ }),
77
+ errors: [
78
+ {
79
+ reason: 'work_not_found',
80
+ code: JsonRpcErrorCode.NotFound,
81
+ when: 'The ORCID iD or put-code does not correspond to a known record.',
82
+ recovery: 'Verify the ORCID iD with orcid_search_researchers and the put-code with orcid_get_works.',
83
+ },
84
+ ],
85
+ async handler(input, ctx) {
86
+ const service = getOrcidService();
87
+ ctx.log.info('orcid_get_work_detail', { orcidId: input.orcid_id, putCode: input.put_code });
88
+ let detail;
89
+ try {
90
+ detail = await service.getWorkDetail(input.orcid_id, input.put_code, ctx);
91
+ }
92
+ catch (err) {
93
+ if (err instanceof McpError && err.code === JsonRpcErrorCode.NotFound) {
94
+ throw ctx.fail('work_not_found', `Work put-code ${input.put_code} not found for ORCID iD ${normalizeOrcidId(input.orcid_id)}`);
95
+ }
96
+ throw err;
97
+ }
98
+ const bareId = normalizeOrcidId(input.orcid_id);
99
+ ctx.log.info('orcid_get_work_detail completed', {
100
+ orcidId: bareId,
101
+ putCode: detail.putCode,
102
+ hasAbstract: !!detail.abstract,
103
+ contributorCount: detail.contributors.length,
104
+ });
105
+ return {
106
+ orcidId: bareId,
107
+ orcidUri: `https://orcid.org/${bareId}`,
108
+ putCode: detail.putCode,
109
+ ...(detail.title !== undefined && { title: detail.title }),
110
+ ...(detail.subtitle !== undefined && { subtitle: detail.subtitle }),
111
+ ...(detail.workType !== undefined && { workType: detail.workType }),
112
+ ...(detail.publicationDate !== undefined && { publicationDate: detail.publicationDate }),
113
+ ...(detail.journalTitle !== undefined && { journalTitle: detail.journalTitle }),
114
+ ...(detail.abstract !== undefined && { abstract: detail.abstract }),
115
+ ...(detail.citation !== undefined && { citation: detail.citation }),
116
+ ...(detail.url !== undefined && { url: detail.url }),
117
+ externalIds: detail.externalIds,
118
+ contributors: detail.contributors,
119
+ ...(detail.languageCode !== undefined && { languageCode: detail.languageCode }),
120
+ };
121
+ },
122
+ format: (result) => {
123
+ const lines = [
124
+ `## ${result.title ?? '(untitled)'}`,
125
+ `**ORCID iD:** ${result.orcidId} | **URI:** ${result.orcidUri} | **Put-code:** ${result.putCode}`,
126
+ ];
127
+ if (result.subtitle)
128
+ lines.push(`**Subtitle:** ${result.subtitle}`);
129
+ if (result.workType)
130
+ lines.push(`**Type:** ${result.workType}`);
131
+ if (result.publicationDate)
132
+ lines.push(`**Date:** ${result.publicationDate}`);
133
+ if (result.journalTitle)
134
+ lines.push(`**Journal:** ${result.journalTitle}`);
135
+ if (result.url)
136
+ lines.push(`**URL:** ${result.url}`);
137
+ if (result.externalIds.length) {
138
+ const idParts = result.externalIds.map((id) => {
139
+ const rel = id.relationship ? ` [${id.relationship}]` : '';
140
+ const urlPart = id.url ? ` (${id.url})` : '';
141
+ return `${id.type}:${id.value}${urlPart}${rel}`;
142
+ });
143
+ lines.push(`**IDs:** ${idParts.join(', ')}`);
144
+ }
145
+ if (result.abstract) {
146
+ lines.push('', `**Abstract:** ${result.abstract}`);
147
+ }
148
+ if (result.contributors.length) {
149
+ lines.push('', '**Contributors:**');
150
+ for (const c of result.contributors) {
151
+ const name = c.name ?? '(unnamed)';
152
+ const role = c.role ? ` — ${c.role}` : '';
153
+ const seq = c.sequence ? ` (${c.sequence})` : '';
154
+ const orcid = c.orcidId ? ` [${c.orcidId}]` : '';
155
+ lines.push(`- ${name}${role}${seq}${orcid}`);
156
+ }
157
+ }
158
+ if (result.citation) {
159
+ lines.push('', `**Citation (${result.citation.type}):**`);
160
+ lines.push('```');
161
+ lines.push(result.citation.value);
162
+ lines.push('```');
163
+ }
164
+ if (result.languageCode)
165
+ lines.push(`**Language:** ${result.languageCode}`);
166
+ return [{ type: 'text', text: lines.join('\n') }];
167
+ },
168
+ });
169
+ //# sourceMappingURL=get-work-detail.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-work-detail.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-work-detail.tool.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ export declare const orcidGetWorks: import("@cyanheads/mcp-ts-core").ToolDefinit
13
13
  orcidUri: z.ZodString;
14
14
  workCount: z.ZodNumber;
15
15
  works: z.ZodArray<z.ZodObject<{
16
+ putCode: z.ZodOptional<z.ZodNumber>;
16
17
  title: z.ZodOptional<z.ZodString>;
17
18
  workType: z.ZodOptional<z.ZodString>;
18
19
  publicationDate: z.ZodOptional<z.ZodString>;
@@ -25,11 +26,12 @@ export declare const orcidGetWorks: import("@cyanheads/mcp-ts-core").ToolDefinit
25
26
  relationship: z.ZodOptional<z.ZodString>;
26
27
  }, z.core.$strip>>;
27
28
  }, z.core.$strip>>;
28
- notice: z.ZodOptional<z.ZodString>;
29
29
  }, z.core.$strip>, readonly [{
30
30
  readonly reason: "profile_not_found";
31
31
  readonly code: JsonRpcErrorCode.NotFound;
32
32
  readonly when: "The ORCID iD does not correspond to a registered researcher.";
33
33
  readonly recovery: "Verify the ORCID iD is correct and try orcid_search_researchers to find valid iDs.";
34
- }]>;
34
+ }], {
35
+ readonly notice: z.ZodOptional<z.ZodString>;
36
+ }>;
35
37
  //# sourceMappingURL=get-works.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-works.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-works.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAa3E,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;GAmIxB,CAAC"}
1
+ {"version":3,"file":"get-works.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-works.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAa3E,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2IxB,CAAC"}
@@ -17,7 +17,7 @@ const ExternalIdSchema = z
17
17
  .describe('External identifier for a work.');
18
18
  export const orcidGetWorks = tool('orcid_get_works', {
19
19
  title: 'Get ORCID Researcher Works',
20
- description: 'Retrieve works associated with an ORCID iD — publications, datasets, software, preprints, and more. Returns work summaries with titles, types, publication dates, journal names, and all external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs). External IDs are ready for chaining to Crossref, PubMed, or arXiv servers. The /works endpoint returns summaries only pass DOIs to Crossref or PMIDs to PubMed to retrieve full metadata or abstracts. Works are self-reported; a researcher may not have linked all their publications.',
20
+ description: 'Retrieve works associated with an ORCID iD — publications, datasets, software, preprints, and more. Returns work summaries with put-codes, titles, types, publication dates, journal names, and all external identifiers (DOIs, PMIDs, arXiv IDs, ISBNs). Pass the put_code from each work to orcid_get_work_detail to retrieve the full record including abstract and contributors. External IDs are ready for chaining to Crossref, PubMed, or arXiv servers. Works are self-reported; a researcher may not have linked all their publications.',
21
21
  annotations: { readOnlyHint: true, openWorldHint: false, idempotentHint: true },
22
22
  input: z.object({
23
23
  orcid_id: z
@@ -32,6 +32,10 @@ export const orcidGetWorks = tool('orcid_get_works', {
32
32
  works: z
33
33
  .array(z
34
34
  .object({
35
+ putCode: z
36
+ .number()
37
+ .optional()
38
+ .describe('Work put-code — pass to orcid_get_work_detail to fetch the full record including abstract and contributors.'),
35
39
  title: z.string().optional().describe('Work title.'),
36
40
  workType: z
37
41
  .string()
@@ -49,11 +53,15 @@ export const orcidGetWorks = tool('orcid_get_works', {
49
53
  })
50
54
  .describe('Work summary record.'))
51
55
  .describe('Works associated with this ORCID iD.'),
56
+ }),
57
+ // Agent-facing context: empty-result notice surfaces in structuredContent and content[]
58
+ // without occupying the domain return.
59
+ enrichment: {
52
60
  notice: z
53
61
  .string()
54
62
  .optional()
55
63
  .describe('Note when the works list is empty — may indicate no self-reported works or private visibility settings.'),
56
- }),
64
+ },
57
65
  errors: [
58
66
  {
59
67
  reason: 'profile_not_found',
@@ -77,15 +85,14 @@ export const orcidGetWorks = tool('orcid_get_works', {
77
85
  }
78
86
  const bareId = normalizeOrcidId(input.orcid_id);
79
87
  ctx.log.info('orcid_get_works completed', { orcidId: bareId, workCount: works.length });
80
- const notice = works.length === 0
81
- ? 'No works found. The researcher may not have linked works to their ORCID record, or works may be set to private visibility.'
82
- : undefined;
88
+ if (works.length === 0) {
89
+ ctx.enrich.notice('No works found. The researcher may not have linked works to their ORCID record, or works may be set to private visibility.');
90
+ }
83
91
  return {
84
92
  orcidId: bareId,
85
93
  orcidUri: `https://orcid.org/${bareId}`,
86
94
  workCount: works.length,
87
95
  works,
88
- ...(notice && { notice }),
89
96
  };
90
97
  },
91
98
  format: (result) => {
@@ -94,15 +101,14 @@ export const orcidGetWorks = tool('orcid_get_works', {
94
101
  `**URI:** ${result.orcidUri}`,
95
102
  `**Total Works:** ${result.workCount}`,
96
103
  ];
97
- if (result.notice) {
98
- lines.push('', `> ${result.notice}`);
99
- }
100
104
  if (result.works.length === 0) {
101
105
  return [{ type: 'text', text: lines.join('\n') }];
102
106
  }
103
107
  lines.push('');
104
108
  for (const w of result.works) {
105
109
  lines.push(`### ${w.title ?? '(untitled)'}`);
110
+ if (w.putCode != null)
111
+ lines.push(`**Put-code:** ${w.putCode}`);
106
112
  if (w.workType)
107
113
  lines.push(`**Type:** ${w.workType}`);
108
114
  if (w.publicationDate)
@@ -1 +1 @@
1
- {"version":3,"file":"get-works.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-works.tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get-works.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/get-works.tool.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,6 @@
5
5
  * @module mcp-server/tools/definitions/resolve-researcher.tool
6
6
  */
7
7
  import { z } from '@cyanheads/mcp-ts-core';
8
- import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
9
8
  export declare const orcidResolveResearcher: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
10
9
  name: z.ZodString;
11
10
  affiliation: z.ZodOptional<z.ZodString>;
@@ -33,14 +32,10 @@ export declare const orcidResolveResearcher: import("@cyanheads/mcp-ts-core").To
33
32
  pmid: "pmid";
34
33
  }>;
35
34
  }, z.core.$strip>>;
36
- queryUsed: z.ZodString;
37
- relaxedQuery: z.ZodOptional<z.ZodString>;
38
- totalFound: z.ZodNumber;
39
- notice: z.ZodOptional<z.ZodString>;
40
- }, z.core.$strip>, readonly [{
41
- readonly reason: "no_candidates";
42
- readonly code: JsonRpcErrorCode.NotFound;
43
- readonly when: "No ORCID records matched even the relaxed query for this name.";
44
- readonly recovery: "Try a different name spelling, use orcid_search_researchers with broader parameters, or verify the DOI/PMID is correct.";
45
- }]>;
35
+ }, z.core.$strip>, undefined, {
36
+ readonly queryUsed: z.ZodString;
37
+ readonly relaxedQuery: z.ZodOptional<z.ZodString>;
38
+ readonly totalFound: z.ZodNumber;
39
+ readonly notice: z.ZodOptional<z.ZodString>;
40
+ }>;
46
41
  //# sourceMappingURL=resolve-researcher.tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-researcher.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/resolve-researcher.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA0DjE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6OjC,CAAC"}
1
+ {"version":3,"file":"resolve-researcher.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/resolve-researcher.tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AA0DjD,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkOjC,CAAC"}