@cyanheads/libofcongress-mcp-server 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +7 -3
- package/README.md +6 -6
- package/dist/config/server-config.js +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-browse-collections.tool.d.ts +4 -7
- package/dist/mcp-server/tools/definitions/libofcongress-browse-collections.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-browse-collections.tool.js +21 -37
- package/dist/mcp-server/tools/definitions/libofcongress-browse-collections.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-get-item.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-get-item.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-get-newspaper-page.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-get-newspaper-page.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-search-newspapers.tool.d.ts +5 -7
- package/dist/mcp-server/tools/definitions/libofcongress-search-newspapers.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-search-newspapers.tool.js +27 -40
- package/dist/mcp-server/tools/definitions/libofcongress-search-newspapers.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-search-subjects.tool.d.ts +4 -8
- package/dist/mcp-server/tools/definitions/libofcongress-search-subjects.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-search-subjects.tool.js +13 -19
- package/dist/mcp-server/tools/definitions/libofcongress-search-subjects.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-search.tool.d.ts +5 -7
- package/dist/mcp-server/tools/definitions/libofcongress-search.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/libofcongress-search.tool.js +25 -40
- package/dist/mcp-server/tools/definitions/libofcongress-search.tool.js.map +1 -1
- package/package.json +4 -3
- package/server.json +5 -5
package/CLAUDE.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Developer Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** libofcongress-mcp-server
|
|
4
|
-
**Version:** 0.2.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.
|
|
4
|
+
**Version:** 0.2.7
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.21`
|
|
6
6
|
**Engines:** Bun ≥1.3.0, Node ≥24.0.0
|
|
7
7
|
**MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
|
|
8
8
|
**Zod:** ^4.4.3
|
|
@@ -113,7 +113,7 @@ import { z } from '@cyanheads/mcp-ts-core';
|
|
|
113
113
|
import { parseEnvConfig } from '@cyanheads/mcp-ts-core/config';
|
|
114
114
|
|
|
115
115
|
const ServerConfigSchema = z.object({
|
|
116
|
-
userAgent: z.string().default('libofcongress-mcp-server/0.2.
|
|
116
|
+
userAgent: z.string().default('libofcongress-mcp-server/0.2.7').describe('User-Agent header for LOC API requests.'),
|
|
117
117
|
requestDelayMs: z.coerce.number().default(3100).describe('Delay in ms between LOC API requests.'),
|
|
118
118
|
});
|
|
119
119
|
|
|
@@ -258,6 +258,7 @@ Available skills:
|
|
|
258
258
|
| `git-wrapup` | Land working-tree changes as a versioned commit + annotated tag — version bump, changelog, verify, tag. Local only. |
|
|
259
259
|
| `release-and-publish` | Push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup` |
|
|
260
260
|
| `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
|
|
261
|
+
| `orchestrations` | Chain task skills into a gated multi-phase pipeline — build-out, QA-fix, update-ship — when you can spawn sub-agents |
|
|
261
262
|
| `report-issue-framework` | File a bug or feature request against `@cyanheads/mcp-ts-core` via `gh` CLI |
|
|
262
263
|
| `report-issue-local` | File a bug or feature request against this server's own repo via `gh` CLI |
|
|
263
264
|
| `api-auth` | Auth modes, scopes, JWT/OAuth |
|
|
@@ -272,6 +273,8 @@ Available skills:
|
|
|
272
273
|
| `api-telemetry` | OTel catalog: spans, metrics, completion logs, env config, cardinality rules |
|
|
273
274
|
| `api-workers` | Cloudflare Workers runtime |
|
|
274
275
|
|
|
276
|
+
**Chaining skills into pipelines.** When the user wants a multi-phase effort — build this server out, QA-and-fix the surface, update-and-ship — *and you can spawn sub-agents*, `skills/orchestrations/SKILL.md` sequences the task skills above into a gated pipeline with verification at each step. Read it to drive the run. Optional: skip it if you can't orchestrate sub-agents, and ignore it entirely if you were *spawned* as one — you've already been scoped to a single phase.
|
|
277
|
+
|
|
275
278
|
When you complete a skill's checklist, check the boxes and add a completion timestamp at the end (e.g., `Completed: 2026-03-11`).
|
|
276
279
|
|
|
277
280
|
---
|
|
@@ -294,6 +297,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
294
297
|
| `npm run start:http` | Production mode (HTTP) |
|
|
295
298
|
| `npm run changelog:build` | Regenerate `CHANGELOG.md` from `changelog/*.md` |
|
|
296
299
|
| `npm run changelog:check` | Verify `CHANGELOG.md` is in sync (used by devcheck) |
|
|
300
|
+
| `npm run release:github` | Create a GitHub Release from the current annotated tag |
|
|
297
301
|
| `npm run bundle` | Build and pack as `.mcpb` for one-click Claude Desktop install |
|
|
298
302
|
|
|
299
303
|
---
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/libofcongress-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/libofcongress-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -148,10 +148,10 @@ Add the following to your MCP client configuration file.
|
|
|
148
148
|
```json
|
|
149
149
|
{
|
|
150
150
|
"mcpServers": {
|
|
151
|
-
"libofcongress": {
|
|
151
|
+
"libofcongress-mcp-server": {
|
|
152
152
|
"type": "stdio",
|
|
153
153
|
"command": "bunx",
|
|
154
|
-
"args": ["libofcongress-mcp-server@latest"],
|
|
154
|
+
"args": ["@cyanheads/libofcongress-mcp-server@latest"],
|
|
155
155
|
"env": {
|
|
156
156
|
"MCP_TRANSPORT_TYPE": "stdio",
|
|
157
157
|
"MCP_LOG_LEVEL": "info"
|
|
@@ -166,10 +166,10 @@ Or with npx (no Bun required):
|
|
|
166
166
|
```json
|
|
167
167
|
{
|
|
168
168
|
"mcpServers": {
|
|
169
|
-
"libofcongress": {
|
|
169
|
+
"libofcongress-mcp-server": {
|
|
170
170
|
"type": "stdio",
|
|
171
171
|
"command": "npx",
|
|
172
|
-
"args": ["-y", "libofcongress-mcp-server@latest"],
|
|
172
|
+
"args": ["-y", "@cyanheads/libofcongress-mcp-server@latest"],
|
|
173
173
|
"env": {
|
|
174
174
|
"MCP_TRANSPORT_TYPE": "stdio",
|
|
175
175
|
"MCP_LOG_LEVEL": "info"
|
|
@@ -184,7 +184,7 @@ Or with Docker:
|
|
|
184
184
|
```json
|
|
185
185
|
{
|
|
186
186
|
"mcpServers": {
|
|
187
|
-
"libofcongress": {
|
|
187
|
+
"libofcongress-mcp-server": {
|
|
188
188
|
"type": "stdio",
|
|
189
189
|
"command": "docker",
|
|
190
190
|
"args": [
|
|
@@ -7,7 +7,7 @@ import { parseEnvConfig } from '@cyanheads/mcp-ts-core/config';
|
|
|
7
7
|
const ServerConfigSchema = z.object({
|
|
8
8
|
userAgent: z
|
|
9
9
|
.string()
|
|
10
|
-
.default('libofcongress-mcp-server/0.2.
|
|
10
|
+
.default('libofcongress-mcp-server/0.2.7')
|
|
11
11
|
.describe('User-Agent header sent with LOC API requests. LOC recommends a descriptive value for polite access.'),
|
|
12
12
|
requestDelayMs: z.coerce
|
|
13
13
|
.number()
|
|
@@ -20,16 +20,13 @@ export declare const locBrowseCollections: import("@cyanheads/mcp-ts-core").Tool
|
|
|
20
20
|
page: z.ZodNumber;
|
|
21
21
|
pages: z.ZodNumber;
|
|
22
22
|
has_next: z.ZodBoolean;
|
|
23
|
-
message: z.ZodOptional<z.ZodString>;
|
|
24
23
|
}, z.core.$strip>, readonly [{
|
|
25
|
-
readonly reason: "empty_results";
|
|
26
|
-
readonly code: JsonRpcErrorCode.NotFound;
|
|
27
|
-
readonly when: "No collections matched the keyword filter.";
|
|
28
|
-
readonly recovery: "Broaden the keyword or call without a query to list all LOC digital collections.";
|
|
29
|
-
}, {
|
|
30
24
|
readonly reason: "rate_limit_exceeded";
|
|
31
25
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
32
26
|
readonly when: "LOC API rate limit exceeded; requests are blocked for approximately 1 hour.";
|
|
33
27
|
readonly recovery: "Wait approximately 1 hour before retrying. Reduce request frequency to stay under 20 req/min.";
|
|
34
|
-
}]
|
|
28
|
+
}], {
|
|
29
|
+
readonly totalCount: z.ZodNumber;
|
|
30
|
+
readonly notice: z.ZodOptional<z.ZodString>;
|
|
31
|
+
}>;
|
|
35
32
|
//# sourceMappingURL=libofcongress-browse-collections.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libofcongress-browse-collections.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-browse-collections.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"libofcongress-browse-collections.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-browse-collections.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGjE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;EAkJ/B,CAAC"}
|
|
@@ -52,18 +52,21 @@ export const locBrowseCollections = tool('libofcongress_browse_collections', {
|
|
|
52
52
|
page: z.number().describe('Current 1-indexed page number.'),
|
|
53
53
|
pages: z.number().describe('Total number of pages available.'),
|
|
54
54
|
has_next: z.boolean().describe('True when more pages are available after this one.'),
|
|
55
|
-
|
|
55
|
+
}),
|
|
56
|
+
// Agent-facing success-path context — result count and empty-result guidance. Reaches
|
|
57
|
+
// both structuredContent and content[] automatically; kept out of the domain output.
|
|
58
|
+
// No effectiveQuery: query is optional (browse-all default) so the echo is N/A when absent.
|
|
59
|
+
// Keys are disjoint from output (total vs totalCount).
|
|
60
|
+
enrichment: {
|
|
61
|
+
totalCount: z
|
|
62
|
+
.number()
|
|
63
|
+
.describe('Total matching collections — mirrors output.total for agent reasoning.'),
|
|
64
|
+
notice: z
|
|
56
65
|
.string()
|
|
57
66
|
.optional()
|
|
58
|
-
.describe('Recovery hint when results are empty — suggests broadening the keyword. Absent on
|
|
59
|
-
}
|
|
67
|
+
.describe('Recovery hint when results are empty or a page is out of range — suggests broadening the keyword or removing filters. Absent on successful result pages.'),
|
|
68
|
+
},
|
|
60
69
|
errors: [
|
|
61
|
-
{
|
|
62
|
-
reason: 'empty_results',
|
|
63
|
-
code: JsonRpcErrorCode.NotFound,
|
|
64
|
-
when: 'No collections matched the keyword filter.',
|
|
65
|
-
recovery: 'Broaden the keyword or call without a query to list all LOC digital collections.',
|
|
66
|
-
},
|
|
67
70
|
{
|
|
68
71
|
reason: 'rate_limit_exceeded',
|
|
69
72
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
@@ -80,40 +83,23 @@ export const locBrowseCollections = tool('libofcongress_browse_collections', {
|
|
|
80
83
|
page: input.page,
|
|
81
84
|
}, ctx);
|
|
82
85
|
const { total, page, pages, hasNext } = result.pagination;
|
|
86
|
+
ctx.enrich.total(total);
|
|
83
87
|
if (result.items.length === 0) {
|
|
84
88
|
// Out-of-range page: service returned null (LOC 400) — pages is 0 here.
|
|
85
89
|
// Distinguish from a genuine empty result by checking page > 1.
|
|
86
90
|
if (page > 1 && pages === 0) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
total: 0,
|
|
90
|
-
page,
|
|
91
|
-
pages: 0,
|
|
92
|
-
has_next: false,
|
|
93
|
-
message: `Page ${page} is out of range. Try a smaller page number.`,
|
|
94
|
-
};
|
|
91
|
+
ctx.enrich.notice(`Page ${page} is out of range. Try a smaller page number.`);
|
|
92
|
+
return { collections: [], total: 0, page, pages: 0, has_next: false };
|
|
95
93
|
}
|
|
96
|
-
|
|
97
|
-
collections
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
pages: 0,
|
|
101
|
-
has_next: false,
|
|
102
|
-
message: input.query
|
|
103
|
-
? `No collections matched "${input.query}". Try a broader keyword or call without a query to list all LOC digital collections.`
|
|
104
|
-
: 'No collections found. The LOC collections endpoint may be temporarily unavailable.',
|
|
105
|
-
};
|
|
94
|
+
ctx.enrich.notice(input.query
|
|
95
|
+
? `No collections matched "${input.query}". Try a broader keyword or call without a query to list all LOC digital collections.`
|
|
96
|
+
: 'No collections found. The LOC collections endpoint may be temporarily unavailable.');
|
|
97
|
+
return { collections: [], total: 0, page, pages: 0, has_next: false };
|
|
106
98
|
}
|
|
107
99
|
// Detect contradictory pagination: LOC sometimes returns items on out-of-range pages.
|
|
108
100
|
if (pages > 0 && page > pages) {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
total,
|
|
112
|
-
page,
|
|
113
|
-
pages,
|
|
114
|
-
has_next: false,
|
|
115
|
-
message: `No results on page ${page} — there are ${pages} page(s) total (${total} collections). Use a page number between 1 and ${pages}.`,
|
|
116
|
-
};
|
|
101
|
+
ctx.enrich.notice(`No results on page ${page} — there are ${pages} page(s) total (${total} collections). Use a page number between 1 and ${pages}.`);
|
|
102
|
+
return { collections: [], total, page, pages, has_next: false };
|
|
117
103
|
}
|
|
118
104
|
return {
|
|
119
105
|
collections: result.items,
|
|
@@ -126,8 +112,6 @@ export const locBrowseCollections = tool('libofcongress_browse_collections', {
|
|
|
126
112
|
format: (result) => {
|
|
127
113
|
const lines = [];
|
|
128
114
|
lines.push(`**Total:** ${result.total} | **Page:** ${result.page} of ${result.pages} | **has_next:** ${result.has_next}`);
|
|
129
|
-
if (result.message)
|
|
130
|
-
lines.push(`\n> ${result.message}`);
|
|
131
115
|
for (const col of result.collections) {
|
|
132
116
|
lines.push(`\n## ${col.title}`);
|
|
133
117
|
lines.push(`**Slug:** ${col.slug}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libofcongress-browse-collections.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-browse-collections.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,kCAAkC,EAAE;IAC3E,KAAK,EAAE,wBAAwB;IAC/B,WAAW,EACT,gYAAgY;IAClY,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,8FAA8F,CAC/F;QACH,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,+DAA+D,CAAC;QAC5E,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,+CAA+C,CAAC;KAC7D,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,WAAW,EAAE,CAAC;aACX,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,sEAAsE,CAAC;YACnF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC9C,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,qDAAqD,CAAC;YAClE,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,2EAA2E,CAC5E;YACH,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;SACvD,CAAC;aACD,QAAQ,CAAC,0CAA0C,CAAC,CACxD;aACA,QAAQ,CACP,uGAAuG,CACxG;QACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;QACpF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC3D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC9D,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"libofcongress-browse-collections.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-browse-collections.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,5 +28,5 @@ export declare const locGetItem: import("@cyanheads/mcp-ts-core").ToolDefinition
|
|
|
28
28
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
29
29
|
readonly when: "LOC API rate limit exceeded; requests are blocked for approximately 1 hour.";
|
|
30
30
|
readonly recovery: "Wait approximately 1 hour before retrying. Reduce request frequency to stay under 20 req/min.";
|
|
31
|
-
}]>;
|
|
31
|
+
}], undefined>;
|
|
32
32
|
//# sourceMappingURL=libofcongress-get-item.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libofcongress-get-item.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-get-item.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAG3E,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"libofcongress-get-item.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-get-item.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAY,MAAM,+BAA+B,CAAC;AAG3E,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;cAuGrB,CAAC"}
|
|
@@ -25,5 +25,5 @@ export declare const locGetNewspaperPage: import("@cyanheads/mcp-ts-core").ToolD
|
|
|
25
25
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
26
26
|
readonly when: "LOC API rate limit exceeded; requests are blocked for approximately 1 hour.";
|
|
27
27
|
readonly recovery: "Wait approximately 1 hour before retrying. Reduce request frequency to stay under 20 req/min.";
|
|
28
|
-
}]>;
|
|
28
|
+
}], undefined>;
|
|
29
29
|
//# sourceMappingURL=libofcongress-get-newspaper-page.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libofcongress-get-newspaper-page.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-get-newspaper-page.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAA6B,MAAM,+BAA+B,CAAC;AAK5F,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"libofcongress-get-newspaper-page.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-get-newspaper-page.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAA6B,MAAM,+BAA+B,CAAC;AAK5F,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;cA2F9B,CAAC"}
|
|
@@ -25,16 +25,14 @@ export declare const locSearchNewspapers: import("@cyanheads/mcp-ts-core").ToolD
|
|
|
25
25
|
page: z.ZodNumber;
|
|
26
26
|
pages: z.ZodNumber;
|
|
27
27
|
has_next: z.ZodBoolean;
|
|
28
|
-
message: z.ZodOptional<z.ZodString>;
|
|
29
28
|
}, z.core.$strip>, readonly [{
|
|
30
|
-
readonly reason: "empty_results";
|
|
31
|
-
readonly code: JsonRpcErrorCode.NotFound;
|
|
32
|
-
readonly when: "No newspaper pages matched the query and filters.";
|
|
33
|
-
readonly recovery: "Broaden the date range, remove the state filter, or try different keywords. OCR search is approximate — spelling variations in historical text are common.";
|
|
34
|
-
}, {
|
|
35
29
|
readonly reason: "rate_limit_exceeded";
|
|
36
30
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
37
31
|
readonly when: "LOC API rate limit exceeded; requests are blocked for approximately 1 hour.";
|
|
38
32
|
readonly recovery: "Wait approximately 1 hour before retrying. Reduce request frequency to stay under 20 req/min.";
|
|
39
|
-
}]
|
|
33
|
+
}], {
|
|
34
|
+
readonly effectiveQuery: z.ZodString;
|
|
35
|
+
readonly totalCount: z.ZodNumber;
|
|
36
|
+
readonly notice: z.ZodOptional<z.ZodString>;
|
|
37
|
+
}>;
|
|
40
38
|
//# sourceMappingURL=libofcongress-search-newspapers.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libofcongress-search-newspapers.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search-newspapers.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,+BAA+B,CAAC;AAGlF,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"libofcongress-search-newspapers.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search-newspapers.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,+BAA+B,CAAC;AAGlF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4L9B,CAAC"}
|
|
@@ -69,18 +69,23 @@ export const locSearchNewspapers = tool('libofcongress_search_newspapers', {
|
|
|
69
69
|
page: z.number().describe('Current 1-indexed page number.'),
|
|
70
70
|
pages: z.number().describe('Total number of pages available.'),
|
|
71
71
|
has_next: z.boolean().describe('True when more pages are available after this one.'),
|
|
72
|
-
|
|
72
|
+
}),
|
|
73
|
+
// Agent-facing success-path context — query echo, result count, and empty-result
|
|
74
|
+
// guidance. Reaches both structuredContent and content[] automatically; kept out of
|
|
75
|
+
// the domain output. Keys are disjoint from output (total vs totalCount).
|
|
76
|
+
enrichment: {
|
|
77
|
+
effectiveQuery: z
|
|
78
|
+
.string()
|
|
79
|
+
.describe('The keyword query as submitted to the Chronicling America API, after trimming.'),
|
|
80
|
+
totalCount: z
|
|
81
|
+
.number()
|
|
82
|
+
.describe('Total matching newspaper pages — mirrors output.total for agent reasoning.'),
|
|
83
|
+
notice: z
|
|
73
84
|
.string()
|
|
74
85
|
.optional()
|
|
75
|
-
.describe('Recovery hint when results are empty — echoes
|
|
76
|
-
}
|
|
86
|
+
.describe('Recovery hint when results are empty or a page is out of range — echoes applied filters and suggests how to broaden. Absent on successful result pages.'),
|
|
87
|
+
},
|
|
77
88
|
errors: [
|
|
78
|
-
{
|
|
79
|
-
reason: 'empty_results',
|
|
80
|
-
code: JsonRpcErrorCode.NotFound,
|
|
81
|
-
when: 'No newspaper pages matched the query and filters.',
|
|
82
|
-
recovery: 'Broaden the date range, remove the state filter, or try different keywords. OCR search is approximate — spelling variations in historical text are common.',
|
|
83
|
-
},
|
|
84
89
|
{
|
|
85
90
|
reason: 'rate_limit_exceeded',
|
|
86
91
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
@@ -110,41 +115,25 @@ export const locSearchNewspapers = tool('libofcongress_search_newspapers', {
|
|
|
110
115
|
page: input.page,
|
|
111
116
|
}, ctx);
|
|
112
117
|
const { total, page, pages, hasNext } = result.pagination;
|
|
118
|
+
ctx.enrich.echo(input.query);
|
|
119
|
+
ctx.enrich.total(total);
|
|
113
120
|
if (result.items.length === 0) {
|
|
114
121
|
// pages === 0 is the sentinel for a LOC 400 (out-of-range page request).
|
|
115
122
|
if (pages === 0 && page > 1) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
total: 0,
|
|
119
|
-
page,
|
|
120
|
-
pages: 0,
|
|
121
|
-
has_next: false,
|
|
122
|
-
message: `Page ${page} is out of range for query "${input.query}". Try a smaller page number.`,
|
|
123
|
-
};
|
|
123
|
+
ctx.enrich.notice(`Page ${page} is out of range for query "${input.query}". Try a smaller page number.`);
|
|
124
|
+
return { items: [], total: 0, page, pages: 0, has_next: false };
|
|
124
125
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
(input.state ? ` in state "${input.state}"` : '') +
|
|
133
|
-
(input.date_start || input.date_end
|
|
134
|
-
? ` in dates ${input.date_start ?? ''}–${input.date_end ?? ''}`
|
|
135
|
-
: '') +
|
|
136
|
-
'. Try broadening the date range, removing the state filter, or using different keywords. Historical OCR is approximate — variant spellings are common.',
|
|
137
|
-
};
|
|
126
|
+
ctx.enrich.notice(`No newspaper pages matched "${input.query}"` +
|
|
127
|
+
(input.state ? ` in state "${input.state}"` : '') +
|
|
128
|
+
(input.date_start || input.date_end
|
|
129
|
+
? ` in dates ${input.date_start ?? ''}–${input.date_end ?? ''}`
|
|
130
|
+
: '') +
|
|
131
|
+
'. Try broadening the date range, removing the state filter, or using different keywords. Historical OCR is approximate — variant spellings are common.');
|
|
132
|
+
return { items: [], total: 0, page, pages: 0, has_next: false };
|
|
138
133
|
}
|
|
139
134
|
if (pages > 0 && page > pages) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
total,
|
|
143
|
-
page,
|
|
144
|
-
pages,
|
|
145
|
-
has_next: false,
|
|
146
|
-
message: `No results on page ${page} — query has ${pages} page(s) total (${total} items). Use a page number between 1 and ${pages}.`,
|
|
147
|
-
};
|
|
135
|
+
ctx.enrich.notice(`No results on page ${page} — query has ${pages} page(s) total (${total} items). Use a page number between 1 and ${pages}.`);
|
|
136
|
+
return { items: [], total, page, pages, has_next: false };
|
|
148
137
|
}
|
|
149
138
|
return {
|
|
150
139
|
items: result.items,
|
|
@@ -157,8 +146,6 @@ export const locSearchNewspapers = tool('libofcongress_search_newspapers', {
|
|
|
157
146
|
format: (result) => {
|
|
158
147
|
const lines = [];
|
|
159
148
|
lines.push(`**Total:** ${result.total} | **Page:** ${result.page} of ${result.pages} | **has_next:** ${result.has_next}`);
|
|
160
|
-
if (result.message)
|
|
161
|
-
lines.push(`\n> ${result.message}`);
|
|
162
149
|
for (const item of result.items) {
|
|
163
150
|
lines.push(`\n## ${item.title}`);
|
|
164
151
|
if (item.newspaper_title)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libofcongress-search-newspapers.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search-newspapers.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAEzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,iCAAiC,EAAE;IACzE,KAAK,EAAE,8BAA8B;IACrC,WAAW,EACT,6hBAA6hB;IAC/hB,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,CAAC;aACN,QAAQ,CAAC,wDAAwD,CAAC;QACrE,UAAU,EAAE,CAAC;aACV,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CAAC,8EAA8E,CAAC;QAC3F,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,EAAE;aACL,QAAQ,EAAE;aACV,QAAQ,CAAC,4EAA4E,CAAC;QACzF,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,qHAAqH,CACtH;QACH,eAAe,EAAE,CAAC;aACf,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,mEAAmE,CAAC;QAChF,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,GAAG,CAAC;aACR,OAAO,CAAC,EAAE,CAAC;aACX,QAAQ,CAAC,wCAAwC,CAAC;QACrD,IAAI,EAAE,CAAC;aACJ,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,OAAO,CAAC,CAAC,CAAC;aACV,QAAQ,CAAC,+CAA+C,CAAC;KAC7D,CAAC;IACF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,CAAC;aACL,KAAK,CACJ,CAAC;aACE,MAAM,CAAC;YACN,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,QAAQ,CACP,iGAAiG,CAClG;YACH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAClD,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yDAAyD,CAAC;YACtE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACjF,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;SAChF,CAAC;aACD,QAAQ,CAAC,wCAAwC,CAAC,CACtD;aACA,QAAQ,CAAC,+DAA+D,CAAC;QAC5E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;QACzF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC3D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC9D,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"libofcongress-search-newspapers.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search-newspapers.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* @module mcp-server/tools/definitions/libofcongress-search-subjects.tool
|
|
4
4
|
*/
|
|
5
5
|
import { z } from '@cyanheads/mcp-ts-core';
|
|
6
|
-
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
6
|
export declare const locSearchSubjects: import("@cyanheads/mcp-ts-core").ToolDefinition<z.ZodObject<{
|
|
8
7
|
query: z.ZodString;
|
|
9
8
|
limit: z.ZodDefault<z.ZodNumber>;
|
|
@@ -14,11 +13,8 @@ export declare const locSearchSubjects: import("@cyanheads/mcp-ts-core").ToolDef
|
|
|
14
13
|
count: z.ZodOptional<z.ZodNumber>;
|
|
15
14
|
}, z.core.$strip>>;
|
|
16
15
|
total: z.ZodNumber;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
readonly
|
|
20
|
-
|
|
21
|
-
readonly when: "No LCSH headings matched the query.";
|
|
22
|
-
readonly recovery: "Try broader or different terms. LCSH uses inverted forms for many headings (e.g., \"Photography, Aerial\" not \"Aerial photography\").";
|
|
23
|
-
}]>;
|
|
16
|
+
}, z.core.$strip>, undefined, {
|
|
17
|
+
readonly effectiveQuery: z.ZodString;
|
|
18
|
+
readonly notice: z.ZodOptional<z.ZodString>;
|
|
19
|
+
}>;
|
|
24
20
|
//# sourceMappingURL=libofcongress-search-subjects.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libofcongress-search-subjects.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search-subjects.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"libofcongress-search-subjects.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search-subjects.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAGjD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;EA6F5B,CAAC"}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* @module mcp-server/tools/definitions/libofcongress-search-subjects.tool
|
|
4
4
|
*/
|
|
5
5
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
6
|
-
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
7
6
|
import { getLcLinkedDataService } from '../../../services/lc-linked-data/lc-linked-data-service.js';
|
|
8
7
|
export const locSearchSubjects = tool('libofcongress_search_subjects', {
|
|
9
8
|
title: 'Search LC Subject Headings',
|
|
@@ -41,29 +40,26 @@ export const locSearchSubjects = tool('libofcongress_search_subjects', {
|
|
|
41
40
|
.describe('A single LCSH subject heading record.'))
|
|
42
41
|
.describe('LCSH subject headings matching the query, ordered by relevance.'),
|
|
43
42
|
total: z.number().describe('Number of subject headings returned.'),
|
|
44
|
-
|
|
43
|
+
}),
|
|
44
|
+
// Agent-facing success-path context — query echo and empty-result guidance. Reaches
|
|
45
|
+
// both structuredContent and content[] automatically; kept out of the domain output.
|
|
46
|
+
enrichment: {
|
|
47
|
+
effectiveQuery: z
|
|
48
|
+
.string()
|
|
49
|
+
.describe('The keyword query as submitted to the id.loc.gov suggest endpoint, after trimming.'),
|
|
50
|
+
notice: z
|
|
45
51
|
.string()
|
|
46
52
|
.optional()
|
|
47
|
-
.describe('Recovery hint when results are empty — suggests alternative search strategies. Absent on non-empty
|
|
48
|
-
}
|
|
49
|
-
errors: [
|
|
50
|
-
{
|
|
51
|
-
reason: 'empty_results',
|
|
52
|
-
code: JsonRpcErrorCode.NotFound,
|
|
53
|
-
when: 'No LCSH headings matched the query.',
|
|
54
|
-
recovery: 'Try broader or different terms. LCSH uses inverted forms for many headings (e.g., "Photography, Aerial" not "Aerial photography").',
|
|
55
|
-
},
|
|
56
|
-
],
|
|
53
|
+
.describe('Recovery hint when results are empty — suggests alternative LCSH search strategies. Absent on non-empty results.'),
|
|
54
|
+
},
|
|
57
55
|
async handler(input, ctx) {
|
|
58
56
|
ctx.log.info('libofcongress_search_subjects', { query: input.query, limit: input.limit });
|
|
59
57
|
const svc = getLcLinkedDataService();
|
|
60
58
|
const subjects = await svc.searchSubjects(input.query, input.limit, ctx);
|
|
59
|
+
ctx.enrich.echo(input.query);
|
|
61
60
|
if (subjects.length === 0) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
total: 0,
|
|
65
|
-
message: `No LCSH headings matched "${input.query}". Try broader or different terms. LCSH uses inverted forms for many headings — for example, "Photography, Aerial" instead of "Aerial photography", or "World War, 1939-1945" instead of "World War II".`,
|
|
66
|
-
};
|
|
61
|
+
ctx.enrich.notice(`No LCSH headings matched "${input.query}". Try broader or different terms. LCSH uses inverted forms for many headings — for example, "Photography, Aerial" instead of "Aerial photography", or "World War, 1939-1945" instead of "World War II".`);
|
|
62
|
+
return { subjects: [], total: 0 };
|
|
67
63
|
}
|
|
68
64
|
return {
|
|
69
65
|
subjects,
|
|
@@ -73,8 +69,6 @@ export const locSearchSubjects = tool('libofcongress_search_subjects', {
|
|
|
73
69
|
format: (result) => {
|
|
74
70
|
const lines = [];
|
|
75
71
|
lines.push(`**${result.total} subject heading(s) found**`);
|
|
76
|
-
if (result.message)
|
|
77
|
-
lines.push(`\n> ${result.message}`);
|
|
78
72
|
for (const s of result.subjects) {
|
|
79
73
|
lines.push(`\n## ${s.label}`);
|
|
80
74
|
lines.push(`**URI:** ${s.uri}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libofcongress-search-subjects.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search-subjects.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"libofcongress-search-subjects.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search-subjects.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,16 +35,14 @@ export declare const locSearch: import("@cyanheads/mcp-ts-core").ToolDefinition<
|
|
|
35
35
|
page: z.ZodNumber;
|
|
36
36
|
pages: z.ZodNumber;
|
|
37
37
|
has_next: z.ZodBoolean;
|
|
38
|
-
message: z.ZodOptional<z.ZodString>;
|
|
39
38
|
}, z.core.$strip>, readonly [{
|
|
40
|
-
readonly reason: "empty_results";
|
|
41
|
-
readonly code: JsonRpcErrorCode.NotFound;
|
|
42
|
-
readonly when: "No items matched the query and filters.";
|
|
43
|
-
readonly recovery: "Broaden the query, widen the date range, or use libofcongress_search_subjects to find the correct subject heading spelling.";
|
|
44
|
-
}, {
|
|
45
39
|
readonly reason: "rate_limit_exceeded";
|
|
46
40
|
readonly code: JsonRpcErrorCode.ServiceUnavailable;
|
|
47
41
|
readonly when: "LOC API rate limit exceeded; requests are blocked for approximately 1 hour.";
|
|
48
42
|
readonly recovery: "Wait approximately 1 hour before retrying. Reduce request frequency to stay under 20 req/min.";
|
|
49
|
-
}]
|
|
43
|
+
}], {
|
|
44
|
+
readonly effectiveQuery: z.ZodString;
|
|
45
|
+
readonly totalCount: z.ZodNumber;
|
|
46
|
+
readonly notice: z.ZodOptional<z.ZodString>;
|
|
47
|
+
}>;
|
|
50
48
|
//# sourceMappingURL=libofcongress-search.tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libofcongress-search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,+BAA+B,CAAC;AAGlF,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"libofcongress-search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search.tool.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,+BAA+B,CAAC;AAGlF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqMpB,CAAC"}
|
|
@@ -73,18 +73,21 @@ export const locSearch = tool('libofcongress_search', {
|
|
|
73
73
|
page: z.number().describe('Current 1-indexed page number.'),
|
|
74
74
|
pages: z.number().describe('Total number of pages available.'),
|
|
75
75
|
has_next: z.boolean().describe('True when more pages are available after this one.'),
|
|
76
|
-
|
|
76
|
+
}),
|
|
77
|
+
// Agent-facing success-path context — query echo, result count, and empty-result
|
|
78
|
+
// guidance. Reaches both structuredContent and content[] automatically; kept out of
|
|
79
|
+
// the domain output. Keys are disjoint from output (total vs totalCount).
|
|
80
|
+
enrichment: {
|
|
81
|
+
effectiveQuery: z.string().describe('The query as submitted to the LOC API, after trimming.'),
|
|
82
|
+
totalCount: z
|
|
83
|
+
.number()
|
|
84
|
+
.describe('Total matching items across all pages — mirrors output.total for agent reasoning.'),
|
|
85
|
+
notice: z
|
|
77
86
|
.string()
|
|
78
87
|
.optional()
|
|
79
|
-
.describe('Recovery hint when results are empty — echoes
|
|
80
|
-
}
|
|
88
|
+
.describe('Recovery hint when results are empty or a page is out of range — echoes applied filters and suggests how to broaden. Absent on successful result pages.'),
|
|
89
|
+
},
|
|
81
90
|
errors: [
|
|
82
|
-
{
|
|
83
|
-
reason: 'empty_results',
|
|
84
|
-
code: JsonRpcErrorCode.NotFound,
|
|
85
|
-
when: 'No items matched the query and filters.',
|
|
86
|
-
recovery: 'Broaden the query, widen the date range, or use libofcongress_search_subjects to find the correct subject heading spelling.',
|
|
87
|
-
},
|
|
88
91
|
{
|
|
89
92
|
reason: 'rate_limit_exceeded',
|
|
90
93
|
code: JsonRpcErrorCode.ServiceUnavailable,
|
|
@@ -115,43 +118,27 @@ export const locSearch = tool('libofcongress_search', {
|
|
|
115
118
|
page: input.page,
|
|
116
119
|
}, ctx);
|
|
117
120
|
const { total, page, pages, hasNext } = result.pagination;
|
|
121
|
+
ctx.enrich.echo(input.query);
|
|
122
|
+
ctx.enrich.total(total);
|
|
118
123
|
if (result.items.length === 0) {
|
|
119
124
|
// pages === 0 is the sentinel for a LOC 400 (out-of-range page request).
|
|
120
125
|
if (pages === 0 && page > 1) {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
total: 0,
|
|
124
|
-
page,
|
|
125
|
-
pages: 0,
|
|
126
|
-
has_next: false,
|
|
127
|
-
message: `Page ${page} is out of range for query "${input.query}". Try a smaller page number.`,
|
|
128
|
-
};
|
|
126
|
+
ctx.enrich.notice(`Page ${page} is out of range for query "${input.query}". Try a smaller page number.`);
|
|
127
|
+
return { items: [], total: 0, page, pages: 0, has_next: false };
|
|
129
128
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
(input.format ? ` with format "${input.format}"` : '') +
|
|
138
|
-
(input.date_start || input.date_end
|
|
139
|
-
? ` in dates ${input.date_start ?? ''}–${input.date_end ?? ''}`
|
|
140
|
-
: '') +
|
|
141
|
-
'. Try broadening the query, widening the date range, or running libofcongress_search_subjects to find the exact subject heading.',
|
|
142
|
-
};
|
|
129
|
+
ctx.enrich.notice(`No items matched "${input.query}"` +
|
|
130
|
+
(input.format ? ` with format "${input.format}"` : '') +
|
|
131
|
+
(input.date_start || input.date_end
|
|
132
|
+
? ` in dates ${input.date_start ?? ''}–${input.date_end ?? ''}`
|
|
133
|
+
: '') +
|
|
134
|
+
'. Try broadening the query, widening the date range, or running libofcongress_search_subjects to find the exact subject heading.');
|
|
135
|
+
return { items: [], total: 0, page, pages: 0, has_next: false };
|
|
143
136
|
}
|
|
144
137
|
// Detect contradictory pagination: LOC sometimes returns items on out-of-range pages.
|
|
145
138
|
// Surface a clear message rather than a confusing "Page 999 of 26" display.
|
|
146
139
|
if (pages > 0 && page > pages) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
total,
|
|
150
|
-
page,
|
|
151
|
-
pages,
|
|
152
|
-
has_next: false,
|
|
153
|
-
message: `No results on page ${page} — query has ${pages} page(s) total (${total} items). Use a page number between 1 and ${pages}.`,
|
|
154
|
-
};
|
|
140
|
+
ctx.enrich.notice(`No results on page ${page} — query has ${pages} page(s) total (${total} items). Use a page number between 1 and ${pages}.`);
|
|
141
|
+
return { items: [], total, page, pages, has_next: false };
|
|
155
142
|
}
|
|
156
143
|
return {
|
|
157
144
|
items: result.items,
|
|
@@ -164,8 +151,6 @@ export const locSearch = tool('libofcongress_search', {
|
|
|
164
151
|
format: (result) => {
|
|
165
152
|
const lines = [];
|
|
166
153
|
lines.push(`**Total:** ${result.total} | **Page:** ${result.page} of ${result.pages} | **has_next:** ${result.has_next}`);
|
|
167
|
-
if (result.message)
|
|
168
|
-
lines.push(`\n> ${result.message}`);
|
|
169
154
|
for (const item of result.items) {
|
|
170
155
|
lines.push(`\n## ${item.title}`);
|
|
171
156
|
lines.push(`**ID:** ${item.id}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libofcongress-search.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search.tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"libofcongress-search.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/libofcongress-search.tool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/libofcongress-mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.7",
|
|
4
4
|
"mcpName": "io.github.cyanheads/libofcongress-mcp-server",
|
|
5
5
|
"description": "Search LOC digital collections, browse Chronicling America newspapers with full OCR text, and look up LC Subject Headings via MCP. STDIO or Streamable HTTP.",
|
|
6
6
|
"type": "module",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/libofcongress-mcp-server.mcpb",
|
|
26
26
|
"changelog:build": "bun run scripts/build-changelog.ts",
|
|
27
27
|
"changelog:check": "bun run scripts/build-changelog.ts --check",
|
|
28
|
+
"release:github": "bun run scripts/release-github.ts",
|
|
28
29
|
"test": "bunx vitest run",
|
|
29
30
|
"start:stdio": "MCP_TRANSPORT_TYPE=stdio bun ./dist/index.js",
|
|
30
31
|
"start:http": "MCP_TRANSPORT_TYPE=http bun ./dist/index.js"
|
|
@@ -75,7 +76,7 @@
|
|
|
75
76
|
"access": "public"
|
|
76
77
|
},
|
|
77
78
|
"dependencies": {
|
|
78
|
-
"@cyanheads/mcp-ts-core": "^0.9.
|
|
79
|
+
"@cyanheads/mcp-ts-core": "^0.9.21",
|
|
79
80
|
"pino-pretty": "^13.1.3",
|
|
80
81
|
"zod": "^4.4.3"
|
|
81
82
|
},
|
|
@@ -86,6 +87,6 @@
|
|
|
86
87
|
"ignore": "^7.0.5",
|
|
87
88
|
"tsc-alias": "^1.8.17",
|
|
88
89
|
"typescript": "^6.0.3",
|
|
89
|
-
"vitest": "^4.1.
|
|
90
|
+
"vitest": "^4.1.8"
|
|
90
91
|
}
|
|
91
92
|
}
|
package/server.json
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/libofcongress-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.2.
|
|
9
|
+
"version": "0.2.7",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
14
|
"identifier": "@cyanheads/libofcongress-mcp-server",
|
|
15
15
|
"runtimeHint": "bun",
|
|
16
|
-
"version": "0.2.
|
|
16
|
+
"version": "0.2.7",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{
|
|
19
19
|
"type": "positional",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"description": "User-Agent header sent with LOC API requests. LOC recommends a descriptive value for polite access.",
|
|
31
31
|
"format": "string",
|
|
32
32
|
"isRequired": false,
|
|
33
|
-
"default": "libofcongress-mcp-server/0.2.
|
|
33
|
+
"default": "libofcongress-mcp-server/0.2.7"
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
"name": "LOC_REQUEST_DELAY_MS",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
57
57
|
"identifier": "@cyanheads/libofcongress-mcp-server",
|
|
58
58
|
"runtimeHint": "bun",
|
|
59
|
-
"version": "0.2.
|
|
59
|
+
"version": "0.2.7",
|
|
60
60
|
"packageArguments": [
|
|
61
61
|
{
|
|
62
62
|
"type": "positional",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"description": "User-Agent header sent with LOC API requests. LOC recommends a descriptive value for polite access.",
|
|
74
74
|
"format": "string",
|
|
75
75
|
"isRequired": false,
|
|
76
|
-
"default": "libofcongress-mcp-server/0.2.
|
|
76
|
+
"default": "libofcongress-mcp-server/0.2.7"
|
|
77
77
|
},
|
|
78
78
|
{
|
|
79
79
|
"name": "LOC_REQUEST_DELAY_MS",
|