synth-ai 0.20.0.dev634__tar.gz → 0.20.0.dev635__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 (303) hide show
  1. {synth_ai-0.20.0.dev634/synth_ai.egg-info → synth_ai-0.20.0.dev635}/PKG-INFO +33 -5
  2. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/README.md +31 -3
  3. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/pyproject.toml +2 -2
  4. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635/synth_ai.egg-info}/PKG-INFO +33 -5
  5. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/LICENSE +0 -0
  6. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/MANIFEST.in +0 -0
  7. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/openapi/index-v1.json +0 -0
  8. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/openapi/messaging-v1.json +0 -0
  9. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/openapi/research-v1.json +0 -0
  10. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/setup.cfg +0 -0
  11. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/setup.py +0 -0
  12. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/README.md +0 -0
  13. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/__init__.py +0 -0
  14. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/__main__.py +0 -0
  15. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/cli/AGENTS.md +0 -0
  16. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/cli/README.md +0 -0
  17. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/cli/__init__.py +0 -0
  18. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/cli/__main__.py +0 -0
  19. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/cli/index.py +0 -0
  20. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/cli/main.py +0 -0
  21. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/cli/research.py +0 -0
  22. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/cli/research_environments.py +0 -0
  23. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/cli/research_image_releases.py +0 -0
  24. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/cli/research_projects.py +0 -0
  25. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/client.py +0 -0
  26. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/README.md +0 -0
  27. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/__init__.py +0 -0
  28. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/auth/__init__.py +0 -0
  29. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/auth/credentials.py +0 -0
  30. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/contracts/__init__.py +0 -0
  31. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/contracts/json_value.py +0 -0
  32. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/contracts/pagination.py +0 -0
  33. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/errors.py +0 -0
  34. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/http/__init__.py +0 -0
  35. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/http/async_transport.py +0 -0
  36. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/http/request.py +0 -0
  37. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/http/retry.py +0 -0
  38. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/http/streaming.py +0 -0
  39. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/http/transport.py +0 -0
  40. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/research/__init__.py +0 -0
  41. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/utils/__init__.py +0 -0
  42. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/utils/env.py +0 -0
  43. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/utils/log_filter.py +0 -0
  44. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/utils/paths.py +0 -0
  45. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/core/utils/urls.py +0 -0
  46. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/README.md +0 -0
  47. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/__init__.py +0 -0
  48. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/__main__.py +0 -0
  49. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/objective_tools.py +0 -0
  50. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/registry.py +0 -0
  51. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/request_models.py +0 -0
  52. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/server.py +0 -0
  53. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/__init__.py +0 -0
  54. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/approvals.py +0 -0
  55. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/artifacts.py +0 -0
  56. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/datasets.py +0 -0
  57. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/environments.py +0 -0
  58. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/exports.py +0 -0
  59. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/factories.py +0 -0
  60. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/factory_results.py +0 -0
  61. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/files.py +0 -0
  62. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/image_releases.py +0 -0
  63. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/index.py +0 -0
  64. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/integrations.py +0 -0
  65. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/intern_program.py +0 -0
  66. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/local_files.py +0 -0
  67. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/logs.py +0 -0
  68. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/models.py +0 -0
  69. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/outputs.py +0 -0
  70. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/policy_schemas.py +0 -0
  71. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/progress.py +0 -0
  72. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/project_data.py +0 -0
  73. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/projects.py +0 -0
  74. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/prs.py +0 -0
  75. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/readiness.py +0 -0
  76. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/repos.py +0 -0
  77. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/research_intern.py +0 -0
  78. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/resources.py +0 -0
  79. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/runs.py +0 -0
  80. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/trained_models.py +0 -0
  81. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/usage.py +0 -0
  82. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/visuals.py +0 -0
  83. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/mcp/research/tools/workspace_inputs.py +0 -0
  84. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/pools.py +0 -0
  85. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/py.typed +0 -0
  86. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/README.md +0 -0
  87. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/__init__.py +0 -0
  88. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/AGENT_SETUP_PROMPT.md +0 -0
  89. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/README.md +0 -0
  90. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/__init__.py +0 -0
  91. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/agent_policy.py +0 -0
  92. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/answer.py +0 -0
  93. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/artifacts.py +0 -0
  94. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/catalog.py +0 -0
  95. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/client.py +0 -0
  96. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/contracts.py +0 -0
  97. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/contributions.py +0 -0
  98. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/errors.py +0 -0
  99. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/lifecycle.py +0 -0
  100. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/package.py +0 -0
  101. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/public.py +0 -0
  102. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/research_intake.py +0 -0
  103. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/search.py +0 -0
  104. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/submission.py +0 -0
  105. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/timeouts.py +0 -0
  106. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/transfer.py +0 -0
  107. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/index/usage_accounting.py +0 -0
  108. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/messaging/README.md +0 -0
  109. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/messaging/__init__.py +0 -0
  110. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/messaging/client.py +0 -0
  111. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/messaging/contracts.py +0 -0
  112. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/optimizers/__init__.py +0 -0
  113. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/optimizers/client.py +0 -0
  114. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/optimizers/contracts.py +0 -0
  115. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/pagination.py +0 -0
  116. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/__init__.py +0 -0
  117. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/_internal/__init__.py +0 -0
  118. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/_internal/crypto.py +0 -0
  119. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/_internal/env.py +0 -0
  120. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/_internal/urls.py +0 -0
  121. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/account.py +0 -0
  122. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/advanced.py +0 -0
  123. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/advanced_factories.py +0 -0
  124. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/advanced_swarms.py +0 -0
  125. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/artifacts.py +0 -0
  126. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/auth.py +0 -0
  127. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/client.py +0 -0
  128. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/container_pools/__init__.py +0 -0
  129. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/container_pools/api.py +0 -0
  130. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/container_pools/contracts.py +0 -0
  131. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/container_pools/operations.py +0 -0
  132. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/container_pools/packaging.py +0 -0
  133. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/__init__.py +0 -0
  134. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/_activity_wire.py +0 -0
  135. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/_environment_wire.py +0 -0
  136. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/_transcript_wire.py +0 -0
  137. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/_wire.py +0 -0
  138. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/activity.py +0 -0
  139. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/activity_items.py +0 -0
  140. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/actor_images.py +0 -0
  141. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/billing.py +0 -0
  142. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/canonical_usage.py +0 -0
  143. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/checkpoints.py +0 -0
  144. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/cloud_deployment_claims.py +0 -0
  145. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/cloud_deployments.py +0 -0
  146. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/common.py +0 -0
  147. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/dataset_revisions.py +0 -0
  148. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/deliveries.py +0 -0
  149. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/dev_environment_evidence.py +0 -0
  150. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/economics.py +0 -0
  151. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/environment_manifest.py +0 -0
  152. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/environments.py +0 -0
  153. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/evidence.py +0 -0
  154. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/factories.py +0 -0
  155. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/factory_evidence.py +0 -0
  156. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/factory_lenses.py +0 -0
  157. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/factory_operations.py +0 -0
  158. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/factory_role_receipts.py +0 -0
  159. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/failure.py +0 -0
  160. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/image_releases.py +0 -0
  161. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/intern_blockers.py +0 -0
  162. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/intern_grants.py +0 -0
  163. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/intern_program.py +0 -0
  164. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/intern_resources.py +0 -0
  165. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/intern_usage.py +0 -0
  166. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/limit_evidence.py +0 -0
  167. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/local_execution_profile.py +0 -0
  168. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/operator_evidence.py +0 -0
  169. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/project.py +0 -0
  170. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/project_data.py +0 -0
  171. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/project_runtime.py +0 -0
  172. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/project_workspace.py +0 -0
  173. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/project_workspace_evidence.py +0 -0
  174. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/projects.py +0 -0
  175. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/promotions.py +0 -0
  176. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/research_intern.py +0 -0
  177. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/resource_settlement.py +0 -0
  178. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/run_authority.py +0 -0
  179. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/run_control.py +0 -0
  180. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/run_diagnostics.py +0 -0
  181. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/run_events.py +0 -0
  182. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/run_execution.py +0 -0
  183. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/run_launch.py +0 -0
  184. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/run_observability.py +0 -0
  185. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/run_state.py +0 -0
  186. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/run_timeline.py +0 -0
  187. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/runtime_image.py +0 -0
  188. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/runtime_intent.py +0 -0
  189. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/runtime_stream.py +0 -0
  190. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/runtime_stream_snapshot.py +0 -0
  191. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/scientific_integrity.py +0 -0
  192. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_actor_models.py +0 -0
  193. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_actor_policy_data.py +0 -0
  194. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_agent_harnesses.py +0 -0
  195. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_agent_kinds.py +0 -0
  196. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_agent_models.py +0 -0
  197. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_branching.py +0 -0
  198. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_credential_providers.py +0 -0
  199. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_environment_kinds.py +0 -0
  200. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_evidence_obligations.py +0 -0
  201. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_funding_sources.py +0 -0
  202. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_horizons.py +0 -0
  203. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_host_kinds.py +0 -0
  204. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_inference_providers.py +0 -0
  205. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_network_topology.py +0 -0
  206. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_providers.py +0 -0
  207. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_resource_kinds.py +0 -0
  208. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_roles.py +0 -0
  209. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_run_policy.py +0 -0
  210. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_runbooks.py +0 -0
  211. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_runnable_project.py +0 -0
  212. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_runtime_kinds.py +0 -0
  213. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_tool_providers.py +0 -0
  214. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/smr_work_modes.py +0 -0
  215. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/status.py +0 -0
  216. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/swarm_rollouts.py +0 -0
  217. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/swarms.py +0 -0
  218. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/tag.py +0 -0
  219. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/traces.py +0 -0
  220. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/transcript.py +0 -0
  221. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/types.py +0 -0
  222. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/usage.py +0 -0
  223. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/visuals.py +0 -0
  224. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/wire_models.py +0 -0
  225. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/wire_models_README.md +0 -0
  226. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/work_products.py +0 -0
  227. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/contracts/workspaces.py +0 -0
  228. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/economics.py +0 -0
  229. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/efforts.py +0 -0
  230. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/environments.py +0 -0
  231. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/errors.py +0 -0
  232. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/events.py +0 -0
  233. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/experiments.py +0 -0
  234. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/facade.py +0 -0
  235. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/factories.py +0 -0
  236. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/factory_storage.py +0 -0
  237. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/image_releases.py +0 -0
  238. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/intern_blockers.py +0 -0
  239. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/intern_program.py +0 -0
  240. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/knowledge.py +0 -0
  241. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/models.py +0 -0
  242. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/operations.py +0 -0
  243. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/project_data.py +0 -0
  244. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/project_deliveries.py +0 -0
  245. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/project_workspaces.py +0 -0
  246. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/projects.py +0 -0
  247. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/public.py +0 -0
  248. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/readouts.py +0 -0
  249. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/research_intern.py +0 -0
  250. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/secrets.py +0 -0
  251. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/README.md +0 -0
  252. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/__init__.py +0 -0
  253. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/_base.py +0 -0
  254. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/_client_helpers.py +0 -0
  255. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/_run_authority_mixin.py +0 -0
  256. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/approvals.py +0 -0
  257. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/billing.py +0 -0
  258. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/client.py +0 -0
  259. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/cloud_deployments.py +0 -0
  260. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/config.py +0 -0
  261. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/cost.py +0 -0
  262. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/datasets.py +0 -0
  263. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/dev_environments.py +0 -0
  264. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/environments.py +0 -0
  265. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/exports.py +0 -0
  266. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/factories.py +0 -0
  267. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/factory_evidence.py +0 -0
  268. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/files.py +0 -0
  269. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/github.py +0 -0
  270. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/image_releases.py +0 -0
  271. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/images.py +0 -0
  272. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/logs.py +0 -0
  273. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/models.py +0 -0
  274. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/outputs.py +0 -0
  275. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/progress.py +0 -0
  276. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/project.py +0 -0
  277. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/projects.py +0 -0
  278. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/prs.py +0 -0
  279. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/readiness.py +0 -0
  280. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/repositories.py +0 -0
  281. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/runs.py +0 -0
  282. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/secrets.py +0 -0
  283. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/setup.py +0 -0
  284. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/tag.py +0 -0
  285. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/trained_models.py +0 -0
  286. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/transport.py +0 -0
  287. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/usage.py +0 -0
  288. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/work_products.py +0 -0
  289. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/session/workspace_inputs.py +0 -0
  290. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/surface_parity.py +0 -0
  291. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/swarms.py +0 -0
  292. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/traces.py +0 -0
  293. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/transport/__init__.py +0 -0
  294. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/transport/http.py +0 -0
  295. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/transport/pagination.py +0 -0
  296. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/version.py +0 -0
  297. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/visuals.py +0 -0
  298. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai/sdk/research/wiki.py +0 -0
  299. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai.egg-info/SOURCES.txt +0 -0
  300. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai.egg-info/dependency_links.txt +0 -0
  301. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai.egg-info/entry_points.txt +0 -0
  302. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai.egg-info/requires.txt +0 -0
  303. {synth_ai-0.20.0.dev634 → synth_ai-0.20.0.dev635}/synth_ai.egg-info/top_level.txt +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synth-ai
3
- Version: 0.20.0.dev634
4
- Summary: Python SDK and CLI for Synth Managed Research and Research Factory
3
+ Version: 0.20.0.dev635
4
+ Summary: Python SDK and CLI for Synth Index, Managed Research, and Research Factory
5
5
  Author-email: Synth AI <josh@usesynth.ai>
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://github.com/synth-laboratories/synth-ai
@@ -208,11 +208,39 @@ Use `SynthClient` as the front door:
208
208
 
209
209
  | Surface | Client namespace | Use it for |
210
210
  | --- | --- | --- |
211
+ | **Index** | `client.index` | Authenticated, funded FAST/DEEP Search and Contribution lifecycle. |
211
212
  | **Research / Factory** | `client.research` | Typed hosted projects, swarms, Factory lifecycles, and Efforts. |
212
- | CLI | `synth-ai` | Terminal access to Research commands. |
213
+ | CLI / MCP | `synth-ai`, `synth-ai-index-mcp` | Terminal commands and an Index-only coding-agent server. |
213
214
 
214
- There are no infrastructure client namespaces (containers, tunnels, pools) on
215
- `SynthClient`; the package is Research-only as of 0.18.0.
215
+ Index is an API/MCP product, not a browser search page. Anonymous public
216
+ catalog and known-ID Contribution reads use `PublicIndexClient`; even a
217
+ public-scope Search requires an API key, an authorized organization, and
218
+ funding. An Index-only MCP server starts read-only, advertising public browse
219
+ without a key and Search only when a key is configured. Contribution writes
220
+ require a separate explicit opt-in and grant.
221
+
222
+ ```python
223
+ from uuid import uuid4
224
+
225
+ from synth_ai import SynthClient
226
+ from synth_ai.sdk.index import SearchBillingConstraints
227
+
228
+ request_key = str(uuid4()) # Persist this before sending; reuse it on uncertain retry.
229
+ with SynthClient() as synth: # Reads SYNTH_API_KEY.
230
+ result = synth.index.search(
231
+ query="What evidence supports the retrieval design?",
232
+ mode="fast",
233
+ billing=SearchBillingConstraints(allow_wallet=True, max_charge_cents=5),
234
+ idempotency_key=request_key,
235
+ )
236
+ print(result.response, result.usage)
237
+ ```
238
+
239
+ FAST's five-cent ceiling is explicit wallet consent, not a claim that DEEP has
240
+ the same price. See the [Index SDK guide](synth_ai/sdk/index/README.md) for
241
+ DEEP's durable Search ID, reconnect/cancel, private collections, receipts, and
242
+ coding-agent MCP setup. These calls require a deployed Index API; installing
243
+ the SDK alone does not make a Search available.
216
244
 
217
245
  Use [Managed Research](https://docs.usesynth.ai/managed-research/intro) when you
218
246
  want hosted research workers, repo runs, evidence, checkpoints, MCP, or final
@@ -179,11 +179,39 @@ Use `SynthClient` as the front door:
179
179
 
180
180
  | Surface | Client namespace | Use it for |
181
181
  | --- | --- | --- |
182
+ | **Index** | `client.index` | Authenticated, funded FAST/DEEP Search and Contribution lifecycle. |
182
183
  | **Research / Factory** | `client.research` | Typed hosted projects, swarms, Factory lifecycles, and Efforts. |
183
- | CLI | `synth-ai` | Terminal access to Research commands. |
184
+ | CLI / MCP | `synth-ai`, `synth-ai-index-mcp` | Terminal commands and an Index-only coding-agent server. |
184
185
 
185
- There are no infrastructure client namespaces (containers, tunnels, pools) on
186
- `SynthClient`; the package is Research-only as of 0.18.0.
186
+ Index is an API/MCP product, not a browser search page. Anonymous public
187
+ catalog and known-ID Contribution reads use `PublicIndexClient`; even a
188
+ public-scope Search requires an API key, an authorized organization, and
189
+ funding. An Index-only MCP server starts read-only, advertising public browse
190
+ without a key and Search only when a key is configured. Contribution writes
191
+ require a separate explicit opt-in and grant.
192
+
193
+ ```python
194
+ from uuid import uuid4
195
+
196
+ from synth_ai import SynthClient
197
+ from synth_ai.sdk.index import SearchBillingConstraints
198
+
199
+ request_key = str(uuid4()) # Persist this before sending; reuse it on uncertain retry.
200
+ with SynthClient() as synth: # Reads SYNTH_API_KEY.
201
+ result = synth.index.search(
202
+ query="What evidence supports the retrieval design?",
203
+ mode="fast",
204
+ billing=SearchBillingConstraints(allow_wallet=True, max_charge_cents=5),
205
+ idempotency_key=request_key,
206
+ )
207
+ print(result.response, result.usage)
208
+ ```
209
+
210
+ FAST's five-cent ceiling is explicit wallet consent, not a claim that DEEP has
211
+ the same price. See the [Index SDK guide](synth_ai/sdk/index/README.md) for
212
+ DEEP's durable Search ID, reconnect/cancel, private collections, receipts, and
213
+ coding-agent MCP setup. These calls require a deployed Index API; installing
214
+ the SDK alone does not make a Search available.
187
215
 
188
216
  Use [Managed Research](https://docs.usesynth.ai/managed-research/intro) when you
189
217
  want hosted research workers, repo runs, evidence, checkpoints, MCP, or final
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "synth-ai"
3
- version = "0.20.0.dev634"
4
- description = "Python SDK and CLI for Synth Managed Research and Research Factory"
3
+ version = "0.20.0.dev635"
4
+ description = "Python SDK and CLI for Synth Index, Managed Research, and Research Factory"
5
5
  authors = [{name = "Synth AI", email = "josh@usesynth.ai"}]
6
6
  license = "MIT"
7
7
  license-files = ["LICENSE"]
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: synth-ai
3
- Version: 0.20.0.dev634
4
- Summary: Python SDK and CLI for Synth Managed Research and Research Factory
3
+ Version: 0.20.0.dev635
4
+ Summary: Python SDK and CLI for Synth Index, Managed Research, and Research Factory
5
5
  Author-email: Synth AI <josh@usesynth.ai>
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://github.com/synth-laboratories/synth-ai
@@ -208,11 +208,39 @@ Use `SynthClient` as the front door:
208
208
 
209
209
  | Surface | Client namespace | Use it for |
210
210
  | --- | --- | --- |
211
+ | **Index** | `client.index` | Authenticated, funded FAST/DEEP Search and Contribution lifecycle. |
211
212
  | **Research / Factory** | `client.research` | Typed hosted projects, swarms, Factory lifecycles, and Efforts. |
212
- | CLI | `synth-ai` | Terminal access to Research commands. |
213
+ | CLI / MCP | `synth-ai`, `synth-ai-index-mcp` | Terminal commands and an Index-only coding-agent server. |
213
214
 
214
- There are no infrastructure client namespaces (containers, tunnels, pools) on
215
- `SynthClient`; the package is Research-only as of 0.18.0.
215
+ Index is an API/MCP product, not a browser search page. Anonymous public
216
+ catalog and known-ID Contribution reads use `PublicIndexClient`; even a
217
+ public-scope Search requires an API key, an authorized organization, and
218
+ funding. An Index-only MCP server starts read-only, advertising public browse
219
+ without a key and Search only when a key is configured. Contribution writes
220
+ require a separate explicit opt-in and grant.
221
+
222
+ ```python
223
+ from uuid import uuid4
224
+
225
+ from synth_ai import SynthClient
226
+ from synth_ai.sdk.index import SearchBillingConstraints
227
+
228
+ request_key = str(uuid4()) # Persist this before sending; reuse it on uncertain retry.
229
+ with SynthClient() as synth: # Reads SYNTH_API_KEY.
230
+ result = synth.index.search(
231
+ query="What evidence supports the retrieval design?",
232
+ mode="fast",
233
+ billing=SearchBillingConstraints(allow_wallet=True, max_charge_cents=5),
234
+ idempotency_key=request_key,
235
+ )
236
+ print(result.response, result.usage)
237
+ ```
238
+
239
+ FAST's five-cent ceiling is explicit wallet consent, not a claim that DEEP has
240
+ the same price. See the [Index SDK guide](synth_ai/sdk/index/README.md) for
241
+ DEEP's durable Search ID, reconnect/cancel, private collections, receipts, and
242
+ coding-agent MCP setup. These calls require a deployed Index API; installing
243
+ the SDK alone does not make a Search available.
216
244
 
217
245
  Use [Managed Research](https://docs.usesynth.ai/managed-research/intro) when you
218
246
  want hosted research workers, repo runs, evidence, checkpoints, MCP, or final