grai-mcp 0.1.0__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.
@@ -0,0 +1,16 @@
1
+ # Build output. Regenerated by: cd source && python3 scripts/build.py
2
+ source/dist/
3
+ dist/
4
+
5
+ # The root shipped page is a build output. The deploy copy in sale/grai.html
6
+ # must stay tracked because Cloudflare Pages serves it to the worker.
7
+ /grai.html
8
+
9
+ # Local junk
10
+ .DS_Store
11
+ *.bak
12
+ __pycache__/
13
+ *.pyc
14
+ node_modules/
15
+ .wrangler/
16
+ .preview/
grai_mcp-0.1.0/LICENSE ADDED
@@ -0,0 +1,27 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 grai
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of the instruction set, the skill, the research notes and the documentation in
7
+ this repository (the "Software"), to deal in the Software without restriction,
8
+ including without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense and/or sell copies of the Software, and to permit persons
10
+ to whom the Software is furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ Scope note. The Software defined above is the instruction layer only. The
24
+ grai application, that is the page, the sparring engine, the deterministic
25
+ preflight engine and the Client Cadence Certificate, is not part of this
26
+ licence and is not covered by it. The application is licensed separately under
27
+ COMMERCIAL-LICENCE.md.
@@ -0,0 +1,87 @@
1
+ Metadata-Version: 2.5
2
+ Name: grai-mcp
3
+ Version: 0.1.0
4
+ Summary: Deterministic cadence gate and cryptographic seal verification as an MCP server
5
+ Project-URL: Homepage, https://grai.page
6
+ Project-URL: Repository, https://github.com/adrianpeticila/grai
7
+ Project-URL: Issues, https://github.com/adrianpeticila/grai/issues
8
+ Author-email: grai <hello@grai.page>
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: ai-slop,cadence,linter,mcp,model-context-protocol,writing
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Requires-Python: >=3.9
16
+ Description-Content-Type: text/markdown
17
+
18
+ # grai-gate MCP server
19
+
20
+ <!-- mcp-name: io.github.adrianpeticila/grai-mcp -->
21
+
22
+ Deterministic cadence scoring and cryptographic seal verification for AI-generated
23
+ drafts, exposed as a Model Context Protocol server over stdio.
24
+
25
+ No API key needed for scoring. The gate is a pure Python scorer with no
26
+ dependencies outside the standard library.
27
+
28
+ ## Install
29
+
30
+ ```bash
31
+ uvx --from grai-mcp grai-gate-mcp
32
+ ```
33
+
34
+ Or with pip:
35
+
36
+ ```bash
37
+ pip install grai-mcp
38
+ grai-gate-mcp
39
+ ```
40
+
41
+ ## Configure your client
42
+
43
+ Claude Desktop, Cursor, Cline, Windsurf and anything else that reads `mcpServers`:
44
+
45
+ ```json
46
+ {
47
+ "mcpServers": {
48
+ "grai-gate": {
49
+ "command": "uvx",
50
+ "args": ["--from", "grai-mcp", "grai-gate-mcp"]
51
+ }
52
+ }
53
+ }
54
+ ```
55
+
56
+ ## Tools
57
+
58
+ | Tool | What it does | Needs network |
59
+ | --- | --- | --- |
60
+ | `grai_score_draft` | Scores a draft, returns score, sentence-length CV, failed rules | no |
61
+ | `grai_issue_agency_seal` | Audits a client draft and returns a public verification link | yes |
62
+ | `grai_verify_seal` | Verifies a signed seal record against the public keyring | yes |
63
+
64
+ `grai_score_draft` runs entirely offline. If the local scorer cannot load, it
65
+ falls back to the hosted endpoint.
66
+
67
+ ## Example
68
+
69
+ ```json
70
+ {"name": "grai_score_draft", "arguments": {"text": "Your draft goes here."}}
71
+ ```
72
+
73
+ The response carries the score, the CV, the rules that failed, and upgrade
74
+ links. A score of 85 or higher passes.
75
+
76
+ ## What the gate checks
77
+
78
+ Sentence-length variance (CV), contrastive negation, epiphany openers,
79
+ corporate slop words, em dashes, structural monotony, and five other
80
+ deterministic rules. Same engine as the `grai-gate` CLI, so scores match
81
+ between the CLI and the MCP server.
82
+
83
+ ## Links
84
+
85
+ - Product: https://grai.page
86
+ - Source: https://github.com/adrianpeticila/grai
87
+ - License: MIT
@@ -0,0 +1,70 @@
1
+ # grai-gate MCP server
2
+
3
+ <!-- mcp-name: io.github.adrianpeticila/grai-mcp -->
4
+
5
+ Deterministic cadence scoring and cryptographic seal verification for AI-generated
6
+ drafts, exposed as a Model Context Protocol server over stdio.
7
+
8
+ No API key needed for scoring. The gate is a pure Python scorer with no
9
+ dependencies outside the standard library.
10
+
11
+ ## Install
12
+
13
+ ```bash
14
+ uvx --from grai-mcp grai-gate-mcp
15
+ ```
16
+
17
+ Or with pip:
18
+
19
+ ```bash
20
+ pip install grai-mcp
21
+ grai-gate-mcp
22
+ ```
23
+
24
+ ## Configure your client
25
+
26
+ Claude Desktop, Cursor, Cline, Windsurf and anything else that reads `mcpServers`:
27
+
28
+ ```json
29
+ {
30
+ "mcpServers": {
31
+ "grai-gate": {
32
+ "command": "uvx",
33
+ "args": ["--from", "grai-mcp", "grai-gate-mcp"]
34
+ }
35
+ }
36
+ }
37
+ ```
38
+
39
+ ## Tools
40
+
41
+ | Tool | What it does | Needs network |
42
+ | --- | --- | --- |
43
+ | `grai_score_draft` | Scores a draft, returns score, sentence-length CV, failed rules | no |
44
+ | `grai_issue_agency_seal` | Audits a client draft and returns a public verification link | yes |
45
+ | `grai_verify_seal` | Verifies a signed seal record against the public keyring | yes |
46
+
47
+ `grai_score_draft` runs entirely offline. If the local scorer cannot load, it
48
+ falls back to the hosted endpoint.
49
+
50
+ ## Example
51
+
52
+ ```json
53
+ {"name": "grai_score_draft", "arguments": {"text": "Your draft goes here."}}
54
+ ```
55
+
56
+ The response carries the score, the CV, the rules that failed, and upgrade
57
+ links. A score of 85 or higher passes.
58
+
59
+ ## What the gate checks
60
+
61
+ Sentence-length variance (CV), contrastive negation, epiphany openers,
62
+ corporate slop words, em dashes, structural monotony, and five other
63
+ deterministic rules. Same engine as the `grai-gate` CLI, so scores match
64
+ between the CLI and the MCP server.
65
+
66
+ ## Links
67
+
68
+ - Product: https://grai.page
69
+ - Source: https://github.com/adrianpeticila/grai
70
+ - License: MIT
@@ -0,0 +1,30 @@
1
+ [project]
2
+ name = "grai-mcp"
3
+ version = "0.1.0"
4
+ description = "Deterministic cadence gate and cryptographic seal verification as an MCP server"
5
+ readme = "README.md"
6
+ requires-python = ">=3.9"
7
+ license = { text = "MIT" }
8
+ authors = [{ name = "grai", email = "hello@grai.page" }]
9
+ keywords = ["mcp", "model-context-protocol", "writing", "linter", "cadence", "ai-slop"]
10
+ classifiers = [
11
+ "Programming Language :: Python :: 3",
12
+ "License :: OSI Approved :: MIT License",
13
+ "Operating System :: OS Independent",
14
+ ]
15
+ dependencies = []
16
+
17
+ [project.urls]
18
+ Homepage = "https://grai.page"
19
+ Repository = "https://github.com/adrianpeticila/grai"
20
+ Issues = "https://github.com/adrianpeticila/grai/issues"
21
+
22
+ [project.scripts]
23
+ grai-gate-mcp = "grai_mcp.server:main"
24
+
25
+ [build-system]
26
+ requires = ["hatchling"]
27
+ build-backend = "hatchling.build"
28
+
29
+ [tool.hatch.build.targets.wheel]
30
+ packages = ["src/grai_mcp"]
@@ -0,0 +1,5 @@
1
+ """grai-gate MCP server: deterministic cadence scoring and seal verification."""
2
+
3
+ __version__ = "0.1.0"
4
+
5
+ __all__ = ["__version__"]