devrev-Python-SDK 2.4.1__tar.gz → 2.7.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.
Files changed (349) hide show
  1. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/Dockerfile +2 -2
  2. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/PKG-INFO +11 -1
  3. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/README.md +10 -0
  4. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/deploy/README.md +88 -1
  5. devrev_python_sdk-2.7.0/deploy/audit-logging-setup.sh +270 -0
  6. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/deploy/cloudbuild.yaml +3 -7
  7. devrev_python_sdk-2.7.0/deploy/monitoring/README.md +230 -0
  8. devrev_python_sdk-2.7.0/deploy/monitoring/alert-policies.yaml +180 -0
  9. devrev_python_sdk-2.7.0/deploy/monitoring/dashboard.json +69 -0
  10. devrev_python_sdk-2.7.0/deploy/monitoring/validate-config.sh +142 -0
  11. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/changelog.md +57 -0
  12. devrev_python_sdk-2.7.0/docs/hooks/copy_llms.py +44 -0
  13. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/index.md +64 -17
  14. devrev_python_sdk-2.7.0/docs/mcp/deployment.md +143 -0
  15. devrev_python_sdk-2.7.0/docs/mcp/index.md +127 -0
  16. devrev_python_sdk-2.7.0/docs/mcp/quickstart.md +171 -0
  17. devrev_python_sdk-2.7.0/docs/mcp/tools-reference.md +166 -0
  18. devrev_python_sdk-2.7.0/docs/stylesheets/extra.css +300 -0
  19. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/llms-ctx-full.txt +163 -3
  20. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/llms-ctx.txt +54 -7
  21. devrev_python_sdk-2.7.0/llms-mcp.txt +209 -0
  22. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/llms.txt +17 -5
  23. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/mkdocs.yml +21 -5
  24. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/pyproject.toml +1 -1
  25. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/__init__.py +1 -1
  26. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/__init__.py +1 -1
  27. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/config.py +6 -0
  28. devrev_python_sdk-2.7.0/src/devrev_mcp/middleware/audit.py +416 -0
  29. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/middleware/auth.py +120 -4
  30. devrev_python_sdk-2.7.0/src/devrev_mcp/resources/server_info.py +42 -0
  31. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/server.py +152 -0
  32. devrev_python_sdk-2.7.0/src/devrev_mcp/tools/server_info.py +108 -0
  33. devrev_python_sdk-2.7.0/tests/unit/mcp/test_audit.py +656 -0
  34. devrev_python_sdk-2.7.0/tests/unit/mcp/test_server_info.py +336 -0
  35. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/uv.lock +55 -58
  36. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/agents/bug-fixer.md +0 -0
  37. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/agents/builder.md +0 -0
  38. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/agents/documentation.md +0 -0
  39. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/agents/foreman.md +0 -0
  40. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/agents/pr-review-boss.md +0 -0
  41. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/agents/release-manager.md +0 -0
  42. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/agents/simplifier.md +0 -0
  43. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/agents/tester.md +0 -0
  44. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/commands/foreman-work.md +0 -0
  45. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/commands/release-prepare.md +0 -0
  46. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/commands/review-start.md +0 -0
  47. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/commands/simplify-code.md +0 -0
  48. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/rules/code-quality.md +0 -0
  49. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/rules/data-modeling.md +0 -0
  50. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/rules/devrev-sdk.md +0 -0
  51. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/rules/git-workflow.md +0 -0
  52. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/rules/pull-requests.md +0 -0
  53. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/rules/python-development.md +0 -0
  54. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/rules/security.md +0 -0
  55. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.augment/rules/testing.md +0 -0
  56. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.dockerignore +0 -0
  57. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.env.sample +0 -0
  58. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  59. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  60. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  61. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/ISSUE_TEMPLATE/question.yml +0 -0
  62. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/dependabot.yml +0 -0
  63. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/pull_request_template.md +0 -0
  64. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/workflows/api-check.yml +0 -0
  65. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/workflows/ci.yml +0 -0
  66. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/workflows/claude-code-review.yml +0 -0
  67. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/workflows/claude.yml +0 -0
  68. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/workflows/deploy.yml +0 -0
  69. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/workflows/docs.yml +0 -0
  70. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/workflows/integration-tests.yml +0 -0
  71. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/workflows/release.yml +0 -0
  72. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.github/workflows/sync-openapi.yml +0 -0
  73. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.gitignore +0 -0
  74. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/.pre-commit-config.yaml +0 -0
  75. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/CODE_OF_CONDUCT.md +0 -0
  76. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/CONTRIBUTING.md +0 -0
  77. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/DEPRECATIONS.md +0 -0
  78. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/KNOWN_ISSUES.md +0 -0
  79. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/OPENAPI_SPEC_DISCREPANCIES.md +0 -0
  80. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/SECURITY.md +0 -0
  81. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/augment-mcp-config-remote.json +0 -0
  82. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/augment-mcp-config.json +0 -0
  83. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/augment-settings.json +0 -0
  84. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/benchmarks/README.md +0 -0
  85. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/benchmarks/bench_http_client.py +0 -0
  86. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/benchmarks/bench_models.py +0 -0
  87. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/benchmarks/bench_pagination.py +0 -0
  88. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/benchmarks/conftest.py +0 -0
  89. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/context7.json +0 -0
  90. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/deploy/service.yaml +0 -0
  91. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docker-compose.yml +0 -0
  92. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/beta/brands.md +0 -0
  93. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/beta/engagements.md +0 -0
  94. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/beta/incidents.md +0 -0
  95. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/beta/index.md +0 -0
  96. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/beta/question-answers.md +0 -0
  97. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/beta/recommendations.md +0 -0
  98. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/beta/search.md +0 -0
  99. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/beta/uoms.md +0 -0
  100. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/beta-api-differences.md +0 -0
  101. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/client.md +0 -0
  102. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/config.md +0 -0
  103. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/exceptions.md +0 -0
  104. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/index.md +0 -0
  105. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/models/accounts.md +0 -0
  106. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/models/base.md +0 -0
  107. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/models/index.md +0 -0
  108. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/models/users.md +0 -0
  109. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/models/works.md +0 -0
  110. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/accounts.md +0 -0
  111. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/articles.md +0 -0
  112. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/code-changes.md +0 -0
  113. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/conversations.md +0 -0
  114. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/dev-users.md +0 -0
  115. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/groups.md +0 -0
  116. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/index.md +0 -0
  117. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/links.md +0 -0
  118. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/parts.md +0 -0
  119. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/rev-users.md +0 -0
  120. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/slas.md +0 -0
  121. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/tags.md +0 -0
  122. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/timeline-entries.md +0 -0
  123. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/webhooks.md +0 -0
  124. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/api/services/works.md +0 -0
  125. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/examples/advanced.md +0 -0
  126. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/examples/basic.md +0 -0
  127. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/examples/beta-features.md +0 -0
  128. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/examples/index.md +0 -0
  129. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/examples/integrations.md +0 -0
  130. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/getting-started/authentication.md +0 -0
  131. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/getting-started/index.md +0 -0
  132. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/getting-started/installation.md +0 -0
  133. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/getting-started/quickstart.md +0 -0
  134. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/guides/beta-api.md +0 -0
  135. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/guides/compatibility.md +0 -0
  136. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/guides/configuration.md +0 -0
  137. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/guides/error-handling.md +0 -0
  138. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/guides/github-actions-setup.md +0 -0
  139. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/guides/index.md +0 -0
  140. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/guides/logging.md +0 -0
  141. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/guides/pagination.md +0 -0
  142. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/guides/sync-vs-async.md +0 -0
  143. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/guides/testing.md +0 -0
  144. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/guides/version-support.md +0 -0
  145. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/docs/guides/write-integration-testing-strategy.md +0 -0
  146. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/README.md +0 -0
  147. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/basic/README.md +0 -0
  148. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/basic/async_example.py +0 -0
  149. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/basic/create_work.py +0 -0
  150. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/basic/error_handling.py +0 -0
  151. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/basic/list_accounts.py +0 -0
  152. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/basic/pagination.py +0 -0
  153. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/basic/search_users.py +0 -0
  154. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/integrations/cloud_functions/README.md +0 -0
  155. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/integrations/cloud_functions/main.py +0 -0
  156. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/integrations/cloud_functions/requirements.txt +0 -0
  157. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/integrations/fastapi/README.md +0 -0
  158. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/integrations/fastapi/main.py +0 -0
  159. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/integrations/fastapi/requirements.txt +0 -0
  160. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/integrations/flask/README.md +0 -0
  161. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/integrations/flask/app.py +0 -0
  162. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/examples/integrations/flask/requirements.txt +0 -0
  163. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/openapi-beta.yaml +0 -0
  164. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/openapi-public.yaml +0 -0
  165. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/openapi-spec-corrections.yaml +0 -0
  166. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/scripts/build_ai_docs.py +0 -0
  167. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/scripts/setup-github-secrets.sh +0 -0
  168. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/client.py +0 -0
  169. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/config.py +0 -0
  170. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/exceptions.py +0 -0
  171. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/__init__.py +0 -0
  172. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/accounts.py +0 -0
  173. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/articles.py +0 -0
  174. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/base.py +0 -0
  175. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/brands.py +0 -0
  176. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/code_changes.py +0 -0
  177. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/conversations.py +0 -0
  178. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/dev_users.py +0 -0
  179. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/engagements.py +0 -0
  180. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/groups.py +0 -0
  181. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/incidents.py +0 -0
  182. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/links.py +0 -0
  183. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/notifications.py +0 -0
  184. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/parts.py +0 -0
  185. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/preferences.py +0 -0
  186. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/question_answers.py +0 -0
  187. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/recommendations.py +0 -0
  188. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/rev_users.py +0 -0
  189. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/search.py +0 -0
  190. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/slas.py +0 -0
  191. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/sync.py +0 -0
  192. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/tags.py +0 -0
  193. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/tasks.py +0 -0
  194. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/timeline_entries.py +0 -0
  195. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/timeline_events.py +0 -0
  196. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/track_events.py +0 -0
  197. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/uoms.py +0 -0
  198. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/webhooks.py +0 -0
  199. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/widgets.py +0 -0
  200. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/models/works.py +0 -0
  201. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/py.typed +0 -0
  202. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/__init__.py +0 -0
  203. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/accounts.py +0 -0
  204. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/articles.py +0 -0
  205. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/base.py +0 -0
  206. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/brands.py +0 -0
  207. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/code_changes.py +0 -0
  208. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/conversations.py +0 -0
  209. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/dev_users.py +0 -0
  210. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/engagements.py +0 -0
  211. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/groups.py +0 -0
  212. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/incidents.py +0 -0
  213. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/links.py +0 -0
  214. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/notifications.py +0 -0
  215. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/parts.py +0 -0
  216. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/preferences.py +0 -0
  217. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/question_answers.py +0 -0
  218. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/recommendations.py +0 -0
  219. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/rev_users.py +0 -0
  220. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/search.py +0 -0
  221. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/slas.py +0 -0
  222. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/tags.py +0 -0
  223. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/timeline_entries.py +0 -0
  224. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/track_events.py +0 -0
  225. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/uoms.py +0 -0
  226. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/webhooks.py +0 -0
  227. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/services/works.py +0 -0
  228. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/utils/__init__.py +0 -0
  229. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/utils/deprecation.py +0 -0
  230. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/utils/http.py +0 -0
  231. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/utils/logging.py +0 -0
  232. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev/utils/pagination.py +0 -0
  233. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/__main__.py +0 -0
  234. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/middleware/__init__.py +0 -0
  235. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/middleware/health.py +0 -0
  236. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/middleware/rate_limit.py +0 -0
  237. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/prompts/__init__.py +0 -0
  238. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/prompts/escalation.py +0 -0
  239. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/prompts/investigate.py +0 -0
  240. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/prompts/response.py +0 -0
  241. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/prompts/summarize.py +0 -0
  242. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/prompts/triage.py +0 -0
  243. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/resources/__init__.py +0 -0
  244. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/resources/account.py +0 -0
  245. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/resources/article.py +0 -0
  246. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/resources/conversation.py +0 -0
  247. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/resources/part.py +0 -0
  248. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/resources/ticket.py +0 -0
  249. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/resources/user.py +0 -0
  250. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/__init__.py +0 -0
  251. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/accounts.py +0 -0
  252. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/articles.py +0 -0
  253. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/conversations.py +0 -0
  254. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/engagements.py +0 -0
  255. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/groups.py +0 -0
  256. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/incidents.py +0 -0
  257. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/links.py +0 -0
  258. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/parts.py +0 -0
  259. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/recommendations.py +0 -0
  260. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/search.py +0 -0
  261. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/slas.py +0 -0
  262. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/tags.py +0 -0
  263. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/timeline.py +0 -0
  264. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/users.py +0 -0
  265. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/tools/works.py +0 -0
  266. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/utils/__init__.py +0 -0
  267. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/utils/errors.py +0 -0
  268. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/utils/formatting.py +0 -0
  269. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/src/devrev_mcp/utils/pagination.py +0 -0
  270. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/__init__.py +0 -0
  271. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/conftest.py +0 -0
  272. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/__init__.py +0 -0
  273. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/conftest.py +0 -0
  274. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_accounts_e2e.py +0 -0
  275. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_all_readonly_endpoints.py +0 -0
  276. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_backwards_compatibility.py +0 -0
  277. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_contacts_e2e.py +0 -0
  278. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_core_services_phase1.py +0 -0
  279. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_extended_services_phase2.py +0 -0
  280. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_get_endpoints.py +0 -0
  281. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_issues_e2e.py +0 -0
  282. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_kb_articles_e2e.py +0 -0
  283. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_ping.py +0 -0
  284. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_question_answers_e2e.py +0 -0
  285. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_readonly_endpoints.py +0 -0
  286. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_specialized_services_phase3.py +0 -0
  287. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_tickets_e2e.py +0 -0
  288. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/test_write_operations.py +0 -0
  289. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/utils/__init__.py +0 -0
  290. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/utils/cleanup.py +0 -0
  291. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/utils/constants.py +0 -0
  292. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/integration/utils/data_manager.py +0 -0
  293. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/__init__.py +0 -0
  294. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/__init__.py +0 -0
  295. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/conftest.py +0 -0
  296. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_config.py +0 -0
  297. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_phase4_transport.py +0 -0
  298. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_prompts.py +0 -0
  299. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_resources.py +0 -0
  300. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_accounts.py +0 -0
  301. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_articles.py +0 -0
  302. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_conversations.py +0 -0
  303. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_engagements.py +0 -0
  304. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_groups.py +0 -0
  305. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_incidents.py +0 -0
  306. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_links.py +0 -0
  307. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_parts.py +0 -0
  308. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_recommendations.py +0 -0
  309. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_search.py +0 -0
  310. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_slas.py +0 -0
  311. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_tags.py +0 -0
  312. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_timeline.py +0 -0
  313. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_users.py +0 -0
  314. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_tools_works.py +0 -0
  315. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/mcp/test_utils.py +0 -0
  316. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/models/__init__.py +0 -0
  317. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/models/test_user_state_regression.py +0 -0
  318. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/__init__.py +0 -0
  319. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/conftest.py +0 -0
  320. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_articles.py +0 -0
  321. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_async_services.py +0 -0
  322. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_brands.py +0 -0
  323. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_code_changes.py +0 -0
  324. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_conversations.py +0 -0
  325. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_engagements.py +0 -0
  326. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_groups.py +0 -0
  327. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_incidents.py +0 -0
  328. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_links.py +0 -0
  329. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_notifications.py +0 -0
  330. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_parts.py +0 -0
  331. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_preferences.py +0 -0
  332. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_question_answers.py +0 -0
  333. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_recommendations.py +0 -0
  334. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_search.py +0 -0
  335. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_slas.py +0 -0
  336. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_tags.py +0 -0
  337. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_timeline_entries.py +0 -0
  338. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_track_events.py +0 -0
  339. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_uoms.py +0 -0
  340. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_webhooks.py +0 -0
  341. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/services/test_works.py +0 -0
  342. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/test_base_service.py +0 -0
  343. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/test_client.py +0 -0
  344. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/test_config.py +0 -0
  345. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/test_deprecation.py +0 -0
  346. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/test_exceptions.py +0 -0
  347. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/test_http.py +0 -0
  348. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/test_logging.py +0 -0
  349. {devrev_python_sdk-2.4.1 → devrev_python_sdk-2.7.0}/tests/unit/test_pagination.py +0 -0
@@ -39,11 +39,11 @@ FROM python:3.11-slim AS runtime
39
39
  # Metadata labels
40
40
  LABEL maintainer="Matthew G. Monteleone <matthewm@augmentcode.com>" \
41
41
  description="DevRev MCP Server - A Model Context Protocol server for the DevRev platform" \
42
- version="2.3.0" \
42
+ version="2.6.0" \
43
43
  org.opencontainers.image.source="https://github.com/mgmonteleone/py-dev-rev" \
44
44
  org.opencontainers.image.title="DevRev MCP Server" \
45
45
  org.opencontainers.image.description="Production-ready MCP server for DevRev API integration" \
46
- org.opencontainers.image.version="2.3.0" \
46
+ org.opencontainers.image.version="2.6.0" \
47
47
  org.opencontainers.image.licenses="MIT"
48
48
 
49
49
  # Set environment variables for Python
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devrev-Python-SDK
3
- Version: 2.4.1
3
+ Version: 2.7.0
4
4
  Summary: A modern, type-safe Python SDK for the DevRev API
5
5
  Project-URL: Homepage, https://github.com/mgmonteleone/py-dev-rev
6
6
  Project-URL: Documentation, https://github.com/mgmonteleone/py-dev-rev
@@ -97,6 +97,7 @@ A modern, type-safe Python SDK for the DevRev API.
97
97
  - [Configuration](#configuration)
98
98
  - [Error Handling](#error-handling)
99
99
  - [Logging](#logging)
100
+ - [MCP Server](#mcp-server)
100
101
  - [Development](#development)
101
102
  - [Testing Strategy](#testing-strategy)
102
103
  - [CI/CD Pipeline](#cicd-pipeline)
@@ -153,6 +154,15 @@ This SDK is generated and maintained from the official DevRev OpenAPI specificat
153
154
  - ✅ **Health Checks** - Built-in health check endpoints for monitoring
154
155
  - ✅ **High Test Coverage** - 80%+ code coverage with unit and integration tests
155
156
 
157
+ ### MCP Server (AI Integration)
158
+
159
+ - ✅ **78+ MCP Tools** — Full CRUD for tickets, accounts, users, articles, and all DevRev resources
160
+ - ✅ **7 Resource Templates** — `devrev://` URI scheme for AI-accessible data browsing
161
+ - ✅ **8 Workflow Prompts** — Pre-built triage, escalation, investigation, and reporting workflows
162
+ - ✅ **3 Transport Modes** — stdio (local), Streamable HTTP (production), SSE (legacy)
163
+ - ✅ **Per-User Authentication** — DevRev PAT auth mode for team deployments
164
+ - ✅ **Cloud Run Deployment** — One-command deploy to Google Cloud Run with auto-scaling
165
+
156
166
  ---
157
167
 
158
168
  ## Installation
@@ -25,6 +25,7 @@ A modern, type-safe Python SDK for the DevRev API.
25
25
  - [Configuration](#configuration)
26
26
  - [Error Handling](#error-handling)
27
27
  - [Logging](#logging)
28
+ - [MCP Server](#mcp-server)
28
29
  - [Development](#development)
29
30
  - [Testing Strategy](#testing-strategy)
30
31
  - [CI/CD Pipeline](#cicd-pipeline)
@@ -81,6 +82,15 @@ This SDK is generated and maintained from the official DevRev OpenAPI specificat
81
82
  - ✅ **Health Checks** - Built-in health check endpoints for monitoring
82
83
  - ✅ **High Test Coverage** - 80%+ code coverage with unit and integration tests
83
84
 
85
+ ### MCP Server (AI Integration)
86
+
87
+ - ✅ **78+ MCP Tools** — Full CRUD for tickets, accounts, users, articles, and all DevRev resources
88
+ - ✅ **7 Resource Templates** — `devrev://` URI scheme for AI-accessible data browsing
89
+ - ✅ **8 Workflow Prompts** — Pre-built triage, escalation, investigation, and reporting workflows
90
+ - ✅ **3 Transport Modes** — stdio (local), Streamable HTTP (production), SSE (legacy)
91
+ - ✅ **Per-User Authentication** — DevRev PAT auth mode for team deployments
92
+ - ✅ **Cloud Run Deployment** — One-command deploy to Google Cloud Run with auto-scaling
93
+
84
94
  ---
85
95
 
86
96
  ## Installation
@@ -461,7 +461,94 @@ curl -X POST https://devrev-mcp-server-xxx.run.app/mcp/v1/initialize \
461
461
 
462
462
  ### Audit and Monitoring
463
463
 
464
- 1. **Cloud Logging**: All requests logged in JSON format
464
+ #### Application-Level Audit Logging
465
+
466
+ The MCP server includes built-in structured audit logging for compliance. When enabled (default), every authentication event and tool invocation is logged with structured JSON fields.
467
+
468
+ **Audit Event Schema:**
469
+ ```json
470
+ {
471
+ "event_type": "audit",
472
+ "action": "tool_invocation",
473
+ "user": {"id": "don:...", "email": "user@example.com", "pat_hash": "sha256:..."},
474
+ "tool": {"name": "devrev_works_list", "category": "read"},
475
+ "request": {"client_ip": "203.0.113.42"},
476
+ "outcome": "success",
477
+ "duration_ms": 142
478
+ }
479
+ ```
480
+
481
+ **Configuration:**
482
+ ```bash
483
+ # Enable/disable audit logging (default: true)
484
+ MCP_AUDIT_LOG_ENABLED=true
485
+ ```
486
+
487
+ **Querying audit logs:**
488
+ ```bash
489
+ # View recent audit events
490
+ gcloud logging read 'resource.type="cloud_run_revision" AND jsonPayload.event_type="audit"' \
491
+ --project=PROJECT_ID --limit=50 --format=json
492
+
493
+ # View auth failures only
494
+ gcloud logging read 'jsonPayload.event_type="audit" AND jsonPayload.action="auth_failure"' \
495
+ --project=PROJECT_ID --limit=50
496
+
497
+ # View tool invocations for a specific user
498
+ gcloud logging read 'jsonPayload.event_type="audit" AND jsonPayload.user.email="user@example.com"' \
499
+ --project=PROJECT_ID --limit=50
500
+ ```
501
+
502
+ #### Immutable Audit Log Storage
503
+
504
+ For compliance with immutable log requirements, set up a WORM-compliant Cloud Storage bucket with a Cloud Logging sink:
505
+
506
+ ```bash
507
+ # Run the setup script
508
+ ./deploy/audit-logging-setup.sh --project=YOUR_PROJECT_ID
509
+
510
+ # With WORM lock (IRREVERSIBLE — enables permanent retention):
511
+ ./deploy/audit-logging-setup.sh --project=YOUR_PROJECT_ID --lock
512
+ ```
513
+
514
+ This creates:
515
+ 1. A GCS bucket with a 365-day retention policy
516
+ 2. A Cloud Logging sink that exports `event_type="audit"` entries
517
+ 3. IAM bindings for the sink's service account
518
+
519
+ See `deploy/audit-logging-setup.sh --help` for all options.
520
+
521
+ #### Monitoring and Alerting
522
+
523
+ Alert policies and a dashboard are provided in `deploy/monitoring/`:
524
+
525
+ ```bash
526
+ # Validate prerequisites
527
+ ./deploy/monitoring/validate-config.sh YOUR_PROJECT_ID
528
+
529
+ # Create a notification channel
530
+ gcloud alpha monitoring channels create \
531
+ --display-name="MCP Audit Alerts" \
532
+ --type=email \
533
+ --channel-labels=email_address=alerts@yourcompany.com
534
+
535
+ # Apply alert policies (edit alert-policies.yaml first with your project/channel IDs)
536
+ gcloud alpha monitoring policies create \
537
+ --policy-from-file=deploy/monitoring/alert-policies.yaml
538
+
539
+ # Import dashboard
540
+ gcloud monitoring dashboards create \
541
+ --config-from-file=deploy/monitoring/dashboard.json
542
+ ```
543
+
544
+ **Alert policies include:**
545
+ - High auth failure rate (>10 failures in 5 min)
546
+ - High destructive operation rate (>20 deletes in 10 min)
547
+ - Elevated tool error rate (>20% failure over 5 min)
548
+
549
+ See `deploy/monitoring/README.md` for full details.
550
+
551
+ 1. **Cloud Logging**: All requests and audit events logged in JSON format
465
552
  ```bash
466
553
  gcloud run services logs read devrev-mcp-server --region=us-central1
467
554
  ```
@@ -0,0 +1,270 @@
1
+ #!/usr/bin/env bash
2
+ # Audit Logging Infrastructure Setup for DevRev MCP Server
3
+ # Sets up immutable audit log storage for compliance.
4
+ #
5
+ # Usage:
6
+ # ./deploy/audit-logging-setup.sh --project=my-project
7
+ # ./deploy/audit-logging-setup.sh --project=my-project --retention=730 --lock
8
+ #
9
+ # This script creates:
10
+ # 1. A GCS bucket with a retention policy for audit log storage
11
+ # 2. A Cloud Logging sink that exports audit events to the bucket
12
+ # 3. IAM bindings for the sink's service account
13
+ #
14
+ # The --lock flag enables WORM (Write Once Read Many) compliance by
15
+ # permanently locking the bucket retention policy. THIS IS IRREVERSIBLE.
16
+
17
+ set -euo pipefail
18
+
19
+ # Color codes for output
20
+ RED='\033[0;31m'
21
+ GREEN='\033[0;32m'
22
+ YELLOW='\033[1;33m'
23
+ BLUE='\033[0;34m'
24
+ NC='\033[0m' # No Color
25
+
26
+ # Default values
27
+ REGION="${REGION:-us-central1}"
28
+ RETENTION_DAYS="${RETENTION_DAYS:-365}"
29
+ BUCKET_NAME=""
30
+ SINK_NAME="${SINK_NAME:-mcp-audit-log-sink}"
31
+ SERVICE_NAME="${SERVICE_NAME:-devrev-mcp-server}"
32
+ PROJECT_ID="${PROJECT_ID:-}"
33
+ LOCK_BUCKET=false
34
+
35
+ # Helper functions
36
+ log_info() {
37
+ echo -e "${BLUE}[INFO]${NC} $1"
38
+ }
39
+
40
+ log_success() {
41
+ echo -e "${GREEN}[SUCCESS]${NC} $1"
42
+ }
43
+
44
+ log_warning() {
45
+ echo -e "${YELLOW}[WARNING]${NC} $1"
46
+ }
47
+
48
+ log_error() {
49
+ echo -e "${RED}[ERROR]${NC} $1"
50
+ }
51
+
52
+ show_usage() {
53
+ cat << EOF
54
+ Usage: $0 [OPTIONS]
55
+
56
+ Required:
57
+ --project=PROJECT_ID GCP project ID
58
+
59
+ Optional:
60
+ --region=REGION GCS bucket region (default: us-central1)
61
+ --retention=DAYS Retention period in days (default: 365)
62
+ --bucket=BUCKET_NAME GCS bucket name (default: PROJECT_ID-mcp-audit-logs)
63
+ --sink=SINK_NAME Cloud Logging sink name (default: mcp-audit-log-sink)
64
+ --service=SERVICE_NAME Cloud Run service name (default: devrev-mcp-server)
65
+ --lock Lock bucket retention policy (IRREVERSIBLE!)
66
+ -h, --help Show this help message
67
+
68
+ Examples:
69
+ $0 --project=my-project
70
+ $0 --project=my-project --retention=730 --lock
71
+
72
+ EOF
73
+ }
74
+
75
+ # Parse command line arguments
76
+ for arg in "$@"; do
77
+ case $arg in
78
+ --project=*)
79
+ PROJECT_ID="${arg#*=}"
80
+ shift
81
+ ;;
82
+ --region=*)
83
+ REGION="${arg#*=}"
84
+ shift
85
+ ;;
86
+ --retention=*)
87
+ RETENTION_DAYS="${arg#*=}"
88
+ shift
89
+ ;;
90
+ --bucket=*)
91
+ BUCKET_NAME="${arg#*=}"
92
+ shift
93
+ ;;
94
+ --sink=*)
95
+ SINK_NAME="${arg#*=}"
96
+ shift
97
+ ;;
98
+ --service=*)
99
+ SERVICE_NAME="${arg#*=}"
100
+ shift
101
+ ;;
102
+ --lock)
103
+ LOCK_BUCKET=true
104
+ shift
105
+ ;;
106
+ -h|--help)
107
+ show_usage
108
+ exit 0
109
+ ;;
110
+ *)
111
+ log_error "Unknown option: $arg"
112
+ show_usage
113
+ exit 1
114
+ ;;
115
+ esac
116
+ done
117
+
118
+ # Validate required parameters
119
+ if [ -z "$PROJECT_ID" ]; then
120
+ log_error "PROJECT_ID is required"
121
+ show_usage
122
+ exit 1
123
+ fi
124
+
125
+ # Set default bucket name if not provided
126
+ if [ -z "$BUCKET_NAME" ]; then
127
+ BUCKET_NAME="${PROJECT_ID}-mcp-audit-logs"
128
+ fi
129
+
130
+ log_info "Starting audit logging infrastructure setup"
131
+ log_info "Project: $PROJECT_ID"
132
+ log_info "Region: $REGION"
133
+ log_info "Bucket: $BUCKET_NAME"
134
+ log_info "Retention: $RETENTION_DAYS days"
135
+ log_info "Sink: $SINK_NAME"
136
+ log_info "Service: $SERVICE_NAME"
137
+ log_info "Lock bucket: $LOCK_BUCKET"
138
+ echo ""
139
+
140
+ # Step 1: Create GCS bucket with retention policy
141
+ log_info "Step 1: Creating GCS bucket with retention policy..."
142
+ if gsutil ls -b "gs://$BUCKET_NAME" &>/dev/null; then
143
+ log_warning "Bucket gs://$BUCKET_NAME already exists, skipping creation"
144
+ else
145
+ log_info "Creating bucket gs://$BUCKET_NAME..."
146
+ gsutil mb -p "$PROJECT_ID" -l "$REGION" -b on "gs://$BUCKET_NAME"
147
+ log_success "Bucket created"
148
+ fi
149
+
150
+ # Set retention policy (skip if bucket is already locked)
151
+ LOCK_STATUS=$(gsutil retention get "gs://$BUCKET_NAME" 2>/dev/null | grep -i "Locked" || echo "")
152
+ if echo "$LOCK_STATUS" | grep -qi "true"; then
153
+ log_warning "Bucket retention policy is locked; skipping retention update"
154
+ else
155
+ log_info "Setting retention policy to $RETENTION_DAYS days..."
156
+ gsutil retention set "${RETENTION_DAYS}d" "gs://$BUCKET_NAME"
157
+ log_success "Retention policy set"
158
+ fi
159
+
160
+ # Step 2: Lock the bucket (optional, IRREVERSIBLE)
161
+ if [ "$LOCK_BUCKET" = true ]; then
162
+ log_warning "Checking if bucket retention policy is already locked..."
163
+
164
+ # Check if already locked
165
+ LOCK_STATUS=$(gsutil retention get "gs://$BUCKET_NAME" | grep -i "Retention Policy Locked" || echo "")
166
+
167
+ if echo "$LOCK_STATUS" | grep -qi "true"; then
168
+ log_warning "Bucket retention policy is already locked"
169
+ else
170
+ echo ""
171
+ log_warning "⚠️ WARNING: You are about to PERMANENTLY LOCK the bucket retention policy!"
172
+ log_warning "This action is IRREVERSIBLE and enforces WORM (Write Once Read Many) compliance."
173
+ log_warning "Once locked, you CANNOT:"
174
+ log_warning " - Reduce the retention period"
175
+ log_warning " - Delete the bucket until all objects expire"
176
+ log_warning " - Remove the retention policy"
177
+ echo ""
178
+ read -p "Type 'LOCK' to confirm: " confirmation
179
+
180
+ if [ "$confirmation" = "LOCK" ]; then
181
+ log_info "Locking bucket retention policy..."
182
+ gsutil retention lock "gs://$BUCKET_NAME"
183
+ log_success "Bucket retention policy locked (WORM compliance enabled)"
184
+ else
185
+ log_warning "Bucket lock cancelled"
186
+ fi
187
+ fi
188
+ else
189
+ log_info "Skipping bucket lock (use --lock flag to enable WORM compliance)"
190
+ fi
191
+
192
+ # Step 3: Create Cloud Logging sink
193
+ log_info "Step 3: Creating Cloud Logging sink..."
194
+ if gcloud logging sinks describe "$SINK_NAME" --project="$PROJECT_ID" &>/dev/null; then
195
+ log_warning "Sink $SINK_NAME already exists, skipping creation"
196
+ else
197
+ log_info "Creating sink $SINK_NAME..."
198
+
199
+ # Create the sink with filter for audit events
200
+ gcloud logging sinks create "$SINK_NAME" \
201
+ "storage.googleapis.com/$BUCKET_NAME" \
202
+ --project="$PROJECT_ID" \
203
+ --log-filter="resource.type=\"cloud_run_revision\" AND resource.labels.service_name=\"$SERVICE_NAME\" AND jsonPayload.event_type=\"audit\""
204
+
205
+ log_success "Sink created"
206
+ fi
207
+
208
+ # Step 4: Grant sink service account write access to bucket
209
+ log_info "Step 4: Granting sink service account write access..."
210
+
211
+ # Get the sink's writer identity
212
+ SINK_SA=$(gcloud logging sinks describe "$SINK_NAME" --project="$PROJECT_ID" --format='value(writerIdentity)')
213
+
214
+ if [ -z "$SINK_SA" ]; then
215
+ log_error "Failed to get sink service account"
216
+ exit 1
217
+ fi
218
+
219
+ log_info "Sink service account: $SINK_SA"
220
+
221
+ # Grant objectCreator role
222
+ log_info "Granting objectCreator role to sink service account..."
223
+ gsutil iam ch "${SINK_SA}:objectCreator" "gs://$BUCKET_NAME"
224
+ log_success "IAM binding created"
225
+
226
+ # Step 5: Enable Data Access Audit Logs
227
+ log_info "Step 5: Data Access Audit Logs configuration..."
228
+ echo ""
229
+ log_warning "MANUAL STEP REQUIRED:"
230
+ log_warning "Enable Data Access audit logs in Cloud Console for:"
231
+ log_warning " 1. Cloud Run API:"
232
+ log_warning " IAM & Admin > Audit Logs > Cloud Run API"
233
+ log_warning " ✓ Enable 'Data Read'"
234
+ log_warning " ✓ Enable 'Data Write'"
235
+ log_warning ""
236
+ log_warning " 2. Secret Manager API:"
237
+ log_warning " IAM & Admin > Audit Logs > Secret Manager API"
238
+ log_warning " ✓ Enable 'Data Read'"
239
+ log_warning ""
240
+ log_warning "Or use gcloud to update the IAM policy:"
241
+ log_warning " gcloud projects get-iam-policy $PROJECT_ID > policy.yaml"
242
+ log_warning " # Edit policy.yaml to add auditConfigs"
243
+ log_warning " gcloud projects set-iam-policy $PROJECT_ID policy.yaml"
244
+ echo ""
245
+
246
+ # Step 6: Verify setup
247
+ log_info "Step 6: Verifying setup..."
248
+ echo ""
249
+ log_info "=== Sink Configuration ==="
250
+ gcloud logging sinks describe "$SINK_NAME" --project="$PROJECT_ID"
251
+ echo ""
252
+ log_info "=== Bucket Configuration ==="
253
+ gsutil ls -L -b "gs://$BUCKET_NAME"
254
+ echo ""
255
+
256
+ log_success "✅ Audit logging infrastructure setup complete!"
257
+ echo ""
258
+ log_info "Summary:"
259
+ log_info " • Bucket: gs://$BUCKET_NAME"
260
+ log_info " • Retention: $RETENTION_DAYS days"
261
+ log_info " • Sink: $SINK_NAME"
262
+ log_info " • Service: $SERVICE_NAME"
263
+ log_info " • Locked: $LOCK_BUCKET"
264
+ echo ""
265
+ log_info "Next steps:"
266
+ log_info " 1. Enable Data Access audit logs (see manual step above)"
267
+ log_info " 2. Deploy your Cloud Run service with audit logging enabled"
268
+ log_info " 3. Verify logs are being exported: gsutil ls gs://$BUCKET_NAME"
269
+ echo ""
270
+
@@ -17,8 +17,6 @@ steps:
17
17
  args:
18
18
  - 'build'
19
19
  - '-t'
20
- - '${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/devrev-mcp-server:$COMMIT_SHA'
21
- - '-t'
22
20
  - '${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/devrev-mcp-server:latest'
23
21
  - '-t'
24
22
  - '${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/devrev-mcp-server:${_TAG_NAME}'
@@ -45,18 +43,18 @@ steps:
45
43
  - 'run'
46
44
  - 'deploy'
47
45
  - '${_SERVICE_NAME}'
48
- - '--image=${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/devrev-mcp-server:$COMMIT_SHA'
46
+ - '--image=${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/devrev-mcp-server:${_TAG_NAME}'
49
47
  - '--region=${_REGION}'
50
48
  - '--platform=managed'
51
49
  - '--allow-unauthenticated'
52
50
  - '--port=8080'
53
51
  - '--memory=${_MEMORY}'
54
52
  - '--cpu=${_CPU}'
55
- - '--min-instances=0'
53
+ - '--min-instances=1'
56
54
  - '--max-instances=10'
57
55
  - '--timeout=300s'
58
56
  - '--concurrency=80'
59
- - '--set-env-vars=MCP_TRANSPORT=streamable-http,MCP_HOST=0.0.0.0,MCP_PORT=8080,MCP_LOG_FORMAT=json,MCP_LOG_LEVEL=INFO,MCP_AUTH_MODE=devrev-pat,MCP_AUTH_ALLOWED_DOMAINS=["augmentcode.com"]'
57
+ - '--set-env-vars=MCP_TRANSPORT=streamable-http,MCP_HOST=0.0.0.0,MCP_PORT=8080,MCP_LOG_FORMAT=json,MCP_LOG_LEVEL=INFO,MCP_AUTH_MODE=devrev-pat,MCP_AUTH_ALLOWED_DOMAINS=["augmentcode.com"],MCP_ENABLE_DNS_REBINDING_PROTECTION=true,MCP_ALLOWED_HOSTS=["devrev-mcp-server-ucpy26yrfa-uc.a.run.app"]'
60
58
  # Uncomment the next line if you need DEVREV_API_TOKEN for stdio/testing fallback
61
59
  # - '--set-secrets=DEVREV_API_TOKEN=devrev-api-token:latest'
62
60
  waitFor: ['push']
@@ -66,7 +64,6 @@ substitutions:
66
64
  _REGION: 'us-central1'
67
65
  _SERVICE_NAME: 'devrev-mcp-server'
68
66
  _REPO: 'devrev-mcp'
69
- _IMAGE: 'devrev-mcp-server'
70
67
  _CPU: '1'
71
68
  _MEMORY: '512Mi'
72
69
  _TAG_NAME: 'latest'
@@ -81,7 +78,6 @@ timeout: '1200s'
81
78
 
82
79
  # Images to be pushed to Artifact Registry
83
80
  images:
84
- - '${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/devrev-mcp-server:$COMMIT_SHA'
85
81
  - '${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/devrev-mcp-server:latest'
86
82
  - '${_REGION}-docker.pkg.dev/$PROJECT_ID/${_REPO}/devrev-mcp-server:${_TAG_NAME}'
87
83