cited-cli 0.3.2__tar.gz → 0.3.3__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 (116) hide show
  1. cited_cli-0.3.2/README.md → cited_cli-0.3.3/PKG-INFO +105 -0
  2. cited_cli-0.3.2/PKG-INFO → cited_cli-0.3.3/README.md +84 -21
  3. {cited_cli-0.3.2 → cited_cli-0.3.3}/cited-plugins/.claude-plugin/marketplace.json +1 -1
  4. cited_cli-0.3.3/cited-plugins/.mcp.json +8 -0
  5. cited_cli-0.3.3/cited-plugins/CLAUDE_DESKTOP_SETUP.md +69 -0
  6. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/core/pyproject.toml +1 -1
  7. cited_cli-0.3.3/packages/core/src/cited_core/__init__.py +1 -0
  8. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/core/src/cited_core/api/endpoints.py +1 -0
  9. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/core/src/cited_core/config/constants.py +6 -0
  10. cited_cli-0.3.3/packages/mcp/Dockerfile +14 -0
  11. cited_cli-0.3.3/packages/mcp/README.md +199 -0
  12. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/mcp/pyproject.toml +5 -2
  13. cited_cli-0.3.3/packages/mcp/src/cited_mcp/auth_provider.py +320 -0
  14. cited_cli-0.3.3/packages/mcp/src/cited_mcp/remote.py +159 -0
  15. cited_cli-0.3.3/packages/mcp/src/cited_mcp/server.py +77 -0
  16. cited_cli-0.3.3/packages/mcp/src/cited_mcp/tools/_helpers.py +106 -0
  17. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/mcp/src/cited_mcp/tools/audit.py +34 -8
  18. cited_cli-0.3.3/packages/mcp/src/cited_mcp/tools/auth.py +114 -0
  19. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/mcp/src/cited_mcp/tools/business.py +10 -1
  20. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/mcp/src/cited_mcp/tools/solution.py +14 -3
  21. {cited_cli-0.3.2 → cited_cli-0.3.3}/pyproject.toml +4 -4
  22. cited_cli-0.3.3/scripts/deploy-mcp.sh +287 -0
  23. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/commands/auth.py +15 -13
  24. cited_cli-0.3.3/tests/conftest.py +32 -0
  25. {cited_cli-0.3.2 → cited_cli-0.3.3}/tests/test_auth.py +28 -37
  26. cited_cli-0.3.3/tests/test_live_pipeline.py +224 -0
  27. {cited_cli-0.3.2 → cited_cli-0.3.3}/tests/test_mcp_server.py +5 -2
  28. {cited_cli-0.3.2 → cited_cli-0.3.3}/tests/test_mcp_tools.py +113 -0
  29. cited_cli-0.3.2/cited-plugins/.mcp.json +0 -11
  30. cited_cli-0.3.2/packages/core/src/cited_core/__init__.py +0 -1
  31. cited_cli-0.3.2/packages/mcp/src/cited_mcp/server.py +0 -54
  32. cited_cli-0.3.2/packages/mcp/src/cited_mcp/tools/_helpers.py +0 -33
  33. cited_cli-0.3.2/packages/mcp/src/cited_mcp/tools/auth.py +0 -59
  34. cited_cli-0.3.2/tests/conftest.py +0 -16
  35. {cited_cli-0.3.2 → cited_cli-0.3.3}/.github/workflows/ci.yml +0 -0
  36. {cited_cli-0.3.2 → cited_cli-0.3.3}/.github/workflows/release.yml +0 -0
  37. {cited_cli-0.3.2 → cited_cli-0.3.3}/.gitignore +0 -0
  38. {cited_cli-0.3.2 → cited_cli-0.3.3}/CLAUDE.md +0 -0
  39. {cited_cli-0.3.2 → cited_cli-0.3.3}/DEMO.md +0 -0
  40. {cited_cli-0.3.2 → cited_cli-0.3.3}/FUTURE.md +0 -0
  41. {cited_cli-0.3.2 → cited_cli-0.3.3}/LICENSE +0 -0
  42. {cited_cli-0.3.2 → cited_cli-0.3.3}/TEST_RUNBOOK.md +0 -0
  43. {cited_cli-0.3.2 → cited_cli-0.3.3}/cited-plugins/.claude-plugin/plugin.json +0 -0
  44. {cited_cli-0.3.2 → cited_cli-0.3.3}/cited-plugins/agents/geo-analyst.md +0 -0
  45. {cited_cli-0.3.2 → cited_cli-0.3.3}/cited-plugins/commands/audit.md +0 -0
  46. {cited_cli-0.3.2 → cited_cli-0.3.3}/cited-plugins/commands/recommend.md +0 -0
  47. {cited_cli-0.3.2 → cited_cli-0.3.3}/cited-plugins/commands/status.md +0 -0
  48. {cited_cli-0.3.2 → cited_cli-0.3.3}/cited-plugins/settings.json +0 -0
  49. {cited_cli-0.3.2 → cited_cli-0.3.3}/cited-plugins/skills/business-setup/SKILL.md +0 -0
  50. {cited_cli-0.3.2 → cited_cli-0.3.3}/cited-plugins/skills/geo-audit/SKILL.md +0 -0
  51. {cited_cli-0.3.2 → cited_cli-0.3.3}/cited-plugins/skills/geo-recommend/SKILL.md +0 -0
  52. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/core/src/cited_core/api/__init__.py +0 -0
  53. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/core/src/cited_core/api/client.py +0 -0
  54. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/core/src/cited_core/auth/__init__.py +0 -0
  55. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/core/src/cited_core/auth/oauth_server.py +0 -0
  56. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/core/src/cited_core/auth/store.py +0 -0
  57. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/core/src/cited_core/config/__init__.py +0 -0
  58. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/core/src/cited_core/config/manager.py +0 -0
  59. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/core/src/cited_core/errors.py +0 -0
  60. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/mcp/src/cited_mcp/__init__.py +0 -0
  61. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/mcp/src/cited_mcp/__main__.py +0 -0
  62. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/mcp/src/cited_mcp/context.py +0 -0
  63. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/mcp/src/cited_mcp/tools/__init__.py +0 -0
  64. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/mcp/src/cited_mcp/tools/job.py +0 -0
  65. {cited_cli-0.3.2 → cited_cli-0.3.3}/packages/mcp/src/cited_mcp/tools/recommend.py +0 -0
  66. {cited_cli-0.3.2 → cited_cli-0.3.3}/scripts/cleanup_dev.py +0 -0
  67. {cited_cli-0.3.2 → cited_cli-0.3.3}/scripts/dev-install.sh +0 -0
  68. {cited_cli-0.3.2 → cited_cli-0.3.3}/scripts/release.sh +0 -0
  69. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/__init__.py +0 -0
  70. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/__main__.py +0 -0
  71. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/api/__init__.py +0 -0
  72. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/api/client.py +0 -0
  73. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/api/endpoints.py +0 -0
  74. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/app.py +0 -0
  75. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/auth/__init__.py +0 -0
  76. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/auth/oauth_server.py +0 -0
  77. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/auth/store.py +0 -0
  78. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/commands/__init__.py +0 -0
  79. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/commands/agent.py +0 -0
  80. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/commands/analytics.py +0 -0
  81. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/commands/audit.py +0 -0
  82. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/commands/business.py +0 -0
  83. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/commands/config_cmd.py +0 -0
  84. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/commands/hq.py +0 -0
  85. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/commands/job.py +0 -0
  86. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/commands/mcp_cmd.py +0 -0
  87. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/commands/named_audit.py +0 -0
  88. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/commands/recommend.py +0 -0
  89. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/commands/solution.py +0 -0
  90. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/config/__init__.py +0 -0
  91. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/config/constants.py +0 -0
  92. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/config/manager.py +0 -0
  93. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/mcp/__init__.py +0 -0
  94. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/mcp/context.py +0 -0
  95. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/mcp/server.py +0 -0
  96. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/mcp/tools/__init__.py +0 -0
  97. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/mcp/tools/_helpers.py +0 -0
  98. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/mcp/tools/audit.py +0 -0
  99. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/mcp/tools/auth.py +0 -0
  100. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/mcp/tools/business.py +0 -0
  101. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/mcp/tools/job.py +0 -0
  102. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/mcp/tools/recommend.py +0 -0
  103. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/mcp/tools/solution.py +0 -0
  104. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/output/__init__.py +0 -0
  105. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/output/formatter.py +0 -0
  106. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/output/progress.py +0 -0
  107. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/output/tables.py +0 -0
  108. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/utils/__init__.py +0 -0
  109. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/utils/errors.py +0 -0
  110. {cited_cli-0.3.2 → cited_cli-0.3.3}/src/cited_cli/utils/interactive.py +0 -0
  111. {cited_cli-0.3.2 → cited_cli-0.3.3}/tests/__init__.py +0 -0
  112. {cited_cli-0.3.2 → cited_cli-0.3.3}/tests/test_api_client.py +0 -0
  113. {cited_cli-0.3.2 → cited_cli-0.3.3}/tests/test_config.py +0 -0
  114. {cited_cli-0.3.2 → cited_cli-0.3.3}/tests/test_output.py +0 -0
  115. {cited_cli-0.3.2 → cited_cli-0.3.3}/tests/test_pipeline.py +0 -0
  116. {cited_cli-0.3.2 → cited_cli-0.3.3}/tests/test_version.py +0 -0
@@ -1,3 +1,24 @@
1
+ Metadata-Version: 2.4
2
+ Name: cited-cli
3
+ Version: 0.3.3
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.3
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.3; 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.3; 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.3"
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.3"
@@ -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,199 @@
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
+
105
+ ### Businesses
106
+ | Tool | Description |
107
+ |------|-------------|
108
+ | `list_businesses` | List all businesses on your account |
109
+ | `get_business` | Get details for a specific business |
110
+ | `create_business` | Create a new business |
111
+ | `update_business` | Update business details |
112
+ | `delete_business` | Delete a business |
113
+ | `crawl_business` | Start a website crawl for a business |
114
+ | `get_health_scores` | Get GEO health scores for a business |
115
+
116
+ ### Audit Templates
117
+ | Tool | Description |
118
+ |------|-------------|
119
+ | `list_audit_templates` | List all audit templates |
120
+ | `get_audit_template` | Get a specific template with questions |
121
+ | `create_audit_template` | Create a new audit template |
122
+ | `update_audit_template` | Update template name, description, or questions |
123
+ | `delete_audit_template` | Delete an audit template |
124
+
125
+ ### Audits
126
+ | Tool | Description |
127
+ |------|-------------|
128
+ | `start_audit` | Run a GEO audit using a template |
129
+ | `get_audit_status` | Check audit job status |
130
+ | `get_audit_result` | Get completed audit results |
131
+ | `list_audits` | List all audits |
132
+
133
+ ### Recommendations
134
+ | Tool | Description |
135
+ |------|-------------|
136
+ | `start_recommendation` | Generate recommendations from a completed audit |
137
+ | `get_recommendation_status` | Check recommendation job status |
138
+ | `get_recommendation_result` | Get full recommendation results |
139
+ | `get_recommendation_insights` | Get actionable insights with risk levels and coverage scores |
140
+ | `list_recommendations` | List all recommendation jobs |
141
+
142
+ ### Solutions
143
+ | Tool | Description |
144
+ |------|-------------|
145
+ | `start_solution` | Generate a solution for a specific insight or tip |
146
+ | `get_solution_status` | Check solution job status |
147
+ | `get_solution_result` | Get completed solution with implementation steps |
148
+ | `list_solutions` | List all solutions |
149
+
150
+ ### Jobs
151
+ | Tool | Description |
152
+ |------|-------------|
153
+ | `get_job_status` | Check status of any job by type and ID |
154
+
155
+ ## Example Workflow
156
+
157
+ Once connected, ask Claude to run a full GEO audit:
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:
162
+
163
+ 1. `list_businesses` → find the business ID
164
+ 2. `list_audit_templates` → find or create a template
165
+ 3. `start_audit` → kick off the audit
166
+ 4. `get_audit_status` → poll until complete
167
+ 5. `start_recommendation` → generate recommendations
168
+ 6. `get_recommendation_insights` → display actionable results
169
+ 7. `start_solution` → generate implementation steps for top issues
170
+
171
+ ## Environment Variables
172
+
173
+ | Variable | Description |
174
+ |----------|-------------|
175
+ | `CITED_TOKEN` | JWT auth token (stdio mode) |
176
+ | `CITED_AGENT_API_KEY` | Agent API key (alternative to JWT) |
177
+ | `CITED_API_URL` | API base URL (default: `https://api.youcited.com`) |
178
+ | `CITED_ENV` | Environment: `prod`, `dev`, or `local` |
179
+ | `MCP_URL` | Public URL of this MCP server (remote mode) |
180
+ | `JWT_SECRET` | Secret for signing OAuth tokens (remote mode) |
181
+
182
+ ## Development
183
+
184
+ ```bash
185
+ # Install in editable mode with dev dependencies
186
+ pip install -e packages/core
187
+ pip install -e "packages/mcp[dev]"
188
+
189
+ # Run tests
190
+ pytest tests/test_mcp_server.py tests/test_mcp_tools.py -v
191
+
192
+ # Lint and type check
193
+ ruff check packages/mcp/
194
+ mypy packages/mcp/src --ignore-missing-imports
195
+ ```
196
+
197
+ ## License
198
+
199
+ Proprietary — see [youcited.com](https://youcited.com) for terms.
@@ -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.3"
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.3",
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 = [