Skip to main content

SDK, MCP, and schemas for authenticated Managed Research.

Project description

Managed Research

Hosted AI workers for durable repo and research runs.

Documentation: https://docs.usesynth.ai/managed-research/intro

Use Managed Research when you want a repeatable run instead of an untraceable chat transcript: attach repositories and context, launch work from Python or MCP, and read back logs, checkpoints, artifacts, PRs, usage, and final reports.

Engineering style

Contributors should follow Synth Style (engineering rules for contracts, errors, and structure). The canonical Markdown copy lives in the backend repository: specifications/tanha/references/synthstyle.md.

Surfaces

This package is for authenticated Managed Research integrations. The Python SDK and MCP server expose the backend catalog for project and run automation, including the runbook presets, work modes, model catalog, and usage state the authenticated org is entitled to use.

Surfaces and tiers

  • Open Research web: public lab surface with lite and open_ended_discovery.
  • Authenticated Free: lite, directed_effort, standard model access, and one-time Managed Research credits.
  • Authenticated Pro and Team: Free plus the paid GA model bundle and higher Managed Research usage pools.
  • Beta Access: an overlay on Free, Pro, or Team that adds open_ended_discovery, heavy, and all-model access.

Open Research on the public web is a narrower lab surface: it accepts lite runs with open_ended_discovery only. Treat those limits as web admission policy, not as SDK or MCP client-side rules. See the customer docs for the current product split: https://docs.usesynth.ai/managed-research/intro

Installation

uv add managed-research

Set an API key:

export SYNTH_API_KEY="sk_..."

Quickstart

import os

from managed_research import ManagedResearchClient, ProjectSelector

client = ManagedResearchClient(api_key=os.environ["SYNTH_API_KEY"])

run = client.runs.start(
    "Review the project context and propose the smallest high-impact improvement.",
    host_kind="daytona",
    work_mode="directed_effort",
    providers=[{"provider": "openrouter"}],
)

print("run:", run.run_id)

result = run.wait(timeout=60 * 60, poll_interval=15)
print("state:", result.state.value)
print("artifacts:", [artifact.title for artifact in run.artifacts()])

Main Ideas

  • Use ManagedResearchClient as the Python entrypoint.
  • Use client.runs.start(...) for runs that default to the caller's Miscellaneous project.
  • Pass project_id= or project=ProjectSelector.from_project_id(...) when a run belongs to a specific existing project.
  • Use client.projects.create(...) and client.project(project_id) for durable project-scoped work.
  • Run preflight before launch when you want structured launch blockers.
  • Inspect runs through messages, timelines, event logs, authority readouts, operator evidence, traces, checkpoints, artifacts, usage, questions, approvals, and actor/task counts.
  • Use MCP from Codex or Claude Code when you want an agent-native interface.

Resource limits

Managed Research exposes resource limits as first-class run and project state. Use resource_limits() to inspect configured caps and progress_toward_resource_limits() to inspect current usage, active blockers, and extension posture.

When a spend limit blocks work, call request_resource_limit_extension(...) from a run, project, or ManagedResearchClient. Extensions accept either a new absolute USD limit or an added USD amount, plus optional blocker resolution and resume behavior. MCP exposes the same flow through smr_get_run_resource_limits, smr_get_run_progress_toward_resource_limits, smr_get_project_resource_limits, smr_get_project_progress_toward_resource_limits, and smr_request_resource_limit_extension.

MCP

Hosted:

codex mcp add managed-research --url https://api.usesynth.ai/mcp
claude mcp add --transport http managed-research https://api.usesynth.ai/mcp

Local stdio:

uv tool install managed-research
managed-research-mcp

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

managed_research-1.2026.50601.tar.gz (325.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

managed_research-1.2026.50601-py3-none-any.whl (321.1 kB view details)

Uploaded Python 3

File details

Details for the file managed_research-1.2026.50601.tar.gz.

File metadata

  • Download URL: managed_research-1.2026.50601.tar.gz
  • Upload date:
  • Size: 325.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.4 {"installer":{"name":"uv","version":"0.11.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for managed_research-1.2026.50601.tar.gz
Algorithm Hash digest
SHA256 275305ac1dd3db8218ce3ffc46b4b42813f54598119510b2aed72c8f932fc906
MD5 666a87d380698a0818dd5876ee741a76
BLAKE2b-256 8760b61bb85d05824dcfec9aa90713c83b97c392c114a0c75870642f7bd580c6

See more details on using hashes here.

File details

Details for the file managed_research-1.2026.50601-py3-none-any.whl.

File metadata

  • Download URL: managed_research-1.2026.50601-py3-none-any.whl
  • Upload date:
  • Size: 321.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.4 {"installer":{"name":"uv","version":"0.11.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for managed_research-1.2026.50601-py3-none-any.whl
Algorithm Hash digest
SHA256 b6df0b92aa00975200352250b46e05fc9864086f2232b0271fea4965c79b73af
MD5 5a594e52082a002a2c089f311a8757ca
BLAKE2b-256 5742beb055a6922c847482e7552d6db5d0a8f45bbbfa47fec74cad7bbb4a5bf2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page