gridzen-developer-kit 0.4.0__tar.gz → 0.4.1__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 (119) hide show
  1. {gridzen_developer_kit-0.4.0/src/gridzen_developer_kit.egg-info → gridzen_developer_kit-0.4.1}/PKG-INFO +8 -8
  2. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/README.es.md +3 -3
  3. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/README.md +7 -7
  4. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/README.zh-CN.md +3 -3
  5. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/clients/compatibility.json +4 -2
  6. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/pyproject.toml +1 -1
  7. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/__init__.py +1 -1
  8. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/mcp.py +1 -1
  9. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/server.py +3 -3
  10. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/web/compatibility.json +4 -2
  11. gridzen_developer_kit-0.4.1/src/gridzen_developer/web/developer.css +9 -0
  12. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/web/developer.js +1 -1
  13. gridzen_developer_kit-0.4.1/src/gridzen_developer/web/harnesses.html +3 -0
  14. gridzen_developer_kit-0.4.1/src/gridzen_developer/web/harnesses.js +2 -0
  15. gridzen_developer_kit-0.4.1/src/gridzen_developer/web/index.html +7 -0
  16. gridzen_developer_kit-0.4.1/src/gridzen_developer/web/layout.js +47 -0
  17. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/web/locales.js +129 -66
  18. gridzen_developer_kit-0.4.1/src/gridzen_developer/web/privacy.html +1 -0
  19. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/web/quickstart.html +4 -6
  20. gridzen_developer_kit-0.4.1/src/gridzen_developer/web/site-shell.json +17 -0
  21. gridzen_developer_kit-0.4.1/src/gridzen_developer/web/support.html +1 -0
  22. gridzen_developer_kit-0.4.1/src/gridzen_developer/web/terms.html +1 -0
  23. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1/src/gridzen_developer_kit.egg-info}/PKG-INFO +8 -8
  24. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer_kit.egg-info/SOURCES.txt +2 -0
  25. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/tests/test_localization.py +1 -1
  26. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/tests/test_remote.py +1 -1
  27. gridzen_developer_kit-0.4.1/tests/test_site_shell.py +31 -0
  28. gridzen_developer_kit-0.4.0/src/gridzen_developer/web/developer.css +0 -4
  29. gridzen_developer_kit-0.4.0/src/gridzen_developer/web/harnesses.html +0 -3
  30. gridzen_developer_kit-0.4.0/src/gridzen_developer/web/harnesses.js +0 -2
  31. gridzen_developer_kit-0.4.0/src/gridzen_developer/web/index.html +0 -7
  32. gridzen_developer_kit-0.4.0/src/gridzen_developer/web/layout.js +0 -1
  33. gridzen_developer_kit-0.4.0/src/gridzen_developer/web/privacy.html +0 -1
  34. gridzen_developer_kit-0.4.0/src/gridzen_developer/web/support.html +0 -1
  35. gridzen_developer_kit-0.4.0/src/gridzen_developer/web/terms.html +0 -1
  36. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/LICENSE +0 -0
  37. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/MANIFEST.in +0 -0
  38. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/NOTICE.md +0 -0
  39. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/clients/claude-code.json +0 -0
  40. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/clients/claude-desktop.json +0 -0
  41. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/clients/cline.json +0 -0
  42. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/clients/codex.toml +0 -0
  43. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/clients/copilot-cli.json +0 -0
  44. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/clients/cursor.json +0 -0
  45. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/clients/gemini-cli.json +0 -0
  46. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/clients/opencode.json +0 -0
  47. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/clients/roo-code.json +0 -0
  48. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/clients/vscode.json +0 -0
  49. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/docs/harness/README.md +0 -0
  50. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/docs/harness/claude-code.md +0 -0
  51. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/docs/harness/claude-desktop.md +0 -0
  52. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/docs/harness/cline.md +0 -0
  53. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/docs/harness/codex.md +0 -0
  54. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/docs/harness/copilot-cli.md +0 -0
  55. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/docs/harness/cursor.md +0 -0
  56. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/docs/harness/gemini-cli.md +0 -0
  57. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/docs/harness/opencode.md +0 -0
  58. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/docs/harness/roo-code.md +0 -0
  59. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/docs/harness/vscode.md +0 -0
  60. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/scripts/check_integration.py +0 -0
  61. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/setup.cfg +0 -0
  62. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/gridzen-explain-verification/SKILL.md +0 -0
  63. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/gridzen-integrate-sandbox/SKILL.md +0 -0
  64. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/gridzen-integrate-sandbox/references/api.md +0 -0
  65. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/gridzen-select-verification/SKILL.md +0 -0
  66. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/mexico-pilot-scoper/LICENSE +0 -0
  67. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/mexico-pilot-scoper/README.md +0 -0
  68. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/mexico-pilot-scoper/SKILL.md +0 -0
  69. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/mexico-pilot-scoper/agent-evals.json +0 -0
  70. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/mexico-pilot-scoper/evaluate.py +0 -0
  71. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/mexico-pilot-scoper/example-input.json +0 -0
  72. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/mexico-pilot-scoper/examples/missing-evidence.json +0 -0
  73. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/mexico-pilot-scoper/examples/normal.json +0 -0
  74. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/mexico-pilot-scoper/examples/out-of-scope.json +0 -0
  75. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/mexico-pilot-scoper/spec.json +0 -0
  76. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/mexico-pilot-scoper/test_evaluate.py +0 -0
  77. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/payout-policy-designer/LICENSE +0 -0
  78. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/payout-policy-designer/README.md +0 -0
  79. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/payout-policy-designer/SKILL.md +0 -0
  80. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/payout-policy-designer/agent-evals.json +0 -0
  81. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/payout-policy-designer/evaluate.py +0 -0
  82. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/payout-policy-designer/example-input.json +0 -0
  83. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/payout-policy-designer/examples/missing-evidence.json +0 -0
  84. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/payout-policy-designer/examples/normal.json +0 -0
  85. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/payout-policy-designer/examples/out-of-scope.json +0 -0
  86. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/payout-policy-designer/spec.json +0 -0
  87. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/payout-policy-designer/test_evaluate.py +0 -0
  88. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/provider-rights-readiness/LICENSE +0 -0
  89. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/provider-rights-readiness/README.md +0 -0
  90. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/provider-rights-readiness/SKILL.md +0 -0
  91. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/provider-rights-readiness/agent-evals.json +0 -0
  92. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/provider-rights-readiness/evaluate.py +0 -0
  93. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/provider-rights-readiness/example-input.json +0 -0
  94. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/provider-rights-readiness/examples/missing-evidence.json +0 -0
  95. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/provider-rights-readiness/examples/normal.json +0 -0
  96. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/provider-rights-readiness/examples/out-of-scope.json +0 -0
  97. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/provider-rights-readiness/spec.json +0 -0
  98. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/skills/provider-rights-readiness/test_evaluate.py +0 -0
  99. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/cli.py +0 -0
  100. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/client.py +0 -0
  101. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/core.py +0 -0
  102. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/data/LICENSE +0 -0
  103. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/data/catalog.json +0 -0
  104. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/remote.py +0 -0
  105. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/setup.py +0 -0
  106. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/skills.py +0 -0
  107. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/usage.py +0 -0
  108. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/web/client-configs.json +0 -0
  109. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/web/icon.png +0 -0
  110. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/web/icon.svg +0 -0
  111. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer/web/language.js +0 -0
  112. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer_kit.egg-info/dependency_links.txt +0 -0
  113. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer_kit.egg-info/entry_points.txt +0 -0
  114. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer_kit.egg-info/requires.txt +0 -0
  115. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/src/gridzen_developer_kit.egg-info/top_level.txt +0 -0
  116. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/tests/test_developer.py +0 -0
  117. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/tests/test_setup.py +0 -0
  118. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/tests/test_usage.py +0 -0
  119. {gridzen_developer_kit-0.4.0 → gridzen_developer_kit-0.4.1}/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.4.0
3
+ Version: 0.4.1
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.4.0
30
+ # Gridzen Developer Kit 0.4.1
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
 
@@ -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.4.0"
109
+ python -m pip install "gridzen-developer-kit[mcp] @ git+https://github.com/immurray/gridzen-developer-kit.git@v0.4.1"
110
110
  ```
111
111
 
112
- PyPI 0.4.0 is published and verified. Install with `python -m pip install
112
+ PyPI 0.4.1 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.4.0)
135
+ ## Six bundled Skills (0.4.1)
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.4.0 is published on
139
- [PyPI](https://pypi.org/project/gridzen-developer-kit/0.4.0/); clean installation,
138
+ and all six Skill directories. Version 0.4.1 is published on
139
+ [PyPI](https://pypi.org/project/gridzen-developer-kit/0.4.1/); 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.4.0)
160
+ ## Configure your assistant (v0.4.1)
161
161
 
162
162
  ```sh
163
163
  python3 -m venv .venv
@@ -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.4.0)
63
+ ## Six bundled Skills (0.4.1)
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.4.0 is published on
67
- [PyPI](https://pypi.org/project/gridzen-developer-kit/0.4.0/); clean installation,
66
+ and all six Skill directories. Version 0.4.1 is published on
67
+ [PyPI](https://pypi.org/project/gridzen-developer-kit/0.4.1/); 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
 
@@ -1,4 +1,4 @@
1
- # Gridzen Developer Kit 0.4.0
1
+ # Gridzen Developer Kit 0.4.1
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
 
@@ -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.4.0"
80
+ python -m pip install "gridzen-developer-kit[mcp] @ git+https://github.com/immurray/gridzen-developer-kit.git@v0.4.1"
81
81
  ```
82
82
 
83
- PyPI 0.4.0 is published and verified. Install with `python -m pip install
83
+ PyPI 0.4.1 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.4.0)
106
+ ## Six bundled Skills (0.4.1)
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.4.0 is published on
110
- [PyPI](https://pypi.org/project/gridzen-developer-kit/0.4.0/); clean installation,
109
+ and all six Skill directories. Version 0.4.1 is published on
110
+ [PyPI](https://pypi.org/project/gridzen-developer-kit/0.4.1/); 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.4.0)
131
+ ## Configure your assistant (v0.4.1)
132
132
 
133
133
  ```sh
134
134
  python3 -m venv .venv
@@ -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.4.0)
62
+ ## Six bundled Skills (0.4.1)
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.4.0 is published on
66
- [PyPI](https://pypi.org/project/gridzen-developer-kit/0.4.0/); clean installation,
65
+ and all six Skill directories. Version 0.4.1 is published on
66
+ [PyPI](https://pypi.org/project/gridzen-developer-kit/0.4.1/); 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
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.4.0",
2
+ "version": "0.4.1",
3
3
  "checked_at": "2026-10-09",
4
4
  "tools": 5,
5
5
  "skills": 6,
@@ -175,5 +175,7 @@
175
175
  ]
176
176
  }
177
177
  ],
178
- "notice": "Template/installer validation does not establish real client or model acceptance. No live verification."
178
+ "notice": "Template/installer validation does not establish real client or model acceptance. No live verification.",
179
+ "client_acceptance_release": "0.4.0",
180
+ "change_scope": "Presentation and shared website shell; five MCP tools and client configuration contract unchanged. Existing model acceptance is historical, not repeated for this presentation release."
179
181
  }
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "gridzen-developer-kit"
7
- version = "0.4.0"
7
+ version = "0.4.1"
8
8
  readme = "README.md"
9
9
  license = "MIT"
10
10
  license-files = ["LICENSE", "NOTICE.md"]
@@ -1,2 +1,2 @@
1
1
  """Gridzen developer tools. Research and simulation are never live verification."""
2
- __version__ = '0.4.0'
2
+ __version__ = '0.4.1'
@@ -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.4.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.')
30
+ server=GridzenMCP('Gridzen Developer Kit',version='0.4.1',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]:
@@ -15,7 +15,7 @@ mcp_app=make_transport()
15
15
  async def lifespan(_app):
16
16
  async with mcp_app.router.lifespan_context(mcp_app):yield
17
17
 
18
- app=FastAPI(title='Gridzen Developer Sandbox',version='0.4.0',lifespan=lifespan,docs_url=None,redoc_url=None,openapi_url='/api/openapi.json',servers=[{'url':'/developers'}])
18
+ app=FastAPI(title='Gridzen Developer Sandbox',version='0.4.1',lifespan=lifespan,docs_url=None,redoc_url=None,openapi_url='/api/openapi.json',servers=[{'url':'/developers'}])
19
19
  app.add_middleware(MCPBounds)
20
20
  class PlanRequest(BaseModel):
21
21
  model_config=ConfigDict(extra='forbid',strict=True)
@@ -42,10 +42,10 @@ async def bounds(request:Request,call_next):
42
42
  response.headers['Cache-Control']='no-store' if request.url.path.startswith(('/api','/mcp')) else 'public, max-age=60'
43
43
  return response
44
44
  @app.get('/health')
45
- def health():return {'status':'ok','mode':'sandbox','live_routes':0,'version':'0.4.0','mcp_transport':'streamable-http'}
45
+ def health():return {'status':'ok','mode':'sandbox','live_routes':0,'version':'0.4.1','mcp_transport':'streamable-http'}
46
46
  @app.get('/server-card.json')
47
47
  async def server_card():
48
- return {'serverInfo':{'name':'Gridzen Verification','version':'0.4.0'},'authentication':{'required':False},'tools':[tool.model_dump(by_alias=True,exclude_none=True) for tool in await mcp_server.list_tools()],'resources':[],'prompts':[]}
48
+ return {'serverInfo':{'name':'Gridzen Verification','version':'0.4.1'},'authentication':{'required':False},'tools':[tool.model_dump(by_alias=True,exclude_none=True) for tool in await mcp_server.list_tools()],'resources':[],'prompts':[]}
49
49
  @app.get('/api/coverage')
50
50
  def coverage(country:str|None=Query(None,max_length=2),capability:str|None=Query(None,max_length=40)):return core.coverage(country,capability)
51
51
  @app.post('/api/plan')
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.4.0",
2
+ "version": "0.4.1",
3
3
  "checked_at": "2026-10-09",
4
4
  "tools": 5,
5
5
  "skills": 6,
@@ -175,5 +175,7 @@
175
175
  ]
176
176
  }
177
177
  ],
178
- "notice": "Template/installer validation does not establish real client or model acceptance. No live verification."
178
+ "notice": "Template/installer validation does not establish real client or model acceptance. No live verification.",
179
+ "client_acceptance_release": "0.4.0",
180
+ "change_scope": "Presentation and shared website shell; five MCP tools and client configuration contract unchanged. Existing model acceptance is historical, not repeated for this presentation release."
179
181
  }
@@ -0,0 +1,9 @@
1
+ .developer{max-width:1180px;margin:auto;padding:0 30px}.developer header{padding:90px 0 35px}.developer h1{font-size:clamp(40px,6vw,72px);line-height:1.05;letter-spacing:-.05em;font-weight:550}.developer .boundary{color:var(--muted);font-size:13px;margin-top:22px}.developer section{padding:48px 0}.workspace{display:grid;grid-template-columns:minmax(230px,1fr) minmax(0,2fr);gap:20px}.controls{display:flex;flex-direction:column;gap:12px}.developer label{font-size:13px;color:var(--muted)}.developer select{width:100%;padding:12px;background:var(--paper);border:1px solid var(--line);color:var(--ink);border-radius:6px}.developer .card{padding:24px;min-width:0}.output-head{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.tag{font-size:10px;color:var(--mint);letter-spacing:.05em}.developer pre{font:12px/1.6 ui-monospace,SFMono-Regular,monospace;background:#0b0c10;border:1px solid var(--line);padding:20px;border-radius:8px;overflow:auto;max-width:100%;white-space:pre-wrap;overflow-wrap:anywhere}.output pre{height:380px}.developer button{cursor:pointer}.developer button:disabled{opacity:.5;cursor:wait}.developer #sources{color:var(--muted);font-size:13px;overflow-wrap:anywhere;padding:14px 0}.developer .next{border-top:1px solid var(--line)}.developer code{overflow-wrap:anywhere}.developer .actions{flex-wrap:wrap}.developer .grid{min-width:0}.developer .card p{font-size:14px}.developer #copy-status{font-size:12px;color:var(--mint)}@media(max-width:760px){.developer{padding:0 20px}.developer header{padding-top:55px}.workspace{grid-template-columns:1fr}.developer .grid.three{grid-template-columns:1fr}.output pre{height:330px}.developer .actions a{white-space:normal}}
2
+ .developer #summary{margin:20px 0}.result-line{margin:14px 0}.result-line dt{font-size:12px;color:var(--muted);margin-bottom:4px}.result-line dd{margin:0;font-size:14px;line-height:1.65}.developer details>summary{cursor:pointer;color:var(--muted);font-size:13px}.developer #raw>p{font-size:12px;color:var(--muted)}.developer #raw pre{height:auto;max-height:380px}.developer #sources details{margin:10px 0}.developer #sources details>p{font-size:13px}.developer .output-head{align-items:flex-start}.developer .output-head #status{flex:1;min-width:150px}.developer .tag{white-space:normal}.developer .controls select{white-space:normal}
3
+
4
+ /* Developer surfaces share the product shell and its semantic design tokens. */
5
+ .developer{padding-bottom:64px}.developer header{padding:58px 0 38px;max-width:900px}.developer h1{font-size:clamp(36px,4.7vw,60px);line-height:1.13;letter-spacing:-.045em;margin:18px 0 24px}.developer h2{font-size:25px;line-height:1.3;letter-spacing:-.025em;font-weight:550}.developer .lead{font-size:17px;line-height:1.75;max-width:700px}.developer p{color:var(--muted)}.developer-subnav{display:flex;gap:24px;border-bottom:1px solid var(--line);padding:19px 0;overflow-x:auto;white-space:nowrap}.developer-subnav a{font-size:12px;text-decoration:none;color:var(--muted)}.developer-subnav a[aria-current="page"]{color:var(--ink)}.developer header.developer-hero{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(300px,.8fr);gap:64px;align-items:center;max-width:none;padding:68px 0 48px}.developer-hero h1{max-width:650px}.developer-hero .eyebrow{display:inline-flex;padding:5px 11px;border:1px solid #aaa2ef33;border-radius:999px;background:#aaa2ef09;color:#d0cbed;font-size:12px}.developer-preview{border:1px solid #77728d55;border-radius:14px;background:radial-gradient(ellipse at 90% 0,#7d6dc21c,transparent 75%),var(--paper);box-shadow:var(--shadow);padding:24px}.preview-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:14px;color:var(--muted);font:11px ui-monospace,monospace}.developer-preview h2{font-size:18px;margin:20px 0}.developer-preview ol{padding:0;list-style:none;display:grid;gap:12px}.developer-preview li{display:flex;gap:13px;align-items:center;padding:10px 0}.developer-preview li span{font:10px ui-monospace,monospace;border:1px solid var(--line);border-radius:6px;padding:7px;color:var(--blue)}.developer-preview li p{margin:0;font-size:13px;color:var(--ink)}.preview-foot{font-size:11px;color:var(--muted);border-top:1px solid var(--line);padding-top:17px}.developer .workspace{border-radius:14px}.developer .controls{background:var(--paper)}.developer .output{background:radial-gradient(ellipse at 100% 0,#aaa2ef0b,transparent 70%),var(--paper)}.developer #install{border-top:1px solid var(--line)}.skill-task-grid{gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden}.skill-task-grid .card{border:0;border-radius:0;background:var(--paper);border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.skill-task-grid .card:nth-child(3n){border-right:0}.skill-task-grid .card:nth-last-child(-n+3){border-bottom:0}.skill-task-grid h3{font-size:17px}.developer .next{padding:32px;border:1px solid var(--line);border-radius:12px;background:var(--paper);margin-top:28px}.developer .next h2{margin-top:0}.text-link{display:inline-block;color:var(--blue);font-size:13px;text-decoration:none;margin:15px 0 0}.developer .next .text-link{margin-left:20px}.assistant-workspace{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(290px,1fr);gap:28px;align-items:start}.setup-flow{display:grid;gap:16px}.developer .setup-flow section,.developer .client-aside section{padding:24px}.client-selector label{display:block;margin-bottom:10px;color:var(--ink);font-weight:550}.setup-step{position:relative}.step-number{font:11px ui-monospace,monospace;color:var(--blue)}.setup-step h2{font-size:20px;margin:10px 0 18px}.setup-step p,.client-aside p{font-size:13px;line-height:1.75}.setup-step pre{font-size:12px;padding:16px;margin:16px 0}.client-aside{position:sticky;top:90px;display:grid;gap:16px}.client-aside h2{font-size:20px;margin:12px 0}.readiness-check{color:var(--mint)!important}.readiness-check:before{content:"✓ ";color:var(--mint)}.client-aside a{font-size:12px;text-decoration:none}.config-details{padding-top:18px;border-top:1px solid var(--line);margin-top:20px}.config-details summary,.skill-downloads summary{color:var(--blue);cursor:pointer;font-size:13px}.config-details #paths{font:11px/1.6 ui-monospace,monospace}.skill-downloads .button{margin-top:18px}.skill-downloads ul{padding:0;list-style:none}.skill-downloads li{padding:8px 0;overflow-wrap:anywhere;border-bottom:1px solid var(--line)}#setup-copy-status{font-size:12px;color:var(--mint);min-height:18px}.client-aside>.boundary{margin:0;font-size:12px}.developer pre{color:var(--ink)}
6
+ @media(max-width:900px){.developer header.developer-hero{grid-template-columns:1fr;gap:30px;padding:48px 0 32px}.developer-preview{max-width:600px}.assistant-workspace{grid-template-columns:1fr}.client-aside{position:static}.developer header{padding:44px 0 25px}}
7
+ @media(max-width:760px){.skill-task-grid .card{border-right:0;border-bottom:1px solid var(--line)!important}.skill-task-grid .card:last-child{border-bottom:0!important}.developer .next{padding:24px}.developer .next .text-link{display:block;margin-left:0}.developer-subnav{gap:18px}.developer .setup-flow section,.developer .client-aside section{padding:20px}.developer header h1{font-size:36px}}
8
+
9
+ .developer header.page-head{text-align:left;margin-left:0;margin-right:0}.developer header.page-head .lead{margin-left:0;margin-right:0}
@@ -4,7 +4,7 @@
4
4
  const caps={payout:'bank_account_match',onboarding:'commercial_identity',account_change:'phone_identity'};
5
5
  let result=null,countries=[],kind=null,pending=false,failed=false,copyKey='',sequence=0;
6
6
  const node=(tag,text)=>{const n=document.createElement(tag);n.textContent=text;return n};
7
- function countriesView(){if(!countries.length)return;const selected=$('country').value||'ID';$('country').replaceChildren();const rows=[...countries].sort((a,b)=>L.region(a.code).localeCompare(L.region(b.code),L.lang()));for(const c of rows){const option=node('option',c.code+' · '+L.region(c.code));option.value=c.code;$('country').append(option)}$('country').value=selected;}
7
+ function countriesView(){if(!countries.length)return;const selected=$('country').value||'MX';$('country').replaceChildren();const rows=[...countries].sort((a,b)=>L.region(a.code).localeCompare(L.region(b.code),L.lang()));for(const c of rows){const option=node('option',c.code+' · '+L.region(c.code));option.value=c.code;$('country').append(option)}$('country').value=selected;}
8
8
  function line(label,value){const row=node('dl','');row.className='result-line';row.append(node('dt',label),node('dd',value));$('summary').append(row)}
9
9
  function render(){
10
10
  $('sources').replaceChildren();$('summary').replaceChildren();$('copy-status').textContent=copyKey?L.t(copyKey):'';
@@ -0,0 +1,3 @@
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Connect your assistant · GridZen</title><meta name="description" content="Prepare GridZen research and synthetic-test tools in your assistant workspace."><link rel="icon" href="/favicon.svg"><link rel="stylesheet" href="/assets/site.css"><link rel="stylesheet" href="/developers/developer.css?v=0.4.1"></head><body data-title-key="harness.title"><div id="gz-nav"></div><main id="main" class="wrap developer"><header class="page-head"><span class="eyebrow" data-i18n="dev.badge">GridZen · Developer tools</span><h1 data-i18n="harness.heading">Bring GridZen into your workspace.</h1><p class="lead" data-i18n="harness.lead">Choose your assistant, install the kit and activate six Skills with five research and synthetic-test tools. Your prototype connects back to the Decision API workflow.</p></header><div class="assistant-workspace"><div class="setup-flow"><section class="card client-selector"><label for="client" data-i18n="harness.selection">Your assistant</label><select id="client"></select></section><section class="card setup-step"><span class="step-number">01</span><h2 data-i18n="harness.install">Install in a Python 3.11+ virtual environment</h2><pre>python3 -m venv .venv
2
+ . .venv/bin/activate
3
+ python -m pip install --upgrade gridzen-developer-kit</pre></section><section class="card setup-step"><span class="step-number">02</span><h2 data-i18n="harness.configure">Prepare this project</h2><p data-i18n="harness.setup-note">Preview first. Apply after checking the proposed project files.</p><pre id="setup"></pre><button type="button" id="copy-setup" class="button" data-i18n="harness.copy">Copy commands</button><p id="setup-copy-status" role="status"></p></section><section class="card setup-step"><span class="step-number">03</span><h2 data-i18n="harness.activation">Activate in your client</h2><p id="activation"></p><details class="config-details"><summary data-i18n="harness.config">Client-specific MCP configuration</summary><p data-i18n="harness.config-note">The CLI prepares this configuration for you. Expand it when importing manually.</p><p id="paths"></p><pre id="config"></pre></details></section></div><aside class="client-aside"><section class="card readiness"><span class="eyebrow" data-i18n="harness.tests">Client readiness</span><h2 id="client-name"></h2><p class="readiness-check" data-i18n="harness.test-config">Configuration verified</p><p id="client-status"></p><p data-i18n="harness.scope">Configuration preparation is tested for all ten clients. Native discovery and model acceptance are recorded separately.</p><a href="/developers/compatibility.json" data-i18n="harness.record">Read the dated acceptance record →</a></section><section class="card skill-downloads"><h2 data-i18n="harness.download">Individual Skill ZIPs</h2><p data-i18n="harness.skill-note">For manual Skill import, keep each individual ZIP intact.</p><details><summary data-i18n="harness.download">Individual Skill ZIPs</summary><ul id="skills"></ul></details><a class="button" href="/developers/downloads/gridzen-skills.zip" data-i18n="harness.bundle">Download all six Skills</a></section><p class="boundary" data-i18n="harness.boundary">Five MCP tools provide research, planning, simulation, fixture retrieval and explanation. Six Skills guide these tasks and draft workflows. Neither grants real verification, payout authorization or a legal conclusion.</p><a class="text-link" href="/docs/" data-i18n="dev.api-link">Read the Decision API contract →</a></aside></div></main><div id="gz-foot"></div><script src="/developers/locales.js?v=0.4.1"></script><script src="/developers/layout.js?v=0.4.1"></script><script src="/developers/language.js?v=0.4.1"></script><script src="/developers/harnesses.js?v=0.4.1"></script></body></html>
@@ -0,0 +1,2 @@
1
+ (async()=>{'use strict';const [record,configs]=await Promise.all([fetch('/developers/compatibility.json').then(r=>r.json()),fetch('/developers/client-configs.json').then(r=>r.json())]);const select=document.getElementById('client');const clients=record.clients;for(const client of clients){const option=document.createElement('option');option.value=client.client;option.textContent=({'codex':'Codex','claude-code':'Claude Code','claude-desktop':'Claude Desktop','cursor':'Cursor','vscode':'VS Code / Copilot','copilot-cli':'Copilot CLI','gemini-cli':'Gemini CLI','cline':'Cline','roo-code':'Roo Code','opencode':'OpenCode'})[client.client];select.append(option)}function update(){const row=clients.find(c=>c.client===select.value),name=row.client;document.getElementById('setup').textContent=`gridzen setup --client ${name} --project .
2
+ gridzen setup --client ${name} --project . --apply`;document.getElementById('activation').textContent=GridzenLanguage.t(row.manual_import?'harness.manual':'harness.native');document.getElementById('paths').textContent=row.config_path+' · '+(row.skill_path||'gridzen-clients/claude-desktop/skills');const key=row.template.split('/').pop().replace(/\.(json|toml)$/,'');document.getElementById('config').textContent=configs[key];document.getElementById('client-name').textContent=select.selectedOptions[0].textContent;const status=row.model_acceptance.startsWith('passed')?'harness.test-live':row.mcp_discovery.startsWith('passed')||row.skill_discovery.startsWith('passed')?'harness.test-discovery':'harness.test-pending';document.getElementById('client-status').textContent=GridzenLanguage.t(status)}select.addEventListener('change',update);update();document.getElementById('copy-setup').addEventListener('click',async()=>{let key='harness.copied';try{await navigator.clipboard.writeText(document.getElementById('setup').textContent)}catch(_){key='harness.copy-failed'}document.getElementById('setup-copy-status').textContent=GridzenLanguage.t(key)});const names=['gridzen-select-verification','gridzen-integrate-sandbox','gridzen-explain-verification','mexico-pilot-scoper','payout-policy-designer','provider-rights-readiness'];for(const name of names){const li=document.createElement('li'),a=document.createElement('a');a.href='/developers/downloads/'+name+'.zip';a.textContent=name;li.append(a);document.getElementById('skills').append(li)}})();
@@ -0,0 +1,7 @@
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Developer tools · GridZen</title><meta name="description" content="Explore global identity and account verification research, plan an integration, and test synthetic outcomes. API, MCP and Skills."><link rel="icon" href="/favicon.svg"><link rel="stylesheet" href="/assets/site.css"><link rel="stylesheet" href="/developers/developer.css?v=0.4.1"></head><body data-page="developers"><div id="gz-nav"></div><main id="main" class="wrap developer"><header class="developer-hero"><div><span class="eyebrow" data-i18n="dev.badge">GridZen · Developer tools</span><h1 data-i18n="dev.heading">Build your decision workflow.</h1><p class="lead" data-i18n="dev.lead">Start with the Decision API contract. Use research, Skills and a synthetic sandbox to plan inputs and test failure handling before an authorized evaluation.</p><div class="actions"><a class="button primary" href="/developers/harnesses.html" data-i18n="dev.get">Connect your assistant</a><a class="button" href="#playground" data-i18n="dev.try">Run the sandbox</a></div><p class="boundary" data-i18n="dev.boundary">Research and synthetic tests · No real identities verified</p></div><aside class="developer-preview"><div class="preview-head"><span>GridZen</span><span class="tag">RESEARCH / SANDBOX</span></div><h2 data-i18n="dev.preview-title">From a use case to a reviewable plan</h2><ol><li><span>01</span><p data-i18n="dev.preview-one">Frame the inputs and permissions</p></li><li><span>02</span><p data-i18n="dev.preview-two">Test synthetic failure cases</p></li><li><span>03</span><p data-i18n="dev.preview-three">Review the path to an evaluation</p></li></ol><div class="preview-foot" data-i18n="dev.preview-note">Research → prototype → review</div></aside></header><section id="playground"><div class="section-title"><h2 data-i18n="dev.start">Start with your use case.</h2><p data-i18n="dev.research">Research shows what a source documents. It does not mean GridZen has commercial access to that service.</p></div><div class="workspace"><div class="card controls"><label for="country" data-i18n="dev.country">Country / territory</label><select id="country"><option value="MX" data-i18n="dev.loading">Loading…</option></select><label for="event" data-i18n="dev.event">Use case</label><select id="event"><option value="payout" data-i18n="dev.payout">Payout / account ownership</option><option value="onboarding" data-i18n="dev.onboarding">Onboarding / identity</option><option value="account_change" data-i18n="dev.account_change">Account change / phone</option></select><button class="button" id="plan" data-i18n="dev.plan">Show integration plan</button><label for="scenario" data-i18n="dev.scenario">Synthetic test scenario</label><select id="scenario"><option value="match" data-i18n="dev.match">Match</option><option value="mismatch" data-i18n="dev.mismatch">Mismatch</option><option value="not_found" data-i18n="dev.not_found">No record</option><option value="timeout" data-i18n="dev.timeout">Provider timeout</option><option value="unsupported" data-i18n="dev.unsupported">Unsupported route</option></select><button class="button primary" id="run" data-i18n="dev.run">Run sandbox test</button><p data-i18n="dev.no-data">No personal details or credentials needed.</p></div><div class="card output"><div class="output-head"><span id="status" role="status" data-i18n="dev.choose">Choose a country to begin</span><span class="tag" data-i18n="dev.tag">SANDBOX / RESEARCH</span></div><div id="summary" aria-live="polite"></div><details id="raw"><summary data-i18n="dev.raw">Raw API response</summary><p data-i18n="dev.raw-note">API keys and codes remain unchanged. Research notes retain their source language.</p><pre id="result">No real provider is called.</pre><button class="button" id="copy" data-i18n="dev.copy">Copy JSON</button><p id="copy-status" role="status"></p></details></div></div><div id="sources"></div></section><section id="install"><div class="section-title"><h2 data-i18n="dev.use">Use it where you build.</h2><p data-i18n="dev.three">Six task-focused Skills and a local MCP server. The local tools work offline after installation.</p></div><div class="grid three skill-task-grid"><article class="card"><h3 data-i18n="dev.select">Choose a route</h3><p data-i18n="dev.select-desc">Compare research evidence, required inputs, user participation and access limits.</p></article><article class="card"><h3 data-i18n="dev.integrate">Integrate & test</h3><p data-i18n="dev.integrate-desc">Add a sandbox flow to your app with an HTTP API, Python SDK or Next.js example.</p></article><article class="card"><h3 data-i18n="dev.explain">Explain a result</h3><p data-i18n="dev.explain-desc">Keep missing data and provider failures distinct from a mismatch.</p></article><article class="card"><h3 data-i18n="dev.scope">Mexico pilot scope</h3><p data-i18n="dev.scope-desc">Draft owners, permissions and non-production limits; no pilot activation.</p></article><article class="card"><h3 data-i18n="dev.policy">Payout policy draft</h3><p data-i18n="dev.policy-desc">Design missing-evidence and provider-failure handling; no payment authorization.</p></article><article class="card"><h3 data-i18n="dev.rights">Provider rights checklist</h3><p data-i18n="dev.rights-desc">Identify contractual evidence gaps; no legal or compliance conclusion.</p></article></div><div class="actions"><a class="button primary" href="/developers/downloads/gridzen-developer-kit.zip" data-i18n="dev.download">Download developer kit</a><a class="button" href="/developers/downloads/gridzen-skills.zip" data-i18n="dev.download-skills">Download 6 Skills</a><a class="button" href="/developers/quickstart.html" data-i18n="dev.guide">Installation & API guide →</a><a class="button" href="/developers/harnesses.html" data-i18n="harness.link">Choose your client →</a><a class="button" href="/developers/api/openapi.json">OpenAPI</a></div><pre>python3 -m venv .venv
2
+ . .venv/bin/activate
3
+ python -m pip install --upgrade gridzen-developer-kit
4
+ gridzen setup --client all --project .
5
+ gridzen setup --client all --project . --apply
6
+ gridzen plan --country ID --event payout
7
+ gridzen simulate --country ID --capability bank_account_match --scenario timeout</pre><p class="boundary" data-i18n="dev.install-note">Unzip the developer kit first. Python 3.11+ required. MCP launch command: <code>gridzen-mcp</code>.</p></section><section class="next"><h2 data-i18n="dev.pilot">Have a real verification use case?</h2><p data-i18n="dev.pilot-desc">Tell us your country, verification type and expected volume. We’ll evaluate an authorized route for your pilot.</p><a class="button" href="/contact/" data-i18n="dev.discuss">Discuss a pilot</a><a class="text-link" href="/docs/" data-i18n="dev.api-link">Read the Decision API contract →</a></section></main><div id="gz-foot"></div><script src="/assets/i18n.js"></script><script src="/developers/locales.js?v=0.4.1"></script><script src="/developers/layout.js?v=0.4.1"></script><script src="/developers/language.js?v=0.4.1"></script><script src="/developers/developer.js?v=0.4.1"></script></body></html>
@@ -0,0 +1,47 @@
1
+ (() => {
2
+ 'use strict';
3
+ const supported = ['en', 'es', 'zh'];
4
+ const query = new URLSearchParams(location.search);
5
+ let lang = query.get('lang');
6
+ if (!supported.includes(lang)) {
7
+ try { const ref = new URL(document.referrer); if (ref.origin === location.origin) lang = /^\/(es|zh)\//.exec(ref.pathname)?.[1] || new URLSearchParams(ref.search).get('lang'); } catch (_) {}
8
+ try { if (!supported.includes(lang)) lang = localStorage.getItem('gz-lang'); } catch (_) {}
9
+ }
10
+ if (!supported.includes(lang)) lang = 'en';
11
+ document.body.dataset.locale = lang;
12
+ window.gzGetLang = () => lang;
13
+ window.gzOnLangChange = callback => callback();
14
+ const dictionary = window.GZ_DEVELOPER_LOCALES[lang];
15
+ for (const node of document.querySelectorAll('[data-i18n]')) {
16
+ if (dictionary[node.dataset.i18n]) node.innerHTML = dictionary[node.dataset.i18n];
17
+ }
18
+ function localizeLinks(root) {
19
+ for (const a of root.querySelectorAll('a[href]')) {
20
+ const raw = a.getAttribute('href'); if (raw.startsWith('#')) continue;
21
+ const url = new URL(raw, location.href); if (url.origin !== location.origin) continue;
22
+ if (url.pathname.startsWith('/developers/') && !url.pathname.includes('/downloads/') && !url.pathname.includes('/api/') && !url.pathname.endsWith('.json')) url.searchParams.set('lang', lang);
23
+ else if (/^\/(docs|trust-decision-api|contact|skills|research|guides|provider-packs|solutions)(\/|$)/.test(url.pathname) && lang !== 'en') url.pathname = '/' + lang + url.pathname;
24
+ a.setAttribute('href', url.pathname + url.search + url.hash);
25
+ }
26
+ }
27
+ localizeLinks(document);
28
+ async function getShell(path) { const response = await fetch(path, {signal: AbortSignal.timeout(5000)}); if (!response.ok) throw Error('Shared shell unavailable'); return response.json(); }
29
+ window.GridzenShellReady = getShell('/assets/site-shell.json').catch(() => getShell('/developers/site-shell.json')).then(shell => {
30
+ const current = shell.languages[lang];
31
+ document.getElementById('gz-nav').innerHTML = current.nav;
32
+ document.getElementById('gz-foot').innerHTML = current.footer;
33
+ for (const a of document.querySelectorAll('#gz-nav .lang a')) {
34
+ const target = new URL(location.href); target.searchParams.set('lang', a.lang);
35
+ a.href = target.pathname + target.search + target.hash;
36
+ }
37
+ // Website measurement is implemented by the main site; developer counters remain independent.
38
+ document.querySelector('#gz-foot #measurement-toggle')?.remove();
39
+ const subnav = document.createElement('nav'); subnav.className = 'developer-subnav'; subnav.setAttribute('aria-label', dictionary['shell.overview']);
40
+ for (const [path, key] of [['/developers/', 'shell.overview'], ['/developers/quickstart.html', 'shell.quickstart'], ['/developers/harnesses.html', 'shell.assistant']]) {
41
+ const a = document.createElement('a'); a.href = path + '?lang=' + lang; a.textContent = dictionary[key];
42
+ if (location.pathname === path) a.setAttribute('aria-current', 'page'); subnav.append(a);
43
+ }
44
+ document.querySelector('main').prepend(subnav);
45
+ return true;
46
+ }).catch(() => { document.getElementById('gz-nav').innerHTML = '<nav class="site-nav"><div class="site-nav-in"><a class="brand" href="' + (lang === 'en' ? '/' : '/' + lang + '/') + '"><i></i>GridZen</a></div></nav>'; return false; });
47
+ })();