gridzen-developer-kit 0.5.0__tar.gz → 0.6.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.
- {gridzen_developer_kit-0.5.0/src/gridzen_developer_kit.egg-info → gridzen_developer_kit-0.6.0}/PKG-INFO +27 -12
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/README.es.md +22 -5
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/README.md +26 -11
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/README.zh-CN.md +22 -5
- {gridzen_developer_kit-0.5.0/src/gridzen_developer/web → gridzen_developer_kit-0.6.0/clients}/compatibility.json +1 -1
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/pyproject.toml +1 -1
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/gridzen-explain-verification/SKILL.md +3 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/gridzen-integrate-sandbox/SKILL.md +3 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/gridzen-integrate-sandbox/references/api.md +1 -1
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/gridzen-select-verification/SKILL.md +3 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/mexico-pilot-scoper/SKILL.md +3 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/payout-policy-designer/SKILL.md +3 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/provider-rights-readiness/SKILL.md +3 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/__init__.py +1 -1
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/cli.py +26 -1
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/mcp.py +24 -2
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/product_feedback.py +15 -2
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/server.py +12 -3
- gridzen_developer_kit-0.6.0/src/gridzen_developer/telemetry.py +71 -0
- {gridzen_developer_kit-0.5.0/clients → gridzen_developer_kit-0.6.0/src/gridzen_developer/web}/compatibility.json +1 -1
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/locales.js +3 -3
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/privacy.html +1 -1
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0/src/gridzen_developer_kit.egg-info}/PKG-INFO +27 -12
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer_kit.egg-info/SOURCES.txt +2 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/tests/test_remote.py +1 -1
- gridzen_developer_kit-0.6.0/tests/test_telemetry.py +73 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/LICENSE +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/MANIFEST.in +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/NOTICE.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/clients/claude-code.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/clients/claude-desktop.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/clients/cline.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/clients/codex.toml +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/clients/copilot-cli.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/clients/cursor.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/clients/gemini-cli.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/clients/opencode.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/clients/roo-code.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/clients/vscode.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/docs/harness/README.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/docs/harness/claude-code.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/docs/harness/claude-desktop.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/docs/harness/cline.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/docs/harness/codex.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/docs/harness/copilot-cli.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/docs/harness/cursor.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/docs/harness/gemini-cli.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/docs/harness/opencode.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/docs/harness/roo-code.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/docs/harness/vscode.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/scripts/check_integration.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/setup.cfg +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/mexico-pilot-scoper/LICENSE +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/mexico-pilot-scoper/README.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/mexico-pilot-scoper/agent-evals.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/mexico-pilot-scoper/evaluate.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/mexico-pilot-scoper/example-input.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/mexico-pilot-scoper/examples/missing-evidence.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/mexico-pilot-scoper/examples/normal.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/mexico-pilot-scoper/examples/out-of-scope.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/mexico-pilot-scoper/spec.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/mexico-pilot-scoper/test_evaluate.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/payout-policy-designer/LICENSE +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/payout-policy-designer/README.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/payout-policy-designer/agent-evals.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/payout-policy-designer/evaluate.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/payout-policy-designer/example-input.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/payout-policy-designer/examples/missing-evidence.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/payout-policy-designer/examples/normal.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/payout-policy-designer/examples/out-of-scope.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/payout-policy-designer/spec.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/payout-policy-designer/test_evaluate.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/provider-rights-readiness/LICENSE +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/provider-rights-readiness/README.md +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/provider-rights-readiness/agent-evals.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/provider-rights-readiness/evaluate.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/provider-rights-readiness/example-input.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/provider-rights-readiness/examples/missing-evidence.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/provider-rights-readiness/examples/normal.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/provider-rights-readiness/examples/out-of-scope.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/provider-rights-readiness/spec.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/provider-rights-readiness/test_evaluate.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/client.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/core.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/data/LICENSE +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/data/catalog.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/remote.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/setup.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/skills.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/usage.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/client-configs.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/developer.css +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/developer.js +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/harnesses.html +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/harnesses.js +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/icon.png +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/icon.svg +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/index.html +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/language.js +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/layout.js +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/quickstart.html +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/site-shell.json +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/support.html +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/web/terms.html +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer_kit.egg-info/dependency_links.txt +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer_kit.egg-info/entry_points.txt +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer_kit.egg-info/requires.txt +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer_kit.egg-info/top_level.txt +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/tests/test_call_sources.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/tests/test_developer.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/tests/test_localization.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/tests/test_product_feedback.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/tests/test_setup.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/tests/test_site_shell.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/tests/test_usage.py +0 -0
- {gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/tests/test_workflow_skills.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gridzen-developer-kit
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: Gridzen research catalog, integration planner and explicit verification sandbox
|
|
5
5
|
Author-email: Gridzen <open@gridzen.ai>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -27,7 +27,7 @@ Requires-Dist: fastapi==0.142.4; extra == "test"
|
|
|
27
27
|
Requires-Dist: uvicorn==0.54.0; extra == "test"
|
|
28
28
|
Dynamic: license-file
|
|
29
29
|
|
|
30
|
-
# Gridzen Developer Kit 0.
|
|
30
|
+
# Gridzen Developer Kit 0.6.0
|
|
31
31
|
|
|
32
32
|
Research for 198 countries/territories, a verification integration planner, five synthetic outcomes, an HTTP SDK, local MCP server and six Skills. **No live provider is enabled. No real person is verified.** The research snapshot is dated 2026-10-07, with source links and file hashes.
|
|
33
33
|
|
|
@@ -59,7 +59,7 @@ Register a local stdio server in your MCP client. Use the absolute path to the i
|
|
|
59
59
|
{"mcpServers":{"gridzen":{"command":"/absolute/path/to/.venv/bin/gridzen-mcp","args":[]}}}
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
Tools: get_coverage, plan_verification, create_sandbox_verification, get_sandbox_verification, explain_result. All operate on local research or synthetic fixtures, with read-only/idempotent annotations. Public research/sandbox MCP endpoint: `https://gridzen.ai/developers/mcp` (Streamable HTTP, no account or API key). It has the same five tools and zero live providers. Remote usage sends the documented arguments to Gridzen; local stdio
|
|
62
|
+
Tools: get_coverage, plan_verification, create_sandbox_verification, get_sandbox_verification, explain_result. All operate on local research or synthetic fixtures, with read-only/idempotent annotations. Public research/sandbox MCP endpoint: `https://gridzen.ai/developers/mcp` (Streamable HTTP, no account or API key). It has the same five tools and zero live providers. Remote usage sends the documented arguments to Gridzen; local stdio is offline by default. Limits: 120 requests/minute per client address and 600/minute overall, returning HTTP 429 with Retry-After.
|
|
63
63
|
|
|
64
64
|
## Skills
|
|
65
65
|
|
|
@@ -106,10 +106,10 @@ npx skills add immurray/gridzen-developer-kit
|
|
|
106
106
|
Install the tagged Python/MCP release from GitHub (Python 3.11+ and Git):
|
|
107
107
|
|
|
108
108
|
```sh
|
|
109
|
-
python -m pip install "gridzen-developer-kit[mcp] @ git+https://github.com/immurray/gridzen-developer-kit.git@v0.
|
|
109
|
+
python -m pip install "gridzen-developer-kit[mcp] @ git+https://github.com/immurray/gridzen-developer-kit.git@v0.6.0"
|
|
110
110
|
```
|
|
111
111
|
|
|
112
|
-
PyPI 0.
|
|
112
|
+
PyPI 0.6.0 is published and verified. Install with `python -m pip install
|
|
113
113
|
gridzen-developer-kit`. See [the release tracker](distribution/STATUS.md) for
|
|
114
114
|
publication and installation evidence.
|
|
115
115
|
|
|
@@ -132,11 +132,11 @@ Original code and Skills: MIT. Research provenance and third-party rights:
|
|
|
132
132
|
Source, release downloads, the official MCP Registry entry and six Skills.sh pages are public. Docker catalog submission is awaiting review. See [the publication ledger](distribution/STATUS.md) for exact status and remaining platform steps.
|
|
133
133
|
|
|
134
134
|
|
|
135
|
-
## Six bundled Skills (0.
|
|
135
|
+
## Six bundled Skills (0.6.0)
|
|
136
136
|
|
|
137
137
|
`python -m pip install gridzen-developer-kit` installs the CLI, stdio MCP dependencies
|
|
138
|
-
and all six Skill directories. Version 0.
|
|
139
|
-
[PyPI](https://pypi.org/project/gridzen-developer-kit/0.
|
|
138
|
+
and all six Skill directories. Version 0.6.0 is published on
|
|
139
|
+
[PyPI](https://pypi.org/project/gridzen-developer-kit/0.6.0/); clean installation,
|
|
140
140
|
CLI, stdio MCP and all six bundled Skill directories were verified. No extra MCP
|
|
141
141
|
dependency installation is required.
|
|
142
142
|
|
|
@@ -157,7 +157,7 @@ workflows, version 1.0.0: `mexico-pilot-scoper`, `payout-policy-designer`, and
|
|
|
157
157
|
and agent acceptance prompts. They make no third-party calls and grant no real
|
|
158
158
|
verification, legal approval or regulatory conclusion.
|
|
159
159
|
|
|
160
|
-
## Configure your assistant (v0.
|
|
160
|
+
## Configure your assistant (v0.6.0)
|
|
161
161
|
|
|
162
162
|
```sh
|
|
163
163
|
python3 -m venv .venv
|
|
@@ -174,7 +174,7 @@ Use `--client` for Codex, Claude Code/Desktop, Cursor, VS Code/Copilot, Copilot
|
|
|
174
174
|
Hosted calls count successful tool invocations, not customers. Existing totals
|
|
175
175
|
remain unchanged. The hosted service records UTC day, tool name, one source
|
|
176
176
|
category and a count; it never persists request arguments or client addresses.
|
|
177
|
-
Historical and unlabelled calls remain `unknown`. Local stdio
|
|
177
|
+
Historical and unlabelled calls remain `unknown`. Local stdio is offline by default.
|
|
178
178
|
|
|
179
179
|
Explicit acceptance requests to the loopback-published service may set
|
|
180
180
|
`X-Gridzen-Purpose: internal_test`. Only configured local peers with no forwarded
|
|
@@ -187,7 +187,7 @@ and must never contain public client addresses. Source counts use the existing
|
|
|
187
187
|
new PyPI version or enable any live provider.
|
|
188
188
|
|
|
189
189
|
|
|
190
|
-
## Customer tasks and voluntary feedback (0.
|
|
190
|
+
## Customer tasks and voluntary feedback (0.6.0)
|
|
191
191
|
|
|
192
192
|
```sh
|
|
193
193
|
gridzen plan --country US --event onboarding --task signup_phone
|
|
@@ -201,4 +201,19 @@ gridzen feedback --input task-summary.json --share
|
|
|
201
201
|
|
|
202
202
|
Phone intelligence is not OTP or ownership verification. Identity fixtures are not hosted document/liveness sessions. Payout matching remains a prototype with no real enabled route. Provider intake Skills are for provider operations/BYO, not a universal customer gate.
|
|
203
203
|
|
|
204
|
-
Remote APIs count fixed task/capability/country/stage/error categories for 90 days, including technical failures. They store no arguments, identity data, credentials, raw chats or per-user tracking.
|
|
204
|
+
Remote APIs count fixed task/capability/country/stage/error categories for 90 days, including technical failures. They store no arguments, identity data, credentials, raw chats or per-user tracking. Local feedback is off by default. After explicit opt-in, CLI and stdio MCP automatically upload category-only events. Reading static Skills remains unobservable. Optional feedback requires explicit consent, contains only fixed categories, and is unverified self-reported evidence. A SHA-256 hash of its random receipt ID is retained 30 days for 30-day retry deduplication; the ID itself is not stored. Counters are capped at 10,000 requests/day and 500 summaries/day per database; missing history or offline usage is unknown. Requests are not unique customers.
|
|
205
|
+
|
|
206
|
+
## Optional automatic local feedback (0.6.0)
|
|
207
|
+
|
|
208
|
+
```sh
|
|
209
|
+
gridzen telemetry status
|
|
210
|
+
# Run only after reading and agreeing to category-only automatic sharing:
|
|
211
|
+
gridzen telemetry enable --consent
|
|
212
|
+
gridzen plan --country US --event onboarding --task signup_phone
|
|
213
|
+
# Send one queued event per invocation after reconnecting:
|
|
214
|
+
gridzen telemetry flush
|
|
215
|
+
# Disable future uploads and clear the pending queue:
|
|
216
|
+
gridzen telemetry disable
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
No network calls occur from local CLI/MCP when disabled. Consent is saved per OS user, not silently added to a project. Events contain only documented categories, ISO country, and a random per-event receipt, with no conversation, identity fields, credentials, user or project IDs. Feedback failures do not fail tool execution. The local queue is capped at 1,000 events/30 days; reconnect or `flush` retries one queued event, with a one-second HTTP timeout. Uploads are self-reported usage, not authenticated customers or completed verification. No background daemon is installed. Merely reading a Skill is unobservable; after consent, an Agent can explicitly record a fixed-category task summary.
|
|
@@ -60,11 +60,11 @@ Código original bajo MIT; consulte NOTICE.md para los derechos de terceros.
|
|
|
60
60
|
El código, las descargas, la entrada oficial de MCP Registry y tres páginas de Skills.sh están publicados. La propuesta del catálogo de Docker está pendiente de revisión. Consulta [el registro de publicación](distribution/STATUS.md).
|
|
61
61
|
|
|
62
62
|
|
|
63
|
-
## Six bundled Skills (0.
|
|
63
|
+
## Six bundled Skills (0.6.0)
|
|
64
64
|
|
|
65
65
|
`python -m pip install gridzen-developer-kit` installs the CLI, stdio MCP dependencies
|
|
66
|
-
and all six Skill directories. Version 0.
|
|
67
|
-
[PyPI](https://pypi.org/project/gridzen-developer-kit/0.
|
|
66
|
+
and all six Skill directories. Version 0.6.0 is published on
|
|
67
|
+
[PyPI](https://pypi.org/project/gridzen-developer-kit/0.6.0/); clean installation,
|
|
68
68
|
CLI, stdio MCP and all six bundled Skill directories were verified. No extra MCP
|
|
69
69
|
dependency installation is required.
|
|
70
70
|
|
|
@@ -100,7 +100,7 @@ Usa Python 3.11+ en un entorno virtual. Primero revisa el resultado y después a
|
|
|
100
100
|
[Instructions / 使用说明](https://gridzen.ai/developers/harnesses.html) · [Compatibility / 测试记录](clients/compatibility.json)
|
|
101
101
|
|
|
102
102
|
|
|
103
|
-
## Customer tasks and voluntary feedback (0.
|
|
103
|
+
## Customer tasks and voluntary feedback (0.6.0)
|
|
104
104
|
|
|
105
105
|
```sh
|
|
106
106
|
gridzen plan --country US --event onboarding --task signup_phone
|
|
@@ -114,4 +114,21 @@ gridzen feedback --input task-summary.json --share
|
|
|
114
114
|
|
|
115
115
|
Phone intelligence is not OTP or ownership verification. Identity fixtures are not hosted document/liveness sessions. Payout matching remains a prototype with no real enabled route. Provider intake Skills are for provider operations/BYO, not a universal customer gate.
|
|
116
116
|
|
|
117
|
-
Remote APIs count fixed task/capability/country/stage/error categories for 90 days, including technical failures. They store no arguments, identity data, credentials, raw chats or per-user tracking.
|
|
117
|
+
Remote APIs count fixed task/capability/country/stage/error categories for 90 days, including technical failures. They store no arguments, identity data, credentials, raw chats or per-user tracking. Local feedback is off by default. After explicit opt-in, CLI and stdio MCP automatically upload category-only events. Reading static Skills remains unobservable. Optional feedback requires explicit consent, contains only fixed categories, and is unverified self-reported evidence. A SHA-256 hash of its random receipt ID is retained 30 days for 30-day retry deduplication; the ID itself is not stored. Counters are capped at 10,000 requests/day and 500 summaries/day per database; missing history or offline usage is unknown. Requests are not unique customers.
|
|
118
|
+
|
|
119
|
+
## Optional automatic local feedback (0.6.0)
|
|
120
|
+
|
|
121
|
+
```sh
|
|
122
|
+
gridzen telemetry status
|
|
123
|
+
# Run only after reading and agreeing to category-only automatic sharing:
|
|
124
|
+
gridzen telemetry enable --consent
|
|
125
|
+
gridzen plan --country US --event onboarding --task signup_phone
|
|
126
|
+
# Send one queued event per invocation after reconnecting:
|
|
127
|
+
gridzen telemetry flush
|
|
128
|
+
# Disable future uploads and clear the pending queue:
|
|
129
|
+
gridzen telemetry disable
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
No network calls occur from local CLI/MCP when disabled. Consent is saved per OS user, not silently added to a project. Events contain only documented categories, ISO country, and a random per-event receipt, with no conversation, identity fields, credentials, user or project IDs. Feedback failures do not fail tool execution. The local queue is capped at 1,000 events/30 days; reconnect or `flush` retries one queued event, with a one-second HTTP timeout. Uploads are self-reported usage, not authenticated customers or completed verification. No background daemon is installed. Merely reading a Skill is unobservable; after consent, an Agent can explicitly record a fixed-category task summary.
|
|
133
|
+
|
|
134
|
+
La telemetría está desactivada por defecto. Tras consentimiento explícito, CLI y stdio envían categorías automáticamente. `gridzen telemetry disable` desactiva y borra la cola. Sin conexión: máximo 1000 eventos durante 30 días. Cada llamada o flush reintenta un evento; no hay servicio en segundo plano. No se envían conversaciones, identidad, credenciales ni IDs de usuarios/proyectos. Leer un Skill no se observa; un Agent puede registrar un resumen tras consentimiento previo. Son datos autodeclarados, no clientes autenticados.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Gridzen Developer Kit 0.
|
|
1
|
+
# Gridzen Developer Kit 0.6.0
|
|
2
2
|
|
|
3
3
|
Research for 198 countries/territories, a verification integration planner, five synthetic outcomes, an HTTP SDK, local MCP server and six Skills. **No live provider is enabled. No real person is verified.** The research snapshot is dated 2026-10-07, with source links and file hashes.
|
|
4
4
|
|
|
@@ -30,7 +30,7 @@ Register a local stdio server in your MCP client. Use the absolute path to the i
|
|
|
30
30
|
{"mcpServers":{"gridzen":{"command":"/absolute/path/to/.venv/bin/gridzen-mcp","args":[]}}}
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
Tools: get_coverage, plan_verification, create_sandbox_verification, get_sandbox_verification, explain_result. All operate on local research or synthetic fixtures, with read-only/idempotent annotations. Public research/sandbox MCP endpoint: `https://gridzen.ai/developers/mcp` (Streamable HTTP, no account or API key). It has the same five tools and zero live providers. Remote usage sends the documented arguments to Gridzen; local stdio
|
|
33
|
+
Tools: get_coverage, plan_verification, create_sandbox_verification, get_sandbox_verification, explain_result. All operate on local research or synthetic fixtures, with read-only/idempotent annotations. Public research/sandbox MCP endpoint: `https://gridzen.ai/developers/mcp` (Streamable HTTP, no account or API key). It has the same five tools and zero live providers. Remote usage sends the documented arguments to Gridzen; local stdio is offline by default. Limits: 120 requests/minute per client address and 600/minute overall, returning HTTP 429 with Retry-After.
|
|
34
34
|
|
|
35
35
|
## Skills
|
|
36
36
|
|
|
@@ -77,10 +77,10 @@ npx skills add immurray/gridzen-developer-kit
|
|
|
77
77
|
Install the tagged Python/MCP release from GitHub (Python 3.11+ and Git):
|
|
78
78
|
|
|
79
79
|
```sh
|
|
80
|
-
python -m pip install "gridzen-developer-kit[mcp] @ git+https://github.com/immurray/gridzen-developer-kit.git@v0.
|
|
80
|
+
python -m pip install "gridzen-developer-kit[mcp] @ git+https://github.com/immurray/gridzen-developer-kit.git@v0.6.0"
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
-
PyPI 0.
|
|
83
|
+
PyPI 0.6.0 is published and verified. Install with `python -m pip install
|
|
84
84
|
gridzen-developer-kit`. See [the release tracker](distribution/STATUS.md) for
|
|
85
85
|
publication and installation evidence.
|
|
86
86
|
|
|
@@ -103,11 +103,11 @@ Original code and Skills: MIT. Research provenance and third-party rights:
|
|
|
103
103
|
Source, release downloads, the official MCP Registry entry and six Skills.sh pages are public. Docker catalog submission is awaiting review. See [the publication ledger](distribution/STATUS.md) for exact status and remaining platform steps.
|
|
104
104
|
|
|
105
105
|
|
|
106
|
-
## Six bundled Skills (0.
|
|
106
|
+
## Six bundled Skills (0.6.0)
|
|
107
107
|
|
|
108
108
|
`python -m pip install gridzen-developer-kit` installs the CLI, stdio MCP dependencies
|
|
109
|
-
and all six Skill directories. Version 0.
|
|
110
|
-
[PyPI](https://pypi.org/project/gridzen-developer-kit/0.
|
|
109
|
+
and all six Skill directories. Version 0.6.0 is published on
|
|
110
|
+
[PyPI](https://pypi.org/project/gridzen-developer-kit/0.6.0/); clean installation,
|
|
111
111
|
CLI, stdio MCP and all six bundled Skill directories were verified. No extra MCP
|
|
112
112
|
dependency installation is required.
|
|
113
113
|
|
|
@@ -128,7 +128,7 @@ workflows, version 1.0.0: `mexico-pilot-scoper`, `payout-policy-designer`, and
|
|
|
128
128
|
and agent acceptance prompts. They make no third-party calls and grant no real
|
|
129
129
|
verification, legal approval or regulatory conclusion.
|
|
130
130
|
|
|
131
|
-
## Configure your assistant (v0.
|
|
131
|
+
## Configure your assistant (v0.6.0)
|
|
132
132
|
|
|
133
133
|
```sh
|
|
134
134
|
python3 -m venv .venv
|
|
@@ -145,7 +145,7 @@ Use `--client` for Codex, Claude Code/Desktop, Cursor, VS Code/Copilot, Copilot
|
|
|
145
145
|
Hosted calls count successful tool invocations, not customers. Existing totals
|
|
146
146
|
remain unchanged. The hosted service records UTC day, tool name, one source
|
|
147
147
|
category and a count; it never persists request arguments or client addresses.
|
|
148
|
-
Historical and unlabelled calls remain `unknown`. Local stdio
|
|
148
|
+
Historical and unlabelled calls remain `unknown`. Local stdio is offline by default.
|
|
149
149
|
|
|
150
150
|
Explicit acceptance requests to the loopback-published service may set
|
|
151
151
|
`X-Gridzen-Purpose: internal_test`. Only configured local peers with no forwarded
|
|
@@ -158,7 +158,7 @@ and must never contain public client addresses. Source counts use the existing
|
|
|
158
158
|
new PyPI version or enable any live provider.
|
|
159
159
|
|
|
160
160
|
|
|
161
|
-
## Customer tasks and voluntary feedback (0.
|
|
161
|
+
## Customer tasks and voluntary feedback (0.6.0)
|
|
162
162
|
|
|
163
163
|
```sh
|
|
164
164
|
gridzen plan --country US --event onboarding --task signup_phone
|
|
@@ -172,4 +172,19 @@ gridzen feedback --input task-summary.json --share
|
|
|
172
172
|
|
|
173
173
|
Phone intelligence is not OTP or ownership verification. Identity fixtures are not hosted document/liveness sessions. Payout matching remains a prototype with no real enabled route. Provider intake Skills are for provider operations/BYO, not a universal customer gate.
|
|
174
174
|
|
|
175
|
-
Remote APIs count fixed task/capability/country/stage/error categories for 90 days, including technical failures. They store no arguments, identity data, credentials, raw chats or per-user tracking.
|
|
175
|
+
Remote APIs count fixed task/capability/country/stage/error categories for 90 days, including technical failures. They store no arguments, identity data, credentials, raw chats or per-user tracking. Local feedback is off by default. After explicit opt-in, CLI and stdio MCP automatically upload category-only events. Reading static Skills remains unobservable. Optional feedback requires explicit consent, contains only fixed categories, and is unverified self-reported evidence. A SHA-256 hash of its random receipt ID is retained 30 days for 30-day retry deduplication; the ID itself is not stored. Counters are capped at 10,000 requests/day and 500 summaries/day per database; missing history or offline usage is unknown. Requests are not unique customers.
|
|
176
|
+
|
|
177
|
+
## Optional automatic local feedback (0.6.0)
|
|
178
|
+
|
|
179
|
+
```sh
|
|
180
|
+
gridzen telemetry status
|
|
181
|
+
# Run only after reading and agreeing to category-only automatic sharing:
|
|
182
|
+
gridzen telemetry enable --consent
|
|
183
|
+
gridzen plan --country US --event onboarding --task signup_phone
|
|
184
|
+
# Send one queued event per invocation after reconnecting:
|
|
185
|
+
gridzen telemetry flush
|
|
186
|
+
# Disable future uploads and clear the pending queue:
|
|
187
|
+
gridzen telemetry disable
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
No network calls occur from local CLI/MCP when disabled. Consent is saved per OS user, not silently added to a project. Events contain only documented categories, ISO country, and a random per-event receipt, with no conversation, identity fields, credentials, user or project IDs. Feedback failures do not fail tool execution. The local queue is capped at 1,000 events/30 days; reconnect or `flush` retries one queued event, with a one-second HTTP timeout. Uploads are self-reported usage, not authenticated customers or completed verification. No background daemon is installed. Merely reading a Skill is unobservable; after consent, an Agent can explicitly record a fixed-category task summary.
|
|
@@ -59,11 +59,11 @@ Skills 安装:`npx skills add immurray/gridzen-developer-kit`。
|
|
|
59
59
|
源码、版本下载、官方 MCP Registry 和三个 Skills.sh 技能页已公开;Docker 目录投稿待审核。各渠道真实状态及剩余步骤见[发布台账](distribution/STATUS.md)。
|
|
60
60
|
|
|
61
61
|
|
|
62
|
-
## Six bundled Skills (0.
|
|
62
|
+
## Six bundled Skills (0.6.0)
|
|
63
63
|
|
|
64
64
|
`python -m pip install gridzen-developer-kit` installs the CLI, stdio MCP dependencies
|
|
65
|
-
and all six Skill directories. Version 0.
|
|
66
|
-
[PyPI](https://pypi.org/project/gridzen-developer-kit/0.
|
|
65
|
+
and all six Skill directories. Version 0.6.0 is published on
|
|
66
|
+
[PyPI](https://pypi.org/project/gridzen-developer-kit/0.6.0/); clean installation,
|
|
67
67
|
CLI, stdio MCP and all six bundled Skill directories were verified. No extra MCP
|
|
68
68
|
dependency installation is required.
|
|
69
69
|
|
|
@@ -99,7 +99,7 @@ gridzen setup --client all --project . --apply
|
|
|
99
99
|
[Instructions / 使用说明](https://gridzen.ai/developers/harnesses.html) · [Compatibility / 测试记录](clients/compatibility.json)
|
|
100
100
|
|
|
101
101
|
|
|
102
|
-
## Customer tasks and voluntary feedback (0.
|
|
102
|
+
## Customer tasks and voluntary feedback (0.6.0)
|
|
103
103
|
|
|
104
104
|
```sh
|
|
105
105
|
gridzen plan --country US --event onboarding --task signup_phone
|
|
@@ -113,4 +113,21 @@ gridzen feedback --input task-summary.json --share
|
|
|
113
113
|
|
|
114
114
|
Phone intelligence is not OTP or ownership verification. Identity fixtures are not hosted document/liveness sessions. Payout matching remains a prototype with no real enabled route. Provider intake Skills are for provider operations/BYO, not a universal customer gate.
|
|
115
115
|
|
|
116
|
-
Remote APIs count fixed task/capability/country/stage/error categories for 90 days, including technical failures. They store no arguments, identity data, credentials, raw chats or per-user tracking.
|
|
116
|
+
Remote APIs count fixed task/capability/country/stage/error categories for 90 days, including technical failures. They store no arguments, identity data, credentials, raw chats or per-user tracking. Local feedback is off by default. After explicit opt-in, CLI and stdio MCP automatically upload category-only events. Reading static Skills remains unobservable. Optional feedback requires explicit consent, contains only fixed categories, and is unverified self-reported evidence. A SHA-256 hash of its random receipt ID is retained 30 days for 30-day retry deduplication; the ID itself is not stored. Counters are capped at 10,000 requests/day and 500 summaries/day per database; missing history or offline usage is unknown. Requests are not unique customers.
|
|
117
|
+
|
|
118
|
+
## 首次同意后的本地自动反馈(0.6.0)
|
|
119
|
+
|
|
120
|
+
```sh
|
|
121
|
+
gridzen telemetry status
|
|
122
|
+
# Run only after reading and agreeing to category-only automatic sharing:
|
|
123
|
+
gridzen telemetry enable --consent
|
|
124
|
+
gridzen plan --country US --event onboarding --task signup_phone
|
|
125
|
+
# Send one queued event per invocation after reconnecting:
|
|
126
|
+
gridzen telemetry flush
|
|
127
|
+
# Disable future uploads and clear the pending queue:
|
|
128
|
+
gridzen telemetry disable
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
No network calls occur from local CLI/MCP when disabled. Consent is saved per OS user, not silently added to a project. Events contain only documented categories, ISO country, and a random per-event receipt, with no conversation, identity fields, credentials, user or project IDs. Feedback failures do not fail tool execution. The local queue is capped at 1,000 events/30 days; reconnect or `flush` retries one queued event, with a one-second HTTP timeout. Uploads are self-reported usage, not authenticated customers or completed verification. No background daemon is installed. Merely reading a Skill is unobservable; after consent, an Agent can explicitly record a fixed-category task summary.
|
|
132
|
+
|
|
133
|
+
本地反馈默认关闭。用户先阅读说明并同意,再运行 `gridzen telemetry enable --consent`;此后 CLI 和本地 MCP 自动反馈分类事件。`gridzen telemetry disable` 立即关闭并清空待发送队列。断网最多保留 1000 条、30 天;恢复后每次调用或 flush 发送一条,无后台守护进程。只发送固定分类、国家和随机事件回执,不发送对话、身份资料、凭证或用户/项目标识。按服务器收到的日期统计,延迟上传不是该日实际发生的全部调用。仅阅读 Skill 无法自动观察,Agent 可在用户已经同意时主动 record 分类小结。它们仍是自报线索,不代表认证客户或真实核验完成。
|
|
@@ -22,3 +22,6 @@ Separate network/auth/schema/rate-limit errors from returned synthetic fixture o
|
|
|
22
22
|
## Optional task feedback
|
|
23
23
|
|
|
24
24
|
Offline use is not tracked. Offer a category-only local task summary when the user wants to report a blocker: `gridzen feedback --task signup_phone --country US --requested-capability phone_intelligence --outcome blocked --blocker missing_workflow_step --skill gridzen-integrate-sandbox --output task-summary.json`. Choose the actual fixed categories; do not fabricate demand. Inspect the file with the user. Only an explicit user choice permits `gridzen feedback --input task-summary.json --share`; otherwise stop at the local file. Do not include prompts, emails, phone numbers, identity documents, account numbers, credentials or free text. Sharing is self-reported evidence and is not verified customer completion. No hidden upload, background call or new MCP tool is required.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
Local feedback in kit 0.6.0 is off by default. If the CLI is installed, `gridzen telemetry status` shows consent. Never enable it on the user's behalf without explicit agreement. When enabled, CLI/stdio calls automatically send fixed-category technical events; do not duplicate those events. For a Skill-only workflow, record one task summary after actual work with `gridzen telemetry record --skill gridzen-explain-verification --task <documented-task> --outcome <documented-outcome> --blocker <documented-reason>`, only if consent is already enabled. Omit raw text and personal data; choose unknown rather than infer completion. Do not install a dependency just to report telemetry. The user can disable and clear pending feedback with `gridzen telemetry disable`. Reading these instructions alone is not tracked.
|
|
@@ -21,3 +21,6 @@ For signup phone checks use `phone_intelligence`; number type is not ownership o
|
|
|
21
21
|
## Optional task feedback
|
|
22
22
|
|
|
23
23
|
Offline use is not tracked. Offer a category-only local task summary when the user wants to report a blocker: `gridzen feedback --task signup_phone --country US --requested-capability phone_intelligence --outcome blocked --blocker missing_workflow_step --skill gridzen-integrate-sandbox --output task-summary.json`. Choose the actual fixed categories; do not fabricate demand. Inspect the file with the user. Only an explicit user choice permits `gridzen feedback --input task-summary.json --share`; otherwise stop at the local file. Do not include prompts, emails, phone numbers, identity documents, account numbers, credentials or free text. Sharing is self-reported evidence and is not verified customer completion. No hidden upload, background call or new MCP tool is required.
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
Local feedback in kit 0.6.0 is off by default. If the CLI is installed, `gridzen telemetry status` shows consent. Never enable it on the user's behalf without explicit agreement. When enabled, CLI/stdio calls automatically send fixed-category technical events; do not duplicate those events. For a Skill-only workflow, record one task summary after actual work with `gridzen telemetry record --skill gridzen-integrate-sandbox --task <documented-task> --outcome <documented-outcome> --blocker <documented-reason>`, only if consent is already enabled. Omit raw text and personal data; choose unknown rather than infer completion. Do not install a dependency just to report telemetry. The user can disable and clear pending feedback with `gridzen telemetry disable`. Reading these instructions alone is not tracked.
|
|
@@ -23,4 +23,4 @@ assert result['status'] == 'inconclusive'
|
|
|
23
23
|
Unexpected fields are rejected (422); unknown country/capability/fixture is rejected (400). Network errors and HTTP failures are integration failures, not verification outcomes. Do not retry indefinitely. Local core and local MCP work offline after installation; Python HTTP SDK sends only documented fixture parameters to Gridzen.
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
Task-specific planning (kit 0.
|
|
26
|
+
Task-specific planning (kit 0.6.0): `plan_verification(country="US", event="onboarding", task="signup_phone", stage="prototype")`. Identity task: `identity_onboarding`. Task and event must agree. Fixtures accept `phone_intelligence` and `identity_verification` in addition to existing research capability names. All fixture outcomes remain simulated and verified=false. Production planning always reports NO_LIVE_ROUTE_ENABLED. No extra MCP tool is added.
|
|
@@ -19,3 +19,6 @@ Select the proof for the customer task before choosing a provider. Use `plan_ver
|
|
|
19
19
|
## Optional task feedback
|
|
20
20
|
|
|
21
21
|
Offline use is not tracked. Offer a category-only local task summary when the user wants to report a blocker: `gridzen feedback --task signup_phone --country US --requested-capability phone_intelligence --outcome blocked --blocker missing_workflow_step --skill gridzen-integrate-sandbox --output task-summary.json`. Choose the actual fixed categories; do not fabricate demand. Inspect the file with the user. Only an explicit user choice permits `gridzen feedback --input task-summary.json --share`; otherwise stop at the local file. Do not include prompts, emails, phone numbers, identity documents, account numbers, credentials or free text. Sharing is self-reported evidence and is not verified customer completion. No hidden upload, background call or new MCP tool is required.
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
Local feedback in kit 0.6.0 is off by default. If the CLI is installed, `gridzen telemetry status` shows consent. Never enable it on the user's behalf without explicit agreement. When enabled, CLI/stdio calls automatically send fixed-category technical events; do not duplicate those events. For a Skill-only workflow, record one task summary after actual work with `gridzen telemetry record --skill gridzen-select-verification --task <documented-task> --outcome <documented-outcome> --blocker <documented-reason>`, only if consent is already enabled. Omit raw text and personal data; choose unknown rather than infer completion. Do not install a dependency just to report telemetry. The user can disable and clear pending feedback with `gridzen telemetry disable`. Reading these instructions alone is not tracked.
|
{gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/mexico-pilot-scoper/SKILL.md
RENAMED
|
@@ -22,3 +22,6 @@ Mexico payout scope remains a bounded draft. No real bank matching route is enab
|
|
|
22
22
|
## Optional task feedback
|
|
23
23
|
|
|
24
24
|
Offline use is not tracked. Offer a category-only local task summary when the user wants to report a blocker: `gridzen feedback --task signup_phone --country US --requested-capability phone_intelligence --outcome blocked --blocker missing_workflow_step --skill gridzen-integrate-sandbox --output task-summary.json`. Choose the actual fixed categories; do not fabricate demand. Inspect the file with the user. Only an explicit user choice permits `gridzen feedback --input task-summary.json --share`; otherwise stop at the local file. Do not include prompts, emails, phone numbers, identity documents, account numbers, credentials or free text. Sharing is self-reported evidence and is not verified customer completion. No hidden upload, background call or new MCP tool is required.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
Local feedback in kit 0.6.0 is off by default. If the CLI is installed, `gridzen telemetry status` shows consent. Never enable it on the user's behalf without explicit agreement. When enabled, CLI/stdio calls automatically send fixed-category technical events; do not duplicate those events. For a Skill-only workflow, record one task summary after actual work with `gridzen telemetry record --skill mexico-pilot-scoper --task <documented-task> --outcome <documented-outcome> --blocker <documented-reason>`, only if consent is already enabled. Omit raw text and personal data; choose unknown rather than infer completion. Do not install a dependency just to report telemetry. The user can disable and clear pending feedback with `gridzen telemetry disable`. Reading these instructions alone is not tracked.
|
{gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/skills/payout-policy-designer/SKILL.md
RENAMED
|
@@ -22,3 +22,6 @@ Payout account matching currently has no real enabled Gridzen route. Keep output
|
|
|
22
22
|
## Optional task feedback
|
|
23
23
|
|
|
24
24
|
Offline use is not tracked. Offer a category-only local task summary when the user wants to report a blocker: `gridzen feedback --task signup_phone --country US --requested-capability phone_intelligence --outcome blocked --blocker missing_workflow_step --skill gridzen-integrate-sandbox --output task-summary.json`. Choose the actual fixed categories; do not fabricate demand. Inspect the file with the user. Only an explicit user choice permits `gridzen feedback --input task-summary.json --share`; otherwise stop at the local file. Do not include prompts, emails, phone numbers, identity documents, account numbers, credentials or free text. Sharing is self-reported evidence and is not verified customer completion. No hidden upload, background call or new MCP tool is required.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
Local feedback in kit 0.6.0 is off by default. If the CLI is installed, `gridzen telemetry status` shows consent. Never enable it on the user's behalf without explicit agreement. When enabled, CLI/stdio calls automatically send fixed-category technical events; do not duplicate those events. For a Skill-only workflow, record one task summary after actual work with `gridzen telemetry record --skill payout-policy-designer --task <documented-task> --outcome <documented-outcome> --blocker <documented-reason>`, only if consent is already enabled. Omit raw text and personal data; choose unknown rather than infer completion. Do not install a dependency just to report telemetry. The user can disable and clear pending feedback with `gridzen telemetry disable`. Reading these instructions alone is not tracked.
|
|
@@ -22,3 +22,6 @@ This is a provider-operation or bring-your-own-provider task. Do not impose this
|
|
|
22
22
|
## Optional task feedback
|
|
23
23
|
|
|
24
24
|
Offline use is not tracked. Offer a category-only local task summary when the user wants to report a blocker: `gridzen feedback --task signup_phone --country US --requested-capability phone_intelligence --outcome blocked --blocker missing_workflow_step --skill gridzen-integrate-sandbox --output task-summary.json`. Choose the actual fixed categories; do not fabricate demand. Inspect the file with the user. Only an explicit user choice permits `gridzen feedback --input task-summary.json --share`; otherwise stop at the local file. Do not include prompts, emails, phone numbers, identity documents, account numbers, credentials or free text. Sharing is self-reported evidence and is not verified customer completion. No hidden upload, background call or new MCP tool is required.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
Local feedback in kit 0.6.0 is off by default. If the CLI is installed, `gridzen telemetry status` shows consent. Never enable it on the user's behalf without explicit agreement. When enabled, CLI/stdio calls automatically send fixed-category technical events; do not duplicate those events. For a Skill-only workflow, record one task summary after actual work with `gridzen telemetry record --skill provider-rights-readiness --task <documented-task> --outcome <documented-outcome> --blocker <documented-reason>`, only if consent is already enabled. Omit raw text and personal data; choose unknown rather than infer completion. Do not install a dependency just to report telemetry. The user can disable and clear pending feedback with `gridzen telemetry disable`. Reading these instructions alone is not tracked.
|
{gridzen_developer_kit-0.5.0 → gridzen_developer_kit-0.6.0}/src/gridzen_developer/__init__.py
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""Gridzen developer tools. Research and simulation are never live verification."""
|
|
2
|
-
__version__ = '0.
|
|
2
|
+
__version__ = '0.6.0'
|
|
@@ -18,7 +18,26 @@ def main():
|
|
|
18
18
|
from .setup import CLIENTS
|
|
19
19
|
x=s.add_parser('setup',help='Prepare six Skills and MCP config for a harness; dry-run until --apply')
|
|
20
20
|
x.add_argument('--client',choices=['all',*CLIENTS],required=True);x.add_argument('--project',default='.');x.add_argument('--apply',action='store_true')
|
|
21
|
+
x=s.add_parser('telemetry',help='Opt-in local category feedback; no chat, personal fields or credentials')
|
|
22
|
+
x.add_argument('action',choices=['enable','disable','status','flush','record'])
|
|
23
|
+
x.add_argument('--consent',action='store_true',help='Explicitly consent to automatic category uploads')
|
|
24
|
+
x.add_argument('--task',choices=sorted(TASKS),default='unknown');x.add_argument('--skill',choices=sorted(SKILLS),default='unknown')
|
|
25
|
+
x.add_argument('--outcome',choices=sorted(OUTCOMES),default='unknown');x.add_argument('--blocker',choices=sorted(REASONS),default='unknown')
|
|
21
26
|
a=p.parse_args()
|
|
27
|
+
if a.command=='telemetry':
|
|
28
|
+
from . import telemetry
|
|
29
|
+
try:
|
|
30
|
+
if a.action=='enable':
|
|
31
|
+
if not a.consent:p.error('Enabling automatic feedback requires --consent. Fixed categories only; disable anytime.')
|
|
32
|
+
result=telemetry.configure(True)
|
|
33
|
+
elif a.action=='disable':result=telemetry.configure(False)
|
|
34
|
+
elif a.action=='status':result=telemetry.status()
|
|
35
|
+
elif a.action=='flush':result=telemetry.flush()
|
|
36
|
+
else:
|
|
37
|
+
telemetry.observe({'operation':'task_summary','task':a.task,'skill':a.skill,'mode':'local_draft','outcome':a.outcome,'reason':a.blocker})
|
|
38
|
+
result=telemetry.status()
|
|
39
|
+
except (OSError,ValueError) as exc:p.error(type(exc).__name__)
|
|
40
|
+
print(json.dumps(result,indent=2));return
|
|
22
41
|
if a.command=='feedback':
|
|
23
42
|
from .product_feedback import validate_summary
|
|
24
43
|
try:
|
|
@@ -43,6 +62,12 @@ def main():
|
|
|
43
62
|
print(json.dumps(list_skills(),ensure_ascii=False,indent=2));return
|
|
44
63
|
try:
|
|
45
64
|
result={'coverage':lambda:core.coverage(a.country,a.capability),'plan':lambda:core.plan(a.country,a.event,a.task,a.stage),'simulate':lambda:core.simulate(a.country,a.capability,a.scenario),'explain':lambda:core.explain(a.reason_code)}[a.command]()
|
|
46
|
-
except ValueError as e:
|
|
65
|
+
except ValueError as e:
|
|
66
|
+
from .telemetry import observe
|
|
67
|
+
observe({'operation':{'coverage':'get_coverage','plan':'plan_verification','simulate':'create_sandbox_verification','explain':'explain_result'}[a.command],'task':getattr(a,'task',None),'country':getattr(a,'country',None),'outcome':'integration_error','reason':'schema_error'})
|
|
68
|
+
p.error(str(e))
|
|
69
|
+
from .telemetry import observe
|
|
70
|
+
blocked=a.command=='plan' and (a.stage=='production' or result.get('task_match_status') in ('unsupported','needs_clarification'))
|
|
71
|
+
observe({'operation':{'coverage':'get_coverage','plan':'plan_verification','simulate':'create_sandbox_verification','explain':'explain_result'}[a.command],'task':getattr(a,'task',None),'country':getattr(a,'country',None),'capability':result.get('capability',getattr(a,'capability',None)),'stage':getattr(a,'stage','prototype'),'mode':'research' if a.command in ('coverage','plan') else 'synthetic_fixture','outcome':'capability_unavailable' if blocked else 'technical_success','reason':'production_disabled' if blocked and a.stage=='production' else 'unavailable_route' if blocked else 'none'})
|
|
47
72
|
print(json.dumps(result,ensure_ascii=False,indent=2))
|
|
48
73
|
if __name__=='__main__':main()
|
|
@@ -27,7 +27,7 @@ class GridzenMCP(MCPServer):
|
|
|
27
27
|
for tool in tools:tool.input_schema['additionalProperties']=False
|
|
28
28
|
return tools
|
|
29
29
|
|
|
30
|
-
server=GridzenMCP('Gridzen Developer Kit',version='0.
|
|
30
|
+
server=GridzenMCP('Gridzen Developer Kit',version='0.6.0',website_url='https://gridzen.ai/developers/',middleware=[strict_arguments],instructions='Research and synthetic fixtures only. No live providers are enabled. Preserve verified=false; never use a sandbox result to approve a real person or payment.')
|
|
31
31
|
read=ToolAnnotations(readOnlyHint=True,destructiveHint=False,idempotentHint=True,openWorldHint=False)
|
|
32
32
|
@server.tool(annotations=read,structured_output=True)
|
|
33
33
|
def get_coverage(country: str | None=None, capability: str | None=None) -> dict[str, Any]:
|
|
@@ -50,5 +50,27 @@ def explain_result(reason_code: str) -> dict[str, Any]:
|
|
|
50
50
|
"""Explain a sandbox reason code; missing data and timeout remain inconclusive."""
|
|
51
51
|
return core.explain(reason_code)
|
|
52
52
|
TOOLS={fn.__name__:fn for fn in (get_coverage,plan_verification,create_sandbox_verification,get_sandbox_verification,explain_result)}
|
|
53
|
-
def
|
|
53
|
+
async def local_feedback(ctx, call_next):
|
|
54
|
+
from .telemetry import observe
|
|
55
|
+
import asyncio
|
|
56
|
+
params=ctx.params if isinstance(ctx.params,dict) else {}
|
|
57
|
+
args=params.get('arguments') if isinstance(params.get('arguments'),dict) else {}
|
|
58
|
+
dims={'operation':params.get('name'),'task':args.get('task'),'country':args.get('country'),'capability':args.get('capability'),'stage':args.get('stage','prototype'),'mode':'research' if params.get('name') in ('get_coverage','plan_verification') else 'synthetic_fixture'}
|
|
59
|
+
try: result=await call_next(ctx)
|
|
60
|
+
except Exception:
|
|
61
|
+
if ctx.method=='tools/call':await asyncio.to_thread(observe,{**dims,'outcome':'integration_error','reason':'tool_error'})
|
|
62
|
+
raise
|
|
63
|
+
if ctx.method=='tools/call':
|
|
64
|
+
content=getattr(result,'structured_content',None) or {}
|
|
65
|
+
blocked=content.get('requested_stage')=='production' or content.get('task_match_status') in ('unsupported','needs_clarification')
|
|
66
|
+
failed=getattr(result,'is_error',False)
|
|
67
|
+
await asyncio.to_thread(observe,{**dims,'capability':content.get('capability',dims['capability']),'outcome':'integration_error' if failed else 'capability_unavailable' if blocked else 'technical_success','reason':'tool_error' if failed else 'production_disabled' if blocked and content.get('requested_stage')=='production' else 'unavailable_route' if blocked else 'none'})
|
|
68
|
+
return result
|
|
69
|
+
|
|
70
|
+
def main():
|
|
71
|
+
from .telemetry import enabled
|
|
72
|
+
if enabled():
|
|
73
|
+
read.open_world_hint=True
|
|
74
|
+
server.middleware.insert(0,local_feedback)
|
|
75
|
+
server.run(transport='stdio')
|
|
54
76
|
if __name__=='__main__':main()
|
|
@@ -15,7 +15,7 @@ TASKS = frozenset(('signup_phone','identity_onboarding','payout_account','phone_
|
|
|
15
15
|
CAPABILITIES = frozenset(('official_identity','commercial_identity','consented_eid','bank_account_match','consented_bank','cardholder_name','phone_identity','phone_intelligence','identity_verification','otp','business_kyb','batch','webhook_recovery','policy_design','provider_rights','other','unknown'))
|
|
16
16
|
SKILLS = frozenset(('gridzen-select-verification','gridzen-integrate-sandbox','gridzen-explain-verification','provider-rights-readiness','payout-policy-designer','mexico-pilot-scoper','unknown'))
|
|
17
17
|
OPERATIONS = frozenset(('get_coverage','plan_verification','create_sandbox_verification','get_sandbox_verification','explain_result','merchant_create','merchant_read','merchant_simulate','merchant_refresh','merchant_capabilities','task_summary','transport_rejected','other'))
|
|
18
|
-
SOURCES = frozenset(('internal_test','self_reported_test','unknown','authenticated_merchant_sandbox','self_reported_feedback','authenticated_feedback'))
|
|
18
|
+
SOURCES = frozenset(('internal_test','self_reported_test','unknown','authenticated_merchant_sandbox','self_reported_feedback','authenticated_feedback','self_reported_local_usage'))
|
|
19
19
|
MODES = frozenset(('research','synthetic_fixture','merchant_sandbox','local_draft','unknown'))
|
|
20
20
|
OUTCOMES = frozenset(('technical_success','integration_error','capability_unavailable','completed_prototype','blocked','abandoned','unknown'))
|
|
21
21
|
REASONS = frozenset(('none','auth_error','schema_error','rate_limit','timeout','transport_error','tool_error','unknown_country','unknown_capability','unavailable_route','coverage_gap','missing_workflow_step','price_unknown','production_disabled','already_solved_elsewhere','idempotency_conflict','record_not_found','other','unknown'))
|
|
@@ -57,7 +57,7 @@ def write(path, values, receipt=None, day=None):
|
|
|
57
57
|
feedback=db.execute("SELECT COALESCE(SUM(count),0) FROM product_events WHERE day=? AND operation='task_summary'",(day.isoformat(),)).fetchone()[0]
|
|
58
58
|
if feedback>=500:return False
|
|
59
59
|
digest=hashlib.sha256(receipt.encode()).hexdigest()
|
|
60
|
-
if db.execute('SELECT 1 FROM feedback_receipts WHERE
|
|
60
|
+
if db.execute('SELECT 1 FROM feedback_receipts WHERE hash=?',(digest,)).fetchone():return True
|
|
61
61
|
db.execute('INSERT INTO feedback_receipts VALUES (?,?)',(day.isoformat(),digest))
|
|
62
62
|
columns='day,'+','.join(FIELDS)
|
|
63
63
|
values=(day.isoformat(),*(safe[key] for key in FIELDS))
|
|
@@ -93,3 +93,16 @@ def accept_summary(path, value, source='self_reported_feedback'):
|
|
|
93
93
|
|
|
94
94
|
def http_reason(status):
|
|
95
95
|
return {400:'schema_error',401:'auth_error',403:'auth_error',404:'record_not_found',409:'idempotency_conflict',413:'schema_error',422:'schema_error',429:'rate_limit',502:'unavailable_route',503:'unavailable_route',504:'timeout'}.get(status,'tool_error' if status>=400 else 'none')
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def accept_usage(path, value):
|
|
99
|
+
if not isinstance(value,dict) or set(value)!={'schema_version','event_id','consent_to_share','dimensions'} or type(value['schema_version']) is not int or value['schema_version']!=1 or value['consent_to_share'] is not True:
|
|
100
|
+
raise ValueError('INVALID_USAGE_EVENT')
|
|
101
|
+
if not isinstance(value['event_id'],str) or len(value['event_id'])!=36: raise ValueError('INVALID_USAGE_EVENT')
|
|
102
|
+
try: UUID(value['event_id'])
|
|
103
|
+
except ValueError: raise ValueError('INVALID_USAGE_EVENT') from None
|
|
104
|
+
dimensions=value['dimensions']
|
|
105
|
+
if not isinstance(dimensions,dict) or set(dimensions)!=set(FIELDS) or safe_dimensions(dimensions)!=dimensions or dimensions['source']!='self_reported_local_usage': raise ValueError('INVALID_USAGE_EVENT')
|
|
106
|
+
if dimensions['operation'] not in OPERATIONS-{'merchant_create','merchant_read','merchant_simulate','merchant_refresh','merchant_capabilities','transport_rejected'}: raise ValueError('INVALID_USAGE_EVENT')
|
|
107
|
+
if dimensions['mode']=='merchant_sandbox': raise ValueError('INVALID_USAGE_EVENT')
|
|
108
|
+
return write(path,dimensions,receipt='local:'+value['event_id'])
|
|
@@ -18,7 +18,7 @@ mcp_app=make_transport()
|
|
|
18
18
|
async def lifespan(_app):
|
|
19
19
|
async with mcp_app.router.lifespan_context(mcp_app):yield
|
|
20
20
|
|
|
21
|
-
app=FastAPI(title='Gridzen Developer Sandbox',version='0.
|
|
21
|
+
app=FastAPI(title='Gridzen Developer Sandbox',version='0.6.0',lifespan=lifespan,docs_url=None,redoc_url=None,openapi_url='/api/openapi.json',servers=[{'url':'/developers'}])
|
|
22
22
|
app.add_middleware(MCPBounds)
|
|
23
23
|
app.add_middleware(CallSourceMiddleware)
|
|
24
24
|
class PlanRequest(BaseModel):
|
|
@@ -67,10 +67,10 @@ async def bounds(request:Request,call_next):
|
|
|
67
67
|
response.headers['Cache-Control']='no-store' if request.url.path.startswith(('/api','/mcp')) else 'public, max-age=60'
|
|
68
68
|
return response
|
|
69
69
|
@app.get('/health')
|
|
70
|
-
def health():return {'status':'ok','mode':'sandbox','live_routes':0,'version':'0.
|
|
70
|
+
def health():return {'status':'ok','mode':'sandbox','live_routes':0,'version':'0.6.0','mcp_transport':'streamable-http'}
|
|
71
71
|
@app.get('/server-card.json')
|
|
72
72
|
async def server_card():
|
|
73
|
-
return {'serverInfo':{'name':'Gridzen Verification','version':'0.
|
|
73
|
+
return {'serverInfo':{'name':'Gridzen Verification','version':'0.6.0'},'authentication':{'required':False},'tools':[tool.model_dump(by_alias=True,exclude_none=True) for tool in await mcp_server.list_tools()],'resources':[],'prompts':[]}
|
|
74
74
|
@app.get('/api/coverage')
|
|
75
75
|
def coverage(country:str|None=Query(None,max_length=2),capability:str|None=Query(None,max_length=40)):return core.coverage(country,capability)
|
|
76
76
|
@app.post('/api/plan')
|
|
@@ -94,5 +94,14 @@ async def feedback(request:Request):
|
|
|
94
94
|
if not accepted:return JSONResponse({'error':'FEEDBACK_TEMPORARILY_UNAVAILABLE'},status_code=503)
|
|
95
95
|
return {'accepted':True,'evidence':'self_reported','authenticated_customer':False,'retention':'aggregate 90 days; receipt hash 30 days','duplicate_receipts':'deduplicated within UTC day'}
|
|
96
96
|
|
|
97
|
+
@app.post('/api/usage-events')
|
|
98
|
+
async def local_usage(request:Request):
|
|
99
|
+
from .product_feedback import accept_usage
|
|
100
|
+
try: accepted=accept_usage(os.environ.get('GRIDZEN_MCP_EVENTS_DB'),json.loads(await request.body()))
|
|
101
|
+
except ValueError: return JSONResponse({'error':'INVALID_USAGE_EVENT'},status_code=422)
|
|
102
|
+
except (OSError,sqlite3.Error): accepted=False
|
|
103
|
+
if not accepted: return JSONResponse({'error':'USAGE_TEMPORARILY_UNAVAILABLE'},status_code=503)
|
|
104
|
+
return {'accepted':True,'evidence':'self_reported_local_usage','authenticated_customer':False}
|
|
105
|
+
|
|
97
106
|
app.router.routes.extend(mcp_app.routes)
|
|
98
107
|
app.mount('/',StaticFiles(directory=Path(__file__).parent/'web',html=True),name='developer-web')
|