# Zetesis Scientific Due Diligence

> Due diligence on life-science claims: omics, trials, gene therapy. Dimension by dimension.

- name: io.github.reutavidan/zetesis
- version: 0.2.2
- connection class: R0 (autonomous)
- trust: 97/100
- quality: 82/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.reutavidan%2Fzetesis
- tools: https://api.protogrid.dev/v1/servers/io.github.reutavidan%2Fzetesis/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "zetesis": {
      "type": "http",
      "url": "https://api.zetesis.science/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-3d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 82/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 79 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 3 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 4 of 4 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: zetesis_scope (idempotentHint); verify_attestation (idempotentHint); zetesis_evidence (idempotentHint); …
- pass `tools.token_cost`: about 1,990 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: deps.dev does not know zetesis@0.2.0

- tools: 4, about 1,990 tokens to load them all
- tool set hash: 357a7b7a0e8c8310b759340887e56872
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.reutavidan/zetesis.svg)](https://protogrid.dev/servers/io.github.reutavidan/zetesis)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Dependencies

- pypi zetesis@0.2.0: unknown

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://api.zetesis.science/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- pypi zetesis@0.2.0 secrets: ZETESIS_TOKEN

## Tools (4)

- `evaluate_claim`: Run Zetesis's graded reading of a scientific, biomedical, clinical, or AI/ML claim.

    Grades each evidence dimension and returns an overall reading, with every source
    cited by hard public id (PMID, DOI, NCT, NIH grant, SEC filing). Covers drug,
    omics, target-validation, diagnostic, and AI-model claims.

    Runs the hosted engine end to end and typically takes a couple of minutes, long
    enough that some clients background or time out the call. The output is Zetesis's
    own reading as a finished artifact. zetesis_scope and zetesis_evidence return the
    same dated sources and the same grading rubric immediately and without running a
    model, at full source depth rather than abstract level.

    A signed, independently re-checkable dossier is available by request at the
    Zetesis site.

    Args:
        claim: the claim to evaluate, in one or two sentences.
        context: optional background (stage, field, the decision at hand).
        documents: optional source text (a deck, abstract, or paper).
        as_of: year the claim was made. Set it for any claim that is not brand new.
            It restricts evidence to what existed then, which both keeps later
            outcomes out of the reading and sharply improves what is retrieved: left
            open, a pivotal trial report competes with every paper published since
            and gets buried.
- `verify_attestation`: Verify a Zetesis attestation, confirming an evaluation's claim, evidence, and
    conclusion have not been altered since it was signed. Use when someone has a
    Zetesis dossier or attestation and wants to independently re-check it.

    Args:
        attestation_json: the full attestation object as JSON text.
- `zetesis_evidence`: Step 2 of a Zetesis evaluation. Runs the search queries against public evidence
    sources (Europe PMC, ClinicalTrials.gov, openFDA, and optionally NIH RePORTER and SEC
    EDGAR) and returns a deduplicated bundle where every source carries a hard public id,
    followed by the Zetesis grading rubric so you can grade the dimensions yourself.

    With as_of set, retrieval is fenced to sources published, registered, or filed on or
    before 31 December of that year, and two fields that leak later outcomes are
    suppressed: a trial's present-day status, and FDA labels effective after the cutoff.
    That makes it possible to judge a claim on what was actually knowable at the time.

    Runs no model, costs nothing, and returns immediately. Takes the queries worked
    out when the claim was scoped.

    Args:
        queries: 3 to 6 short keyword phrases. Query 1 should be the bare name of the
            thing claimed about (a drug, compound code, model, or gene); query 2 that
            name plus at most two outcome words. Longer phrases retrieve commentary
            rather than the primary report.
            If the claim names no agent at all (a behaviour, diet, procedure, exposure
            or policy), anchor on the field's own technical term instead of the lay one
            ("time restricted eating", not "intermittent fasting"), pair it with the
            outcome as the field measures it, and allow one design word such as
            crossover or randomized in one later query. Without an entity name that
            design word is the only thing separating a trial report from a review of
            trial reports.
        as_of: optional cutoff year, as used in zetesis_scope.
        include_capital: also retrieve funding and public-filing signal.
- `zetesis_scope`: Scope a scientific, biomedical, clinical, or AI/ML claim for evaluation.

    Returns three things: the source catalog, meaning where the evidence for this
    claim class lives; the diligence apparatus for that class, meaning the questions
    a domain reviewer asks and the failure patterns that have caught comparable
    claims before; and the scoping rubric used to work out which evidence dimensions
    bear on this particular claim and what to search for.

    Applies to a research claim, a study, a paper, an abstract, a preprint, a grant or
    a pitch, and to checking a paper or statistic before relying on it.

    Runs no model, costs nothing, and returns immediately. The queries worked out from
    its output are what zetesis_evidence takes as input. With as_of set, the apparatus
    and rubric are framed for judging the claim as it stood at the end of that year.

    Args:
        claim: the claim to evaluate, in one or two sentences.
        context: optional background (stage, field, the decision at hand).
        as_of: optional year. Set it to evaluate the claim as it stood at the end of that
            year, grading how it was derived at the time rather than how it turned out.
        claim_class: optional override for the routed claim class. The response lists
            every class; pass one back if the routing picked wrongly, or if nothing
            routed.
