cited-cli 0.3.2__tar.gz → 0.3.4__tar.gz

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 (117) hide show
  1. cited_cli-0.3.2/README.md → cited_cli-0.3.4/PKG-INFO +105 -0
  2. cited_cli-0.3.2/PKG-INFO → cited_cli-0.3.4/README.md +84 -21
  3. {cited_cli-0.3.2 → cited_cli-0.3.4}/cited-plugins/.claude-plugin/marketplace.json +1 -1
  4. cited_cli-0.3.4/cited-plugins/.mcp.json +8 -0
  5. cited_cli-0.3.4/cited-plugins/CLAUDE_DESKTOP_SETUP.md +69 -0
  6. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/core/pyproject.toml +1 -1
  7. cited_cli-0.3.4/packages/core/src/cited_core/__init__.py +1 -0
  8. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/core/src/cited_core/api/endpoints.py +1 -0
  9. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/core/src/cited_core/config/constants.py +6 -0
  10. cited_cli-0.3.4/packages/mcp/Dockerfile +14 -0
  11. cited_cli-0.3.4/packages/mcp/README.md +204 -0
  12. cited_cli-0.3.4/packages/mcp/SKILL.md +54 -0
  13. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/mcp/pyproject.toml +5 -2
  14. cited_cli-0.3.4/packages/mcp/src/cited_mcp/auth_provider.py +320 -0
  15. cited_cli-0.3.4/packages/mcp/src/cited_mcp/remote.py +159 -0
  16. cited_cli-0.3.4/packages/mcp/src/cited_mcp/server.py +77 -0
  17. cited_cli-0.3.4/packages/mcp/src/cited_mcp/tools/_helpers.py +106 -0
  18. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/mcp/src/cited_mcp/tools/audit.py +71 -17
  19. cited_cli-0.3.4/packages/mcp/src/cited_mcp/tools/auth.py +135 -0
  20. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/mcp/src/cited_mcp/tools/business.py +39 -8
  21. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/mcp/src/cited_mcp/tools/job.py +5 -1
  22. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/mcp/src/cited_mcp/tools/recommend.py +21 -5
  23. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/mcp/src/cited_mcp/tools/solution.py +31 -7
  24. {cited_cli-0.3.2 → cited_cli-0.3.4}/pyproject.toml +4 -4
  25. cited_cli-0.3.4/scripts/deploy-mcp.sh +434 -0
  26. {cited_cli-0.3.2 → cited_cli-0.3.4}/scripts/release.sh +4 -2
  27. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/commands/auth.py +15 -13
  28. cited_cli-0.3.4/tests/conftest.py +32 -0
  29. {cited_cli-0.3.2 → cited_cli-0.3.4}/tests/test_auth.py +28 -37
  30. cited_cli-0.3.4/tests/test_live_pipeline.py +224 -0
  31. {cited_cli-0.3.2 → cited_cli-0.3.4}/tests/test_mcp_server.py +5 -2
  32. {cited_cli-0.3.2 → cited_cli-0.3.4}/tests/test_mcp_tools.py +113 -0
  33. cited_cli-0.3.2/cited-plugins/.mcp.json +0 -11
  34. cited_cli-0.3.2/packages/core/src/cited_core/__init__.py +0 -1
  35. cited_cli-0.3.2/packages/mcp/src/cited_mcp/server.py +0 -54
  36. cited_cli-0.3.2/packages/mcp/src/cited_mcp/tools/_helpers.py +0 -33
  37. cited_cli-0.3.2/packages/mcp/src/cited_mcp/tools/auth.py +0 -59
  38. cited_cli-0.3.2/tests/conftest.py +0 -16
  39. {cited_cli-0.3.2 → cited_cli-0.3.4}/.github/workflows/ci.yml +0 -0
  40. {cited_cli-0.3.2 → cited_cli-0.3.4}/.github/workflows/release.yml +0 -0
  41. {cited_cli-0.3.2 → cited_cli-0.3.4}/.gitignore +0 -0
  42. {cited_cli-0.3.2 → cited_cli-0.3.4}/CLAUDE.md +0 -0
  43. {cited_cli-0.3.2 → cited_cli-0.3.4}/DEMO.md +0 -0
  44. {cited_cli-0.3.2 → cited_cli-0.3.4}/FUTURE.md +0 -0
  45. {cited_cli-0.3.2 → cited_cli-0.3.4}/LICENSE +0 -0
  46. {cited_cli-0.3.2 → cited_cli-0.3.4}/TEST_RUNBOOK.md +0 -0
  47. {cited_cli-0.3.2 → cited_cli-0.3.4}/cited-plugins/.claude-plugin/plugin.json +0 -0
  48. {cited_cli-0.3.2 → cited_cli-0.3.4}/cited-plugins/agents/geo-analyst.md +0 -0
  49. {cited_cli-0.3.2 → cited_cli-0.3.4}/cited-plugins/commands/audit.md +0 -0
  50. {cited_cli-0.3.2 → cited_cli-0.3.4}/cited-plugins/commands/recommend.md +0 -0
  51. {cited_cli-0.3.2 → cited_cli-0.3.4}/cited-plugins/commands/status.md +0 -0
  52. {cited_cli-0.3.2 → cited_cli-0.3.4}/cited-plugins/settings.json +0 -0
  53. {cited_cli-0.3.2 → cited_cli-0.3.4}/cited-plugins/skills/business-setup/SKILL.md +0 -0
  54. {cited_cli-0.3.2 → cited_cli-0.3.4}/cited-plugins/skills/geo-audit/SKILL.md +0 -0
  55. {cited_cli-0.3.2 → cited_cli-0.3.4}/cited-plugins/skills/geo-recommend/SKILL.md +0 -0
  56. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/core/src/cited_core/api/__init__.py +0 -0
  57. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/core/src/cited_core/api/client.py +0 -0
  58. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/core/src/cited_core/auth/__init__.py +0 -0
  59. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/core/src/cited_core/auth/oauth_server.py +0 -0
  60. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/core/src/cited_core/auth/store.py +0 -0
  61. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/core/src/cited_core/config/__init__.py +0 -0
  62. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/core/src/cited_core/config/manager.py +0 -0
  63. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/core/src/cited_core/errors.py +0 -0
  64. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/mcp/src/cited_mcp/__init__.py +0 -0
  65. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/mcp/src/cited_mcp/__main__.py +0 -0
  66. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/mcp/src/cited_mcp/context.py +0 -0
  67. {cited_cli-0.3.2 → cited_cli-0.3.4}/packages/mcp/src/cited_mcp/tools/__init__.py +0 -0
  68. {cited_cli-0.3.2 → cited_cli-0.3.4}/scripts/cleanup_dev.py +0 -0
  69. {cited_cli-0.3.2 → cited_cli-0.3.4}/scripts/dev-install.sh +0 -0
  70. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/__init__.py +0 -0
  71. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/__main__.py +0 -0
  72. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/api/__init__.py +0 -0
  73. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/api/client.py +0 -0
  74. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/api/endpoints.py +0 -0
  75. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/app.py +0 -0
  76. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/auth/__init__.py +0 -0
  77. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/auth/oauth_server.py +0 -0
  78. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/auth/store.py +0 -0
  79. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/commands/__init__.py +0 -0
  80. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/commands/agent.py +0 -0
  81. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/commands/analytics.py +0 -0
  82. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/commands/audit.py +0 -0
  83. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/commands/business.py +0 -0
  84. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/commands/config_cmd.py +0 -0
  85. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/commands/hq.py +0 -0
  86. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/commands/job.py +0 -0
  87. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/commands/mcp_cmd.py +0 -0
  88. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/commands/named_audit.py +0 -0
  89. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/commands/recommend.py +0 -0
  90. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/commands/solution.py +0 -0
  91. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/config/__init__.py +0 -0
  92. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/config/constants.py +0 -0
  93. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/config/manager.py +0 -0
  94. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/mcp/__init__.py +0 -0
  95. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/mcp/context.py +0 -0
  96. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/mcp/server.py +0 -0
  97. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/mcp/tools/__init__.py +0 -0
  98. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/mcp/tools/_helpers.py +0 -0
  99. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/mcp/tools/audit.py +0 -0
  100. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/mcp/tools/auth.py +0 -0
  101. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/mcp/tools/business.py +0 -0
  102. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/mcp/tools/job.py +0 -0
  103. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/mcp/tools/recommend.py +0 -0
  104. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/mcp/tools/solution.py +0 -0
  105. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/output/__init__.py +0 -0
  106. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/output/formatter.py +0 -0
  107. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/output/progress.py +0 -0
  108. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/output/tables.py +0 -0
  109. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/utils/__init__.py +0 -0
  110. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/utils/errors.py +0 -0
  111. {cited_cli-0.3.2 → cited_cli-0.3.4}/src/cited_cli/utils/interactive.py +0 -0
  112. {cited_cli-0.3.2 → cited_cli-0.3.4}/tests/__init__.py +0 -0
  113. {cited_cli-0.3.2 → cited_cli-0.3.4}/tests/test_api_client.py +0 -0
  114. {cited_cli-0.3.2 → cited_cli-0.3.4}/tests/test_config.py +0 -0
  115. {cited_cli-0.3.2 → cited_cli-0.3.4}/tests/test_output.py +0 -0
  116. {cited_cli-0.3.2 → cited_cli-0.3.4}/tests/test_pipeline.py +0 -0
  117. {cited_cli-0.3.2 → cited_cli-0.3.4}/tests/test_version.py +0 -0
@@ -1,3 +1,24 @@
1
+ Metadata-Version: 2.4
2
+ Name: cited-cli
3
+ Version: 0.3.4
4
+ Summary: CLI for the Cited GEO platform
5
+ Author-email: Cited <support@youcited.com>
6
+ License-Expression: LicenseRef-Proprietary
7
+ License-File: LICENSE
8
+ Requires-Python: >=3.11
9
+ Requires-Dist: cited-core>=0.3.4
10
+ Requires-Dist: rich>=13.0.0
11
+ Requires-Dist: typer>=0.15.0
12
+ Provides-Extra: dev
13
+ Requires-Dist: cited-mcp>=0.3.4; extra == 'dev'
14
+ Requires-Dist: mypy>=1.10; extra == 'dev'
15
+ Requires-Dist: pytest>=8.0; extra == 'dev'
16
+ Requires-Dist: respx>=0.21; extra == 'dev'
17
+ Requires-Dist: ruff>=0.4; extra == 'dev'
18
+ Provides-Extra: mcp
19
+ Requires-Dist: cited-mcp>=0.3.4; extra == 'mcp'
20
+ Description-Content-Type: text/markdown
21
+
1
22
  # Cited CLI
2
23
 
3
24
  Command-line interface for the [Cited](https://youcited.com) GEO (Generative Engine Optimization) platform. Audit how often your business is cited by AI assistants, generate recommendations, and produce AI-ready content solutions — all from the terminal or a Python script.
@@ -71,6 +92,90 @@ cited register --email you@example.com --name "Your Name" --password "Secret123!
71
92
 
72
93
  ---
73
94
 
95
+ ## MCP Server
96
+
97
+ This repo also includes `cited-mcp`, a [Model Context Protocol](https://modelcontextprotocol.io/) server that exposes 28 tools for AI assistants like Claude. It lets Claude manage businesses, run GEO audits, generate recommendations, and create solutions on your behalf.
98
+
99
+ ### Claude Desktop (remote — recommended)
100
+
101
+ No local install required. Add this to your Claude Desktop config (`Settings → Developer → Edit Config`):
102
+
103
+ ```json
104
+ {
105
+ "mcpServers": {
106
+ "cited": {
107
+ "command": "npx",
108
+ "args": ["mcp-remote", "https://mcp.youcited.com/mcp"]
109
+ }
110
+ }
111
+ }
112
+ ```
113
+
114
+ Restart Claude Desktop. A browser window will open for authentication on first use.
115
+
116
+ > **Prerequisite:** [Node.js](https://nodejs.org) (LTS) must be installed for `npx`.
117
+
118
+ ### Claude Desktop (local stdio)
119
+
120
+ ```json
121
+ {
122
+ "mcpServers": {
123
+ "cited": {
124
+ "command": "uvx",
125
+ "args": ["cited-mcp"],
126
+ "env": {
127
+ "CITED_TOKEN": "your-jwt-token"
128
+ }
129
+ }
130
+ }
131
+ }
132
+ ```
133
+
134
+ Get your token with `cited login` then `cited auth token`.
135
+
136
+ ### Cursor
137
+
138
+ Add a `.cursor/mcp.json` file to your project root (or `~/.cursor/mcp.json` for global access):
139
+
140
+ ```json
141
+ {
142
+ "mcpServers": {
143
+ "cited": {
144
+ "command": "npx",
145
+ "args": ["mcp-remote", "https://mcp.youcited.com/mcp"]
146
+ }
147
+ }
148
+ }
149
+ ```
150
+
151
+ Verify Node.js is installed (`node --version`), or install with `brew install node`.
152
+
153
+ Open Settings (`Cmd+,`) → search "MCP" → verify the server shows a green status. Use tools in Composer (Agent mode).
154
+
155
+ ### Example
156
+
157
+ Once connected, ask Claude something like:
158
+
159
+ > "List my businesses, then run a GEO audit on Acme Corp using the default template. When it's done, generate recommendations and show me the top insights."
160
+
161
+ Claude will chain the tools automatically — `list_businesses` → `start_audit` → `get_audit_status` → `start_recommendation` → `get_recommendation_insights`.
162
+
163
+ ### Available Tools
164
+
165
+ | Category | Tools |
166
+ |----------|-------|
167
+ | **Auth** | `check_auth_status`, `login` |
168
+ | **Businesses** | `list_businesses`, `get_business`, `create_business`, `update_business`, `delete_business`, `crawl_business`, `get_health_scores` |
169
+ | **Audit Templates** | `list_audit_templates`, `get_audit_template`, `create_audit_template`, `update_audit_template`, `delete_audit_template` |
170
+ | **Audits** | `start_audit`, `get_audit_status`, `get_audit_result`, `list_audits` |
171
+ | **Recommendations** | `start_recommendation`, `get_recommendation_status`, `get_recommendation_result`, `get_recommendation_insights`, `list_recommendations` |
172
+ | **Solutions** | `start_solution`, `get_solution_status`, `get_solution_result`, `list_solutions` |
173
+ | **Jobs** | `get_job_status` |
174
+
175
+ See [`packages/mcp/README.md`](packages/mcp/README.md) for full details, environment variables, and development instructions.
176
+
177
+ ---
178
+
74
179
  ## Global Flags
75
180
 
76
181
  These flags apply to every command and must be placed immediately after `cited`:
@@ -1,24 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: cited-cli
3
- Version: 0.3.2
4
- Summary: CLI for the Cited GEO platform
5
- Author-email: Cited <support@youcited.com>
6
- License-Expression: LicenseRef-Proprietary
7
- License-File: LICENSE
8
- Requires-Python: >=3.11
9
- Requires-Dist: cited-core>=0.3.2
10
- Requires-Dist: rich>=13.0.0
11
- Requires-Dist: typer>=0.15.0
12
- Provides-Extra: dev
13
- Requires-Dist: cited-mcp>=0.3.2; extra == 'dev'
14
- Requires-Dist: mypy>=1.10; extra == 'dev'
15
- Requires-Dist: pytest>=8.0; extra == 'dev'
16
- Requires-Dist: respx>=0.21; extra == 'dev'
17
- Requires-Dist: ruff>=0.4; extra == 'dev'
18
- Provides-Extra: mcp
19
- Requires-Dist: cited-mcp>=0.3.2; extra == 'mcp'
20
- Description-Content-Type: text/markdown
21
-
22
1
  # Cited CLI
23
2
 
24
3
  Command-line interface for the [Cited](https://youcited.com) GEO (Generative Engine Optimization) platform. Audit how often your business is cited by AI assistants, generate recommendations, and produce AI-ready content solutions — all from the terminal or a Python script.
@@ -92,6 +71,90 @@ cited register --email you@example.com --name "Your Name" --password "Secret123!
92
71
 
93
72
  ---
94
73
 
74
+ ## MCP Server
75
+
76
+ This repo also includes `cited-mcp`, a [Model Context Protocol](https://modelcontextprotocol.io/) server that exposes 28 tools for AI assistants like Claude. It lets Claude manage businesses, run GEO audits, generate recommendations, and create solutions on your behalf.
77
+
78
+ ### Claude Desktop (remote — recommended)
79
+
80
+ No local install required. Add this to your Claude Desktop config (`Settings → Developer → Edit Config`):
81
+
82
+ ```json
83
+ {
84
+ "mcpServers": {
85
+ "cited": {
86
+ "command": "npx",
87
+ "args": ["mcp-remote", "https://mcp.youcited.com/mcp"]
88
+ }
89
+ }
90
+ }
91
+ ```
92
+
93
+ Restart Claude Desktop. A browser window will open for authentication on first use.
94
+
95
+ > **Prerequisite:** [Node.js](https://nodejs.org) (LTS) must be installed for `npx`.
96
+
97
+ ### Claude Desktop (local stdio)
98
+
99
+ ```json
100
+ {
101
+ "mcpServers": {
102
+ "cited": {
103
+ "command": "uvx",
104
+ "args": ["cited-mcp"],
105
+ "env": {
106
+ "CITED_TOKEN": "your-jwt-token"
107
+ }
108
+ }
109
+ }
110
+ }
111
+ ```
112
+
113
+ Get your token with `cited login` then `cited auth token`.
114
+
115
+ ### Cursor
116
+
117
+ Add a `.cursor/mcp.json` file to your project root (or `~/.cursor/mcp.json` for global access):
118
+
119
+ ```json
120
+ {
121
+ "mcpServers": {
122
+ "cited": {
123
+ "command": "npx",
124
+ "args": ["mcp-remote", "https://mcp.youcited.com/mcp"]
125
+ }
126
+ }
127
+ }
128
+ ```
129
+
130
+ Verify Node.js is installed (`node --version`), or install with `brew install node`.
131
+
132
+ Open Settings (`Cmd+,`) → search "MCP" → verify the server shows a green status. Use tools in Composer (Agent mode).
133
+
134
+ ### Example
135
+
136
+ Once connected, ask Claude something like:
137
+
138
+ > "List my businesses, then run a GEO audit on Acme Corp using the default template. When it's done, generate recommendations and show me the top insights."
139
+
140
+ Claude will chain the tools automatically — `list_businesses` → `start_audit` → `get_audit_status` → `start_recommendation` → `get_recommendation_insights`.
141
+
142
+ ### Available Tools
143
+
144
+ | Category | Tools |
145
+ |----------|-------|
146
+ | **Auth** | `check_auth_status`, `login` |
147
+ | **Businesses** | `list_businesses`, `get_business`, `create_business`, `update_business`, `delete_business`, `crawl_business`, `get_health_scores` |
148
+ | **Audit Templates** | `list_audit_templates`, `get_audit_template`, `create_audit_template`, `update_audit_template`, `delete_audit_template` |
149
+ | **Audits** | `start_audit`, `get_audit_status`, `get_audit_result`, `list_audits` |
150
+ | **Recommendations** | `start_recommendation`, `get_recommendation_status`, `get_recommendation_result`, `get_recommendation_insights`, `list_recommendations` |
151
+ | **Solutions** | `start_solution`, `get_solution_status`, `get_solution_result`, `list_solutions` |
152
+ | **Jobs** | `get_job_status` |
153
+
154
+ See [`packages/mcp/README.md`](packages/mcp/README.md) for full details, environment variables, and development instructions.
155
+
156
+ ---
157
+
95
158
  ## Global Flags
96
159
 
97
160
  These flags apply to every command and must be placed immediately after `cited`:
@@ -10,7 +10,7 @@
10
10
  "plugins": [
11
11
  {
12
12
  "name": "cited",
13
- "source": ".",
13
+ "source": "./",
14
14
  "description": "Audit, optimize, and monitor AI search presence for any business",
15
15
  "version": "0.3.2",
16
16
  "author": {
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "cited": {
4
+ "type": "http",
5
+ "url": "https://mcpdev.youcited.com"
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,69 @@
1
+ # Setting Up Cited for Claude Desktop
2
+
3
+ This guide walks you through connecting Claude Desktop to the Cited GEO platform. Once set up, you can ask Claude to audit your business's AI search presence, generate recommendations, and create solutions — all through conversation.
4
+
5
+ ## What You Need
6
+
7
+ - **Claude Desktop** app installed
8
+ - **A Cited account** at [youcited.com](https://youcited.com)
9
+ - **Node.js** installed (download from [nodejs.org](https://nodejs.org))
10
+
11
+ ## Step 1: Configure Claude Desktop
12
+
13
+ 1. Open Claude Desktop
14
+ 2. Click the **Claude** menu (top-left on Mac, top bar on Windows)
15
+ 3. Click **Settings**
16
+ 4. Click **Developer** in the left sidebar
17
+ 5. Click **Edit Config**
18
+
19
+ This opens `claude_desktop_config.json`. Add the `mcpServers` section:
20
+
21
+ ```json
22
+ {
23
+ "mcpServers": {
24
+ "cited": {
25
+ "command": "npx",
26
+ "args": ["mcp-remote", "https://mcp.youcited.com"]
27
+ }
28
+ }
29
+ }
30
+ ```
31
+
32
+ Save the file and close the text editor.
33
+
34
+ ## Step 2: Restart Claude Desktop
35
+
36
+ Quit Claude Desktop completely (Cmd+Q on Mac, or close fully on Windows), then reopen it.
37
+
38
+ ## Step 3: Try It Out
39
+
40
+ Start a new conversation in Claude Desktop and try any of these:
41
+
42
+ - **"List my businesses"** — shows all your businesses on Cited
43
+ - **"Run a GEO audit on [business name]"** — audits your AI search presence
44
+ - **"Check my Cited account status"** — verifies you're connected
45
+
46
+ On first use, your browser will open to log in to your Cited account. After logging in, you'll be redirected back automatically. This only happens once.
47
+
48
+ ## Troubleshooting
49
+
50
+ **Browser login popup doesn't appear:**
51
+ - Make sure Node.js is installed: open a terminal and type `node --version`
52
+ - Make sure you saved the config file correctly
53
+ - Restart Claude Desktop fully (not just close the window)
54
+
55
+ **"npx not found" error:**
56
+ - Install Node.js from [nodejs.org](https://nodejs.org) (LTS version recommended)
57
+ - Restart Claude Desktop after installing Node.js
58
+
59
+ ## What Can Claude Do With Cited?
60
+
61
+ Once connected, Claude can:
62
+
63
+ - **List and manage your businesses** — view, create, update, or delete businesses
64
+ - **Run GEO audits** — check how your business appears in AI search results (ChatGPT, Perplexity, Gemini, etc.)
65
+ - **Generate recommendations** — get actionable insights to improve your AI search visibility
66
+ - **Create solutions** — detailed implementation steps for each recommendation
67
+ - **Check health scores** — see your overall GEO health at a glance
68
+
69
+ Just ask Claude in plain English — no commands to memorize.
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "cited-core"
7
- version = "0.3.2"
7
+ version = "0.3.4"
8
8
  description = "Core library for the Cited GEO platform"
9
9
  license = "LicenseRef-Proprietary"
10
10
  requires-python = ">=3.11"
@@ -0,0 +1 @@
1
+ __version__ = "0.3.4"
@@ -6,6 +6,7 @@ CLI_LOGIN = "/auth/cli-login"
6
6
  CLI_REGISTER = "/auth/cli-register"
7
7
  CLI_VERIFY_EMAIL = "/auth/cli-verify-email"
8
8
  CLI_OAUTH_START = "/auth/cli-oauth-start"
9
+ AUTHORIZE_APP = "/auth/authorize-app"
9
10
  LOGOUT = "/auth/logout"
10
11
  ME = "/auth/me"
11
12
 
@@ -14,6 +14,12 @@ FRONTEND_URLS: dict[str, str] = {
14
14
  "local": "http://localhost:3000",
15
15
  }
16
16
 
17
+ MCP_URLS: dict[str, str] = {
18
+ "prod": "https://mcp.youcited.com",
19
+ "dev": "https://mcpdev.youcited.com",
20
+ "local": "http://localhost:8080",
21
+ }
22
+
17
23
  DEFAULT_ENV = "prod"
18
24
  CONFIG_DIR = Path.home() / ".cited"
19
25
  CONFIG_FILE = CONFIG_DIR / "config.toml"
@@ -0,0 +1,14 @@
1
+ FROM python:3.12-slim
2
+
3
+ WORKDIR /app
4
+
5
+ # Install core first (dependency), then mcp
6
+ COPY packages/core/ /app/packages/core/
7
+ COPY packages/mcp/ /app/packages/mcp/
8
+
9
+ RUN pip install --no-cache-dir /app/packages/core /app/packages/mcp
10
+
11
+ ENV PORT=8080
12
+ EXPOSE 8080
13
+
14
+ CMD ["cited-mcp-remote"]
@@ -0,0 +1,204 @@
1
+ # cited-mcp
2
+
3
+ MCP server for the [Cited](https://youcited.com) Generative Engine Optimization (GEO) platform. Exposes 28 tools that let AI assistants like Claude manage businesses, run GEO audits, generate recommendations, and create solutions — all through the [Model Context Protocol](https://modelcontextprotocol.io/).
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pip install cited-mcp
9
+ ```
10
+
11
+ Or run directly without installing:
12
+
13
+ ```bash
14
+ uvx cited-mcp
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ### Claude Desktop (remote server — recommended)
20
+
21
+ No local install required. Add this to your Claude Desktop config (`Settings → Developer → Edit Config`):
22
+
23
+ ```json
24
+ {
25
+ "mcpServers": {
26
+ "cited": {
27
+ "command": "npx",
28
+ "args": ["mcp-remote", "https://mcp.youcited.com/mcp"]
29
+ }
30
+ }
31
+ }
32
+ ```
33
+
34
+ Restart Claude Desktop. A browser window will open for authentication on first use.
35
+
36
+ > **Prerequisite:** [Node.js](https://nodejs.org) must be installed for `npx`.
37
+
38
+ ### Claude Desktop (local stdio server)
39
+
40
+ If you prefer running the server locally:
41
+
42
+ ```json
43
+ {
44
+ "mcpServers": {
45
+ "cited": {
46
+ "command": "uvx",
47
+ "args": ["cited-mcp"],
48
+ "env": {
49
+ "CITED_TOKEN": "your-jwt-token"
50
+ }
51
+ }
52
+ }
53
+ }
54
+ ```
55
+
56
+ Get your token by running `cited login` and then `cited auth token` with the [cited-cli](https://pypi.org/project/cited-cli/).
57
+
58
+ ### Claude Code
59
+
60
+ Add the remote server as a tool source in your Claude Code settings or use the `cited-plugins/` configuration from the monorepo.
61
+
62
+ ### Cursor
63
+
64
+ Add a `.cursor/mcp.json` file to your project root (or configure globally in `~/.cursor/mcp.json`):
65
+
66
+ ```json
67
+ {
68
+ "mcpServers": {
69
+ "cited": {
70
+ "command": "npx",
71
+ "args": ["mcp-remote", "https://mcp.youcited.com/mcp"]
72
+ }
73
+ }
74
+ }
75
+ ```
76
+
77
+ Verify Node.js is installed first:
78
+
79
+ ```bash
80
+ node --version # should print v18+ or v20+
81
+ ```
82
+
83
+ If not installed, run `brew install node` or download from [nodejs.org](https://nodejs.org).
84
+
85
+ Then in Cursor: open Settings (`Cmd+,`) → search "MCP" → verify the server appears and shows a green status indicator. Use Cited tools in Composer (Agent mode) or Chat by asking Claude to interact with your GEO data.
86
+
87
+ ### Standalone
88
+
89
+ ```bash
90
+ # Local stdio mode (requires CITED_TOKEN env var)
91
+ CITED_TOKEN=your-jwt-token cited-mcp
92
+
93
+ # Remote HTTP mode (used for hosted deployment)
94
+ cited-mcp-remote
95
+ ```
96
+
97
+ ## Tools
98
+
99
+ ### Auth
100
+ | Tool | Description |
101
+ |------|-------------|
102
+ | `check_auth_status` | Check current authentication status |
103
+ | `login` | Authenticate via browser OAuth flow |
104
+ | `logout` | Clear stored authentication token |
105
+
106
+ ### Businesses
107
+ | Tool | Description |
108
+ |------|-------------|
109
+ | `list_businesses` | List all businesses on your account |
110
+ | `get_business` | Get details for a specific business |
111
+ | `create_business` | Create a new business |
112
+ | `update_business` | Update business details |
113
+ | `delete_business` | Delete a business |
114
+ | `crawl_business` | Start a website crawl for a business |
115
+ | `get_health_scores` | Get GEO health scores for a business |
116
+
117
+ ### Audit Templates
118
+ | Tool | Description |
119
+ |------|-------------|
120
+ | `list_audit_templates` | List all audit templates |
121
+ | `get_audit_template` | Get a specific template with questions |
122
+ | `create_audit_template` | Create a new audit template |
123
+ | `update_audit_template` | Update template name, description, or questions |
124
+ | `delete_audit_template` | Delete an audit template |
125
+
126
+ ### Audits
127
+ | Tool | Description |
128
+ |------|-------------|
129
+ | `start_audit` | Run a GEO audit using a template |
130
+ | `get_audit_status` | Check audit job status |
131
+ | `get_audit_result` | Get completed audit results |
132
+ | `list_audits` | List all audits |
133
+
134
+ ### Recommendations
135
+ | Tool | Description |
136
+ |------|-------------|
137
+ | `start_recommendation` | Generate recommendations from a completed audit |
138
+ | `get_recommendation_status` | Check recommendation job status |
139
+ | `get_recommendation_result` | Get full recommendation results |
140
+ | `get_recommendation_insights` | Get actionable insights with risk levels and coverage scores |
141
+ | `list_recommendations` | List all recommendation jobs |
142
+
143
+ ### Solutions
144
+ | Tool | Description |
145
+ |------|-------------|
146
+ | `start_solution` | Generate a solution for a specific insight or tip |
147
+ | `get_solution_status` | Check solution job status |
148
+ | `get_solution_result` | Get completed solution with implementation steps |
149
+ | `list_solutions` | List all solutions |
150
+
151
+ ### Jobs
152
+ | Tool | Description |
153
+ |------|-------------|
154
+ | `get_job_status` | Check status of any job by type and ID |
155
+
156
+ ## Example Workflow
157
+
158
+ Once connected, ask Claude to run a full GEO audit:
159
+
160
+ > "List my businesses, then run a GEO audit on Acme Corp using the default template. When it's done, generate recommendations and show me the top insights."
161
+
162
+ Claude will chain the tools automatically:
163
+
164
+ 1. `list_businesses` → find the business ID
165
+ 2. `list_audit_templates` → find or create a template
166
+ 3. `start_audit` → kick off the audit
167
+ 4. `get_audit_status` → poll until complete
168
+ 5. `start_recommendation` → generate recommendations
169
+ 6. `get_recommendation_insights` → display actionable results
170
+ 7. `start_solution` → generate implementation steps for top issues
171
+
172
+ ## Environment Variables
173
+
174
+ | Variable | Description |
175
+ |----------|-------------|
176
+ | `CITED_TOKEN` | JWT auth token (stdio mode) |
177
+ | `CITED_AGENT_API_KEY` | Agent API key (alternative to JWT) |
178
+ | `CITED_API_URL` | API base URL (default: `https://api.youcited.com`) |
179
+ | `CITED_ENV` | Environment: `prod`, `dev`, or `local` |
180
+ | `MCP_URL` | Public URL of this MCP server (remote mode) |
181
+ | `JWT_SECRET` | Secret for signing OAuth tokens (remote mode) |
182
+
183
+ ## Development
184
+
185
+ ```bash
186
+ # Install in editable mode with dev dependencies
187
+ pip install -e packages/core
188
+ pip install -e "packages/mcp[dev]"
189
+
190
+ # Run tests
191
+ pytest tests/test_mcp_server.py tests/test_mcp_tools.py -v
192
+
193
+ # Lint and type check
194
+ ruff check packages/mcp/
195
+ mypy packages/mcp/src --ignore-missing-imports
196
+ ```
197
+
198
+ ## Privacy Policy
199
+
200
+ See our [Privacy Policy](https://youcited.com/privacy) for details on data collection, usage, storage, and third-party sharing.
201
+
202
+ ## License
203
+
204
+ Proprietary — see [youcited.com](https://youcited.com) for terms.
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: cited
3
+ description: Audit, optimize, and monitor your business's visibility in AI-powered search engines
4
+ ---
5
+
6
+ # Cited — AI Search Visibility Platform
7
+
8
+ Cited helps businesses measure and improve how they appear in AI-powered search results from ChatGPT, Claude, Perplexity, and Gemini. Use these tools to run GEO (Generative Engine Optimization) audits, get actionable recommendations, and generate ready-to-deploy solutions.
9
+
10
+ ## Core Workflow
11
+
12
+ The typical flow is: **Business Setup → Audit → Recommendations → Solutions**
13
+
14
+ ### 1. Business Setup
15
+ - `check_auth_status` — Verify authentication and check plan limits
16
+ - `list_businesses` — See existing businesses
17
+ - `create_business` — Add a new business (requires name, website, description)
18
+ - `crawl_business` — Crawl the business website to gather data for analysis
19
+
20
+ ### 2. Run an Audit
21
+ - `create_audit_template` — Define what questions to audit (e.g., "What is [business]?", "Best [industry] tools")
22
+ - `start_audit` — Launch the audit using a template
23
+ - `get_audit_status` — Poll until the audit completes (typically 2-4 minutes)
24
+ - `get_audit_result` — Retrieve visibility scores, citation rates, and competitor data
25
+
26
+ ### 3. Generate Recommendations
27
+ - `start_recommendation` — Analyze audit results and generate improvement recommendations
28
+ - `get_recommendation_insights` — Get structured insights with question-level analysis, competitor head-to-head comparisons, and strengthening tips. Each insight includes `source_type` and `source_id` needed for the next step.
29
+
30
+ ### 4. Create Solutions
31
+ - `start_solution` — Generate implementation artifacts (schema markup, content templates, outreach playbooks) for a specific insight
32
+ - `get_solution_result` — Retrieve the solution with downloadable artifacts
33
+
34
+ ## Example Prompts
35
+
36
+ **Run a full GEO audit:**
37
+ > "List my businesses, then run a GEO audit on [business name]. When it's done, show me my visibility scores and which competitors are being cited instead of me."
38
+
39
+ **Competitive analysis:**
40
+ > "Run an audit on my business for these questions: 'Best CRM software for small business', 'Top sales automation tools', 'What is [my product]?'. Then generate recommendations and show me the head-to-head comparisons with my top competitors."
41
+
42
+ **Generate solutions:**
43
+ > "Look at my latest audit recommendations and generate solutions for the top 3 highest-risk insights. I want to see the schema markup and content changes I need to make."
44
+
45
+ **Monitor over time:**
46
+ > "Show me the health scores for my business and compare them to my last audit. What has improved and what still needs work?"
47
+
48
+ ## Tips
49
+
50
+ - Always call `check_auth_status` first to verify authentication and plan limits
51
+ - Audits take 2-4 minutes — poll `get_audit_status` every 15 seconds
52
+ - Use `get_recommendation_insights` (not `get_recommendation_result`) for structured, actionable data
53
+ - Solutions have a concurrency limit of 3 — wait for one batch to complete before starting more
54
+ - Each insight's `source_type` and `source_id` map directly to `start_solution` parameters
@@ -4,18 +4,21 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "cited-mcp"
7
- version = "0.3.2"
7
+ version = "0.3.4"
8
8
  description = "MCP server for the Cited GEO platform"
9
+ readme = "README.md"
9
10
  license = "LicenseRef-Proprietary"
10
11
  requires-python = ">=3.11"
11
12
  authors = [{ name = "Cited", email = "support@youcited.com" }]
12
13
  dependencies = [
13
- "cited-core>=0.3.2",
14
+ "cited-core>=0.3.4",
14
15
  "mcp>=1.26.0",
16
+ "PyJWT>=2.8.0",
15
17
  ]
16
18
 
17
19
  [project.scripts]
18
20
  cited-mcp = "cited_mcp:run_server"
21
+ cited-mcp-remote = "cited_mcp.remote:run_remote_server"
19
22
 
20
23
  [project.optional-dependencies]
21
24
  dev = [