Hanzo
Cloud MCPresearch

post_v1_research_experiments

IngestExperiments appends one batch of experiment and attempt versions to the caller org's evidence store, idempotently by content, then rolls it up to the analytics plane best-effort.

IngestExperiments appends one batch of experiment and attempt versions to the caller org's evidence store, idempotently by content, then rolls it up to the analytics plane best-effort. The project is the SERVER's value and visibility is forced private — an upload grants no training or publication right, which is a separate call. A run carrying a BYO endpoint is SSRF-checked before the store is touched. The answer carries BOTH the canonical (deduped) and retained (full history) counts, so a caller sees the versioned truth rather than a dedup that reads as loss.

Toolpost_v1_research_experiments
Doorhttps://api.hanzo.ai/v1/mcp
Methodtools/call (JSON-RPC 2.0)
Arguments2
OperationPOST /v1/research/experiments
Productresearch

Arguments

FieldTypeRequiredDefaultDescription
attemptsAttempt[]
experimentsExperiment[]

This tool's schema does not declare which fields are required, nor any default, nor any enumerated value set. The columns above are empty because the door publishes nothing there, not because the answer is "none" — where a field is constrained, the constraint is stated in that field's own description.

Object types

Attempt, Experiment are objects this tool's fields refer to. Each is declared inside the tool's own schema.

Attempt

FieldTypeRequiredDefaultDescription
answerstring
benchmarkstring
correctboolean
goldstring
itemstring
modelstring
responsestring
revisionstring
sourcestring
statusstring
tsinteger

Experiment

FieldTypeRequiredDefaultDescription
canonicalboolean
cost_usdnumber
endpointstring
git_branchstring
git_dirtyboolean
git_shastring
idstring
kindstring
lib_versionsany
metaany
metricstring
ninteger
n_totalinteger
projectstring
publishableboolean
revisionstringoriginal | corrected | retracted
statusstringplanning | running | complete | faulted
subjectstring
taskstring
trainableboolean
tsinteger
valuenumber
visibilitystring

Call it

A tools/call carries every argument in one flat object — nothing binds to a path or a query string. Every declared argument is shown, because the door marks none of them required.

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "post_v1_research_experiments",
         "arguments": {
           "attempts": [
             {}
           ],
           "experiments": [
             {}
           ]
         }
       }
     }'

Values are placeholders derived from each field's declared type. tools/list needs no credential; tools/call does — called without one the door answers HTTP 200 with a JSON-RPC result whose isError is set and whose text says what was missing. How to get a key →

The operation behind it

OperationRouteProductSummary
cloud_post_v1_research_experimentsPOST /v1/research/experimentsresearchIngestExperiments appends one batch of experiment and attempt versions to the caller org's

The same capability over plain HTTP is in the research API reference, on https://api.hanzo.ai.


All 834 tools · The door · API reference

Generated from tools/list on https://api.hanzo.ai/v1/mcp — 834 tools captured 2026-08-01 (this build read the vendored copy; the door was unreachable).

How is this guide?

On this page