@cyanheads/openalex-mcp-server 0.6.0 → 0.6.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  # Agent Protocol
2
2
 
3
3
  **Server:** openalex-mcp-server
4
- **Version:** 0.6.0
4
+ **Version:** 0.6.1
5
5
  **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
6
6
 
7
7
  > **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
@@ -97,8 +97,9 @@ export const resolveNameTool = tool('openalex_resolve_name', {
97
97
  // Different clients forward different surfaces (Claude Code → structuredContent,
98
98
  // Claude Desktop → content[]); both must carry the same data.
99
99
  // Enforced at lint time: every terminal field in `output` must appear in format()'s
100
- // rendered text via sentinel injection. Avoid `.toLocaleString()` on linted numbers —
101
- // comma-formatted values (900,000,001) won't match the raw sentinel (900000001).
100
+ // rendered text via sentinel injection. The linter is locale-aware — digit-group
101
+ // separators (commas, periods, spaces) are stripped before matching, so
102
+ // `.toLocaleString()` is fine on linted numbers. Compact/scientific forms still fail.
102
103
  format: (result) => {
103
104
  if (result.results.length === 0) {
104
105
  return [{ type: 'text', text: 'No matches found.' }];
@@ -289,7 +290,7 @@ import { getOpenAlexService } from '@/services/openalex/openalex-service.js';
289
290
 
290
291
  - [ ] Zod schemas: all fields have `.describe()`, only JSON-Schema-serializable types (no `z.custom()`, `z.date()`, `z.transform()`, etc.)
291
292
  - [ ] Optional nested objects: handler guards for empty inner values from form-based clients (`if (input.obj?.field && ...)`, not just `if (input.obj)`)
292
- - [ ] `format()` renders every terminal field in `output` — enforced by `format-parity` linter via sentinel injection; avoid `.toLocaleString()` on linted numbers
293
+ - [ ] `format()` renders every terminal field in `output` — enforced by `format-parity` linter via sentinel injection (locale-aware: digit-group separators stripped before matching)
293
294
  - [ ] JSDoc `@fileoverview` + `@module` on every file
294
295
  - [ ] `ctx.log` for logging, `ctx.state` for storage
295
296
  - [ ] Handlers throw on failure — error factories or plain `Error`, no try/catch
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  <div align="center">
8
8
 
9
- [![Version](https://img.shields.io/badge/Version-0.6.0-blue.svg?style=flat-square)](./CHANGELOG.md) [![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-259?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/)
9
+ [![Version](https://img.shields.io/badge/Version-0.6.1-blue.svg?style=flat-square)](./CHANGELOG.md) [![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-259?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/)
10
10
 
11
11
  </div>
12
12
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyanheads/openalex-mcp-server",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "Access the OpenAlex academic research catalog - 270M+ publications through MCP. STDIO & Streamable HTTP.",
5
5
  "mcpName": "io.github.cyanheads/openalex-mcp-server",
6
6
  "type": "module",
@@ -70,7 +70,7 @@
70
70
  "access": "public"
71
71
  },
72
72
  "dependencies": {
73
- "@cyanheads/mcp-ts-core": "^0.6.17",
73
+ "@cyanheads/mcp-ts-core": "^0.7.0",
74
74
  "pino-pretty": "^13.1.3"
75
75
  },
76
76
  "devDependencies": {
package/server.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/cyanheads/openalex-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.6.0",
9
+ "version": "0.6.1",
10
10
  "remotes": [
11
11
  {
12
12
  "type": "streamable-http",
@@ -19,7 +19,7 @@
19
19
  "registryBaseUrl": "https://registry.npmjs.org",
20
20
  "identifier": "@cyanheads/openalex-mcp-server",
21
21
  "runtimeHint": "node",
22
- "version": "0.6.0",
22
+ "version": "0.6.1",
23
23
  "packageArguments": [
24
24
  {
25
25
  "type": "positional",
@@ -61,7 +61,7 @@
61
61
  "registryBaseUrl": "https://registry.npmjs.org",
62
62
  "identifier": "@cyanheads/openalex-mcp-server",
63
63
  "runtimeHint": "node",
64
- "version": "0.6.0",
64
+ "version": "0.6.1",
65
65
  "packageArguments": [
66
66
  {
67
67
  "type": "positional",