@cite42/mcp 0.6.0 → 0.6.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/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  MCP server for [Cite42, the AI search visibility, SEO keyword & trends API](https://www.cite42.dev): market research tools for your AI agent.
6
6
 
7
- Once connected, Claude Code, Claude Desktop, Codex CLI, or Cursor can:
7
+ Once connected, Claude Code, Claude Desktop, Codex CLI, Cursor, or ChatGPT can:
8
8
 
9
9
  - **Query AI models** (ChatGPT, Claude, Perplexity, Gemini, Google AI Overviews) and see each model's answer and the sources it cites
10
10
  - **Track brand visibility** in AI answers: rankings, head-to-head comparisons, and sentiment
@@ -18,53 +18,63 @@ Once connected, Claude Code, Claude Desktop, Codex CLI, or Cursor can:
18
18
  ## Requirements
19
19
 
20
20
  - **A Cite42 account**, free to create at [cite42.dev](https://www.cite42.dev)
21
- - **Node.js 22.13 or newer and a Cite42 API key** for Claude Code, Codex CLI, and Cursor
21
+ - For the API-key setup only: **Node.js 22.13 or newer and a Cite42 API key**
22
22
 
23
23
  ## Installation
24
24
 
25
- Claude Desktop connects to Cite42 through the hosted remote MCP URL and OAuth. Claude Code, Codex CLI, and Cursor run this package on demand with `npx -y @cite42/mcp`.
25
+ Most clients connect to the hosted server at `https://mcp.cite42.dev` and sign in with your Cite42 account in the browser. There is no API key to create or paste, and nothing to install locally. For CI, servers, or machines without a browser, run this package with an API key instead; see [API key setup](#api-key-setup-ci-servers-no-browser).
26
26
 
27
- ### Step 1: Get your API key for local clients
27
+ ### Claude Code
28
28
 
29
- Skip this step for Claude Desktop; its hosted connector authorizes through sign-in.
30
-
31
- 1. Sign in at [cite42.dev](https://www.cite42.dev)
32
- 2. Open **Dashboard → API Keys**: [www.cite42.dev/app/keys](https://www.cite42.dev/app/keys)
33
- 3. Create a key and copy it (it looks like `cite42_live_...`)
34
-
35
- ### Step 2: Add the server to your client
29
+ ```bash
30
+ claude mcp add --transport http --scope user cite42 https://mcp.cite42.dev && claude mcp login cite42
31
+ ```
36
32
 
37
- Pick **one** of the clients below. For Claude Code, Codex CLI, and Cursor, replace `cite42_live_your_key_here` with your real key.
33
+ Your browser opens to sign in. Then start Claude Code, or restart it if it was already open, and check with `/mcp`.
38
34
 
39
- #### Claude Code
35
+ ### Codex CLI
40
36
 
41
37
  ```bash
42
- claude mcp add cite42 -e CITE42_API_KEY=cite42_live_your_key_here -- npx -y @cite42/mcp
38
+ codex mcp add cite42 --url https://mcp.cite42.dev
43
39
  ```
44
40
 
45
- #### Claude Desktop
41
+ Codex opens your browser to sign in. If it doesn't, run `codex mcp login cite42`. Then start a new session.
42
+
43
+ ### Cursor
46
44
 
47
- 1. Open **Settings → Connectors** and click **Add**.
48
- 2. Select **Add custom connector**.
49
- 3. Enter **Cite42** for the name and paste this remote MCP URL:
45
+ [Add to Cursor](https://cursor.com/install-mcp?name=cite42&config=eyJ1cmwiOiJodHRwczovL21jcC5jaXRlNDIuZGV2In0%3D), or add this under **Settings → MCP**, or in `~/.cursor/mcp.json`:
50
46
 
51
- ```text
52
- https://mcp.cite42.dev
47
+ ```json
48
+ {
49
+ "mcpServers": {
50
+ "cite42": { "url": "https://mcp.cite42.dev" }
51
+ }
52
+ }
53
53
  ```
54
54
 
55
- 4. Click **Connect** and complete the Cite42 sign-in. No API key is required.
55
+ Sign in with your Cite42 account when Cursor asks.
56
56
 
57
- The same hosted-connector steps apply in Claude.ai.
57
+ ### Claude Desktop and Claude.ai
58
58
 
59
- #### Codex CLI
59
+ [Add to Claude](https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Cite42&connectorUrl=https%3A%2F%2Fmcp.cite42.dev) opens the connector dialog with Cite42 filled in. Or open **Settings → Connectors → Add custom connector**, name it **Cite42**, and paste `https://mcp.cite42.dev`. Click **Connect** and sign in. The connector appears in both Claude Desktop and Claude.ai.
60
+
61
+ ### ChatGPT and Codex Desktop
62
+
63
+ Turn on **Developer mode** in **Settings → Security and login**, then add a plugin under **Settings → Plugins** with the MCP server URL `https://mcp.cite42.dev` and **OAuth**.
64
+
65
+ ### API key setup (CI, servers, no browser)
66
+
67
+ Create a key at [www.cite42.dev/app/keys](https://www.cite42.dev/app/keys) (it looks like `cite42_live_...` and is shown once), then replace `cite42_live_your_key_here` below. The client starts this package on demand; you don't need to keep it running.
60
68
 
61
69
  ```bash
70
+ # Claude Code
71
+ claude mcp add --scope user cite42 -e CITE42_API_KEY=cite42_live_your_key_here -- npx -y @cite42/mcp
72
+
73
+ # Codex CLI
62
74
  codex mcp add cite42 --env CITE42_API_KEY=cite42_live_your_key_here -- npx -y @cite42/mcp
63
75
  ```
64
76
 
65
- #### Cursor
66
-
67
- Add this under **Settings → MCP**, or save it to `~/.cursor/mcp.json`:
77
+ For Cursor, save this to `~/.cursor/mcp.json`:
68
78
 
69
79
  ```json
70
80
  {
@@ -80,21 +90,14 @@ Add this under **Settings → MCP**, or save it to `~/.cursor/mcp.json`:
80
90
  }
81
91
  ```
82
92
 
83
- ### Step 3: Restart so the server loads
84
-
85
- Local MCP servers are started by the client, so their config is only picked up on a fresh start. The Claude Desktop connector is ready after sign-in.
86
-
87
- - **Claude Code / Codex CLI**: exit the current session and open a **new terminal** (or start a new `claude` / `codex` session)
88
- - **Cursor**: fully quit and reopen the app
89
-
90
- You do not need to keep `npx -y @cite42/mcp` running in a separate terminal. Local MCP clients start it automatically when the session needs tools.
93
+ Restart the client afterwards: a new terminal or `claude`/`codex` session, or fully quit and reopen Cursor.
91
94
 
92
- ### Step 4: Verify it's running
95
+ ### Verify it's running
93
96
 
94
- - **Claude Code:** run `claude mcp list` and check that `cite42` shows as ✔ connected. Or type `/mcp` inside a session.
95
- - **Claude Desktop:** open **Settings → Connectors** and confirm Cite42 is connected.
97
+ - **Claude Code:** run `claude mcp list` and check that `cite42` shows as connected, or type `/mcp` inside a session.
96
98
  - **Codex CLI:** run `codex mcp list`.
97
- - **Cursor:** look for `cite42` in the MCP/tools indicator. 29 tools should be listed.
99
+ - **Cursor:** look for `cite42` in the MCP/tools indicator.
100
+ - **Claude Desktop / Claude.ai:** open **Settings → Connectors** and confirm Cite42 is connected.
98
101
 
99
102
  If it doesn't appear, see [Troubleshooting](#troubleshooting).
100
103
 
@@ -178,7 +181,7 @@ Cite42 exposes 29 MCP tools: 4 free account tools (including the compatibility a
178
181
 
179
182
  ## Configuration
180
183
 
181
- - `CITE42_API_KEY`: required. Your API key from [www.cite42.dev/app/keys](https://www.cite42.dev/app/keys).
184
+ - `CITE42_API_KEY`: required for the local package. Your API key from [www.cite42.dev/app/keys](https://www.cite42.dev/app/keys).
182
185
  - `CITE42_API_BASE`: optional. Defaults to `https://www.cite42.dev/api/v1`.
183
186
 
184
187
  You can also pass these as CLI flags instead of environment variables:
@@ -198,13 +201,14 @@ stdio, published npm, and local OAuth targets. Run `npm run test:stdio` for a fr
198
201
  smoke test against a loopback fake API. See [local MCP testing](../../docs/mcp-testing.md) in the repository.
199
202
 
200
203
  - **Server not listed after setup**: make sure you fully restarted the client (new terminal for CLI clients, full quit for desktop apps).
204
+ - **"No Cite42 account is linked to this sign-in"**: you signed in with a different account than the one you use at cite42.dev. In Claude Code run `claude mcp logout cite42`, then `claude mcp login cite42` and pick the same sign-in method as on the dashboard.
201
205
  - **`command not found: npx`**: install Node.js 22.13+ from [nodejs.org](https://nodejs.org), then restart your terminal.
202
206
  - **Tool calls fail with an auth error**: check the key was passed correctly (`CITE42_API_KEY`, no quotes or trailing spaces) and is active at [www.cite42.dev/app/keys](https://www.cite42.dev/app/keys).
203
207
  - **Tool calls fail with an insufficient-balance error**: add funds at [www.cite42.dev/app](https://www.cite42.dev/app).
204
208
 
205
209
  ## Links
206
210
 
207
- - Website: [Cite42 MCP: AI search visibility, brand rankings, SEO keywords & trends](https://www.cite42.dev)
211
+ - Website: [Cite42: AI visibility and SEO data for AI agents](https://www.cite42.dev)
208
212
  - API keys: [Create a Cite42 API key](https://www.cite42.dev/app/keys)
209
213
  - Docs: [Cite42 API & MCP documentation](https://www.cite42.dev/docs)
210
214
  - Pricing: [Cite42 pay-per-call pricing](https://www.cite42.dev/pricing)
package/dist/stdio.cjs CHANGED
@@ -461,7 +461,7 @@ var aivMapAiPrompts = (0, import_tools.createTool)({
461
461
  id: "cite42_map_ai_prompts",
462
462
  mcp: readOnly("Map buyer prompts for AI search"),
463
463
  description: workflowDescription(
464
- "Run the AI-prompt-map workflow: discover and cluster buyer prompts worth tracking from AI search, SEO demand, trends, citations, Reddit, and YouTube data. The prompts it returns are exactly what cite42_tracker_create takes, so offer to start tracking the best of them once the user has seen the map."
464
+ "Run the AI-prompt-map workflow: research for a list of buyer prompts worth tracking, from AI search, SEO demand, trends, citations, Reddit, and YouTube data. It returns evidence and a suggested prompt, not a finished list: write the prompts from it, then offer to track the best of them with cite42_tracker_create once the user has seen them."
465
465
  ),
466
466
  inputSchema: import_zod.z.object({
467
467
  topic: queryText("Market, product category, buyer problem, or audience to map prompts for."),
@@ -507,7 +507,7 @@ var aivGenerateContentBrief = (0, import_tools.createTool)({
507
507
  id: "cite42_generate_content_brief",
508
508
  mcp: readOnly("Generate content brief data"),
509
509
  description: workflowDescription(
510
- "Run the content-brief workflow: AI answers, citations, SEO keyword demand, trends, Reddit, and YouTube signals aggregated into brief-ready data."
510
+ "Run the content-brief workflow: research for a content brief from AI answers, citations, SEO keyword demand, trends, Reddit, and YouTube signals. It returns evidence and a suggested prompt; write the brief from it."
511
511
  ),
512
512
  inputSchema: import_zod.z.object({
513
513
  topic: queryText("Topic, keyword, or content idea to brief."),
@@ -574,7 +574,7 @@ var TRACKER_BILLING_DESCRIPTION = "Tracker management and stored-report reads ar
574
574
  var aivTrackerCreate = (0, import_tools.createTool)({
575
575
  id: "cite42_tracker_create",
576
576
  mcp: mutation("Create Cite42 tracker draft"),
577
- description: "Create a draft weekly or monthly tracker: one measurement \u2014 rankings, compare, citations, or sentiment \u2014 applied to a list of prompts, with the brand, competitors and AI surfaces set once for all of them. When the user has no prompt list yet, run cite42_map_ai_prompts first and track the prompts it recommends. Creation does not start recurring calls. " + TRACKER_BILLING_DESCRIPTION,
577
+ description: "Create a draft weekly or monthly tracker: one measurement \u2014 rankings, compare, citations, or sentiment \u2014 applied to a list of prompts, with the brand, competitors and AI surfaces set once for all of them. When the user has no prompt list yet, run cite42_map_ai_prompts first and track the prompts you write from its research. Creation does not start recurring calls. " + TRACKER_BILLING_DESCRIPTION,
578
578
  inputSchema: import_zod.z.object(trackerDefinitionFields),
579
579
  execute: async (input) => aivPost("/trackers", input)
580
580
  });
@@ -695,7 +695,7 @@ if (!resolveApiKey()) {
695
695
  );
696
696
  process.exit(1);
697
697
  }
698
- buildCite42Server("0.6.0").startStdio().catch((error) => {
698
+ buildCite42Server("0.6.2").startStdio().catch((error) => {
699
699
  console.error("[@cite42/mcp] Fatal error:", error);
700
700
  process.exit(1);
701
701
  });
package/dist/stdio.mjs CHANGED
@@ -460,7 +460,7 @@ var aivMapAiPrompts = createTool({
460
460
  id: "cite42_map_ai_prompts",
461
461
  mcp: readOnly("Map buyer prompts for AI search"),
462
462
  description: workflowDescription(
463
- "Run the AI-prompt-map workflow: discover and cluster buyer prompts worth tracking from AI search, SEO demand, trends, citations, Reddit, and YouTube data. The prompts it returns are exactly what cite42_tracker_create takes, so offer to start tracking the best of them once the user has seen the map."
463
+ "Run the AI-prompt-map workflow: research for a list of buyer prompts worth tracking, from AI search, SEO demand, trends, citations, Reddit, and YouTube data. It returns evidence and a suggested prompt, not a finished list: write the prompts from it, then offer to track the best of them with cite42_tracker_create once the user has seen them."
464
464
  ),
465
465
  inputSchema: z.object({
466
466
  topic: queryText("Market, product category, buyer problem, or audience to map prompts for."),
@@ -506,7 +506,7 @@ var aivGenerateContentBrief = createTool({
506
506
  id: "cite42_generate_content_brief",
507
507
  mcp: readOnly("Generate content brief data"),
508
508
  description: workflowDescription(
509
- "Run the content-brief workflow: AI answers, citations, SEO keyword demand, trends, Reddit, and YouTube signals aggregated into brief-ready data."
509
+ "Run the content-brief workflow: research for a content brief from AI answers, citations, SEO keyword demand, trends, Reddit, and YouTube signals. It returns evidence and a suggested prompt; write the brief from it."
510
510
  ),
511
511
  inputSchema: z.object({
512
512
  topic: queryText("Topic, keyword, or content idea to brief."),
@@ -573,7 +573,7 @@ var TRACKER_BILLING_DESCRIPTION = "Tracker management and stored-report reads ar
573
573
  var aivTrackerCreate = createTool({
574
574
  id: "cite42_tracker_create",
575
575
  mcp: mutation("Create Cite42 tracker draft"),
576
- description: "Create a draft weekly or monthly tracker: one measurement \u2014 rankings, compare, citations, or sentiment \u2014 applied to a list of prompts, with the brand, competitors and AI surfaces set once for all of them. When the user has no prompt list yet, run cite42_map_ai_prompts first and track the prompts it recommends. Creation does not start recurring calls. " + TRACKER_BILLING_DESCRIPTION,
576
+ description: "Create a draft weekly or monthly tracker: one measurement \u2014 rankings, compare, citations, or sentiment \u2014 applied to a list of prompts, with the brand, competitors and AI surfaces set once for all of them. When the user has no prompt list yet, run cite42_map_ai_prompts first and track the prompts you write from its research. Creation does not start recurring calls. " + TRACKER_BILLING_DESCRIPTION,
577
577
  inputSchema: z.object(trackerDefinitionFields),
578
578
  execute: async (input) => aivPost("/trackers", input)
579
579
  });
@@ -694,7 +694,7 @@ if (!resolveApiKey()) {
694
694
  );
695
695
  process.exit(1);
696
696
  }
697
- buildCite42Server("0.6.0").startStdio().catch((error) => {
697
+ buildCite42Server("0.6.2").startStdio().catch((error) => {
698
698
  console.error("[@cite42/mcp] Fatal error:", error);
699
699
  process.exit(1);
700
700
  });
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cite42/mcp",
3
3
  "mcpName": "dev.cite42/mcp",
4
- "version": "0.6.0",
5
- "description": "Cite42 MCP server: query the models behind ChatGPT, Claude, Perplexity & Gemini, plus Google AI Overviews, for brand rankings, AI citations, SEO keyword data, and Reddit/YouTube trends, and schedule weekly or monthly trackers that watch a list of prompts over time. Works with Claude Code, Claude Desktop, Codex CLI, Cursor, and any MCP client.",
4
+ "version": "0.6.2",
5
+ "description": "Cite42 MCP server: AI visibility and SEO data for AI agents. See how the AI models behind ChatGPT, Claude, Perplexity and Gemini, plus Google AI Overviews, mention your brand and which sources they cite, with SEO keyword data, Google, Reddit and YouTube trends, and weekly or monthly trackers that watch a list of prompts over time. Works with Claude Code, Claude Desktop, Codex CLI, Cursor, and any MCP client.",
6
6
  "license": "MIT",
7
7
  "type": "module",
8
8
  "bin": {