@kaminari-ad/mcp 0.24.1 → 0.24.2

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/CHANGELOG.md CHANGED
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.24.2] - 2026-10-03
11
+
12
+ ### Added
13
+
14
+ - **Listed in the official MCP Registry.** Every release tag now publishes
15
+ `server.json` to `registry.modelcontextprotocol.io` as
16
+ `io.github.kaminari-ad/mcp`, with both the npm package and the hosted
17
+ `https://mcp.kaminari.ad/mcp` endpoint. `package.json` carries the matching
18
+ `mcpName` the registry uses to verify package ownership.
19
+
20
+ ### Fixed
21
+
22
+ - **README privacy link.** It pointed at `kaminari.ad/legal/privacy`, which
23
+ returns 404; it now points at `kaminari.ad/privacy`.
24
+ - **npm homepage** now points at `https://kaminari.ad/mcp` instead of the
25
+ GitHub repository.
26
+
10
27
  ## [0.24.1] - 2026-10-02
11
28
 
12
29
  ### Fixed
package/README.md CHANGED
@@ -10,7 +10,7 @@ Lets AI agents (Cursor, Claude Desktop, Cline, and any MCP-compatible client) la
10
10
  [![node](https://img.shields.io/node/v/@kaminari-ad/mcp)](https://nodejs.org)
11
11
  [![CI](https://github.com/kaminari-ad/mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/kaminari-ad/mcp/actions/workflows/ci.yml)
12
12
  [![Provenance](https://img.shields.io/npm/v/@kaminari-ad/mcp?label=provenance&logo=github)](https://www.npmjs.com/package/@kaminari-ad/mcp)
13
- [![MCP Registry](https://img.shields.io/badge/MCP_Registry-listed-blue)](https://registry.modelcontextprotocol.io)
13
+ [![MCP Registry](https://img.shields.io/badge/MCP_Registry-listed-blue)](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.kaminari-ad/mcp)
14
14
 
15
15
  ## Install (one click)
16
16
 
@@ -18,6 +18,8 @@ Lets AI agents (Cursor, Claude Desktop, Cline, and any MCP-compatible client) la
18
18
 
19
19
  <a href="https://kaminari.ad/mcp/install"><img alt="Install in Cursor" src="https://cursor.com/deeplink/mcp-install-dark.png" height="32" /></a>
20
20
 
21
+ What the server can do and how to connect any client: [Kaminari Ad MCP overview](https://kaminari.ad/mcp).
22
+
21
23
  ### Claude Desktop
22
24
 
23
25
  [**Download `kaminari-ad-mcp.mcpb`**](https://github.com/kaminari-ad/mcp/releases/latest/download/kaminari-ad-mcp.mcpb) → double-click to install. Claude Desktop shows a config form for your API key.
@@ -182,7 +184,7 @@ npm run lint && npm run typecheck && npm test
182
184
 
183
185
  See [CONTRIBUTING.md](CONTRIBUTING.md) for the development workflow and how to add a tool.
184
186
 
185
- > The maintainers run the full development gate (integration tests, deploy automation, prod smoke) on a private GitLab instance and mirror the repo to GitHub. The public CI on GitHub Actions ([`.github/workflows/ci.yml`](.github/workflows/ci.yml)) runs lint + typecheck + unit tests + build + bundle-size check on every community PR, so contributors get fast green/red feedback without needing access to the internal infra. Tag pushes (`v*.*.*`) trigger [`.github/workflows/release.yml`](.github/workflows/release.yml), which publishes the package to npm with OIDC provenance and creates the GitHub Release.
187
+ > The maintainers run the full development gate (integration tests, deploy automation, prod smoke) on a private GitLab instance and mirror the repo to GitHub. The public CI on GitHub Actions ([`.github/workflows/ci.yml`](.github/workflows/ci.yml)) runs lint + typecheck + unit tests + build + bundle-size check on every community PR, so contributors get fast green/red feedback without needing access to the internal infra. Tag pushes (`v*.*.*`) trigger [`.github/workflows/release.yml`](.github/workflows/release.yml), which publishes the package to npm with OIDC provenance, creates the GitHub Release and publishes [`server.json`](server.json) to the official MCP Registry.
186
188
 
187
189
  ---
188
190
 
@@ -202,12 +204,20 @@ We follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html) for the two
202
204
  ## Privacy
203
205
 
204
206
  - **Data collected by the MCP server itself:** none beyond the `Authorization` header it forwards. The HTTP transport is stateless — no sessions are persisted; each request is authenticated independently by its own Bearer. The only in-memory state is the leaky-bucket rate limiter keyed by `sha256(bearer)`.
205
- - **Data forwarded to Kaminari Ad:** every tool call is a thin pass-through to `/api/v1` over HTTPS. The Kaminari Ad privacy policy applies: [https://kaminari.ad/legal/privacy](https://kaminari.ad/legal/privacy).
207
+ - **Data forwarded to Kaminari Ad:** every tool call is a thin pass-through to `/api/v1` over HTTPS. The Kaminari Ad privacy policy applies: [https://kaminari.ad/privacy](https://kaminari.ad/privacy).
206
208
  - **Logs:** structured pino output, JSON in HTTP mode. The full Bearer token is redacted; only `bearer_hash = sha256(token).slice(0,8)` makes it into a log line, alongside `request_id`, `tool_name`, `api_status`, `elapsed_ms`. Tool inputs (which may contain customer scan IDs / URLs) are NOT logged.
207
209
  - **Telemetry:** none. The OSS build ships a `NoopErrorReporter`. We do not bundle Sentry, OpenTelemetry exporters, or PostHog.
208
210
 
209
211
  To report a security or privacy issue, see [SECURITY.md](SECURITY.md).
210
212
 
213
+ ## Learn more
214
+
215
+ - [Kaminari Ad MCP overview](https://kaminari.ad/mcp) — what agents can do with the server, with setup for every client.
216
+ - [MCP server developer docs](https://kaminari.ad/docs/developers/mcp-server) — transports, authentication and OAuth connected apps.
217
+ - [REST API quickstart](https://kaminari.ad/docs/developers/rest-quickstart) — the `/api/v1` surface every tool calls.
218
+ - [Malvertising, auto-redirect and cloaking detections](https://kaminari.ad/detections) — what a scan verdict can flag.
219
+ - [DarkSword in the ad stack: an iOS exploit chain](https://kaminari.ad/blog/darksword-ios-exploit-chain-in-ad-traffic) — research from the Kaminari Ad team.
220
+
211
221
  ## License
212
222
 
213
223
  MIT — see [LICENSE](LICENSE).
package/dist/bin.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { NAME, VERSION, err, ok } from './chunk-3G2F3FOW.js';
2
+ import { NAME, VERSION, err, ok } from './chunk-4P6CNASK.js';
3
3
  import process from 'process';
4
4
  import { z } from 'zod';
5
5
 
@@ -162,10 +162,10 @@ async function main() {
162
162
  }
163
163
  const config = configResult.value;
164
164
  if (config.transport === "stdio") {
165
- const { bootstrapStdio } = await import('./stdio-bootstrap-VGOUNXAK.js');
165
+ const { bootstrapStdio } = await import('./stdio-bootstrap-M4TOIBTL.js');
166
166
  return bootstrapStdio(config);
167
167
  }
168
- const { bootstrapHttp } = await import('./http-bootstrap-6PQSTYXB.js');
168
+ const { bootstrapHttp } = await import('./http-bootstrap-KBFALUIO.js');
169
169
  return bootstrapHttp(config);
170
170
  }
171
171
  main().then(
@@ -3,8 +3,8 @@ export { err, ok } from 'neverthrow';
3
3
 
4
4
  // src/shared/version.ts
5
5
  var NAME = "@kaminari-ad/mcp";
6
- var VERSION = "0.24.1";
6
+ var VERSION = "0.24.2";
7
7
 
8
8
  export { NAME, VERSION };
9
- //# sourceMappingURL=chunk-3G2F3FOW.js.map
10
- //# sourceMappingURL=chunk-3G2F3FOW.js.map
9
+ //# sourceMappingURL=chunk-4P6CNASK.js.map
10
+ //# sourceMappingURL=chunk-4P6CNASK.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/shared/version.ts"],"names":[],"mappings":";;;;AASO,IAAM,IAAA,GAAO;AACb,IAAM,OAAA,GAAU","file":"chunk-3G2F3FOW.js","sourcesContent":["/**\n * Package version and name. Hard-coded as constants here, asserted to\n * match `package.json` by a unit test.\n *\n * Why not import `package.json`: it would force JSON-module support at\n * runtime and tsup-bundling would inline the entire manifest. Two\n * constants + one assertion test is simpler and gives the same safety.\n */\n\nexport const NAME = \"@kaminari-ad/mcp\";\nexport const VERSION = \"0.24.1\";\n"]}
1
+ {"version":3,"sources":["../src/shared/version.ts"],"names":[],"mappings":";;;;AASO,IAAM,IAAA,GAAO;AACb,IAAM,OAAA,GAAU","file":"chunk-4P6CNASK.js","sourcesContent":["/**\n * Package version and name. Hard-coded as constants here, asserted to\n * match `package.json` by a unit test.\n *\n * Why not import `package.json`: it would force JSON-module support at\n * runtime and tsup-bundling would inline the entire manifest. Two\n * constants + one assertion test is simpler and gives the same safety.\n */\n\nexport const NAME = \"@kaminari-ad/mcp\";\nexport const VERSION = \"0.24.2\";\n"]}
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { err, ok } from './chunk-3G2F3FOW.js';
2
+ import { err, ok } from './chunk-4P6CNASK.js';
3
3
  import { createHash, randomUUID } from 'crypto';
4
4
  import createClient from 'openapi-fetch';
5
5
  import { fetch } from 'undici';
@@ -6387,5 +6387,5 @@ function formatToolError(error) {
6387
6387
  }
6388
6388
 
6389
6389
  export { BearerToken, SERVER_INSTRUCTIONS, createHttpApiGateway, createPinoLogger, declareEmptyResourcesAndPrompts, newRequestId, wireToolsIntoMcpServer };
6390
- //# sourceMappingURL=chunk-LPABQWHJ.js.map
6391
- //# sourceMappingURL=chunk-LPABQWHJ.js.map
6390
+ //# sourceMappingURL=chunk-GPJ6BQNP.js.map
6391
+ //# sourceMappingURL=chunk-GPJ6BQNP.js.map