> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequency.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Strategy research v1

# Strategy Research API v1

The committed contract is `strategy-research-v1.openapi.json`. It contains
exactly six owner-scoped asynchronous research operations. The broad internal
`openapi.json` is not an agent or SDK contract.

## Interfaces

* REST base: `https://worker.sequency.sh`
* Python package: `sdk/python` (`sequency-research-sdk==1.0.0`)
* Streamable HTTP MCP: `https://worker.sequency.sh/mcp/research/`

REST and MCP require a valid Supabase user bearer token. State-changing HTTP
requests also require `X-Requested-With`. The operator-first MCP surface is
bearer-only and deliberately rejects service-secret authentication; public
OAuth/PAT issuance remains outside AA-1.

MCP clients must send:

```text theme={null}
Authorization: Bearer <user token>
X-Requested-With: sequency-research-mcp
```

The MCP catalog contains only discovery, validation, compilation, approved
research submission, run status, and bounded evidence. Submission is annotated
with `sequency/approval=required`. Annotations are discoverability metadata, not
an enforcement boundary: every client configuration must require approval for
`sequency_submit_research`. The other five tools are read-only or pure.

Requests are limited to 1 MiB, REST/MCP results to 256 KiB, waits to 300 seconds,
and poll intervals to 30 seconds. Evidence returns portfolio/benchmark summaries
and opaque primary-record hashes without raw bars, full ledgers, or per-session
point series.

Generate the committed profile after route changes:

```bash theme={null}
PYTHONPATH=.:api api/venv/bin/python scripts/generate_strategy_research_openapi.py --write
```

Verify drift without writing:

```bash theme={null}
PYTHONPATH=.:api api/venv/bin/python scripts/generate_strategy_research_openapi.py
```

The frozen production campaign is submitted once through the authenticated
product path. SDK and MCP production acceptance may only adopt and read that same
run identity; they must never submit a second outcome-bearing campaign.
