Source profileQuality 82/100

K-Dense-AI/scientific-agent-skills/skills/adaptyv/SKILL.md

adaptyv

How to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.

Source repository stars
31,966
Declared platforms
0
Static risk flags
1
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

Adaptyv Bio is a cloud lab that turns protein sequences into experimental data. Users submit amino acid sequences via API or UI; Adaptyv's automated lab runs assays (binding, thermostability, expression, fluorescence) and delivers results in 21 days.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/K-Dense-AI/scientific-agent-skills --skill "skills/adaptyv"
    Safe inspection promptEditorial

    Inspect the Agent Skill "adaptyv" from https://github.com/K-Dense-AI/scientific-agent-skills/blob/e7ac42510774624f327003c95b6650e2883bc01d/skills/adaptyv/SKILL.md at commit e7ac42510774624f327003c95b6650e2883bc01d. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Quick Start

      Base URL: https://foundry-api-public.adaptyvbio.com/api/v1

      Base URL: https://foundry-api-public.adaptyvbio.com/api/v1Authentication: Bearer token in the Authorization header. Tokens are obtained from foundry.adaptyvbio.com sidebar.When writing code, always read the API key from the environment variable ADAPTYVAPIKEY or from a .env file — never hardcode tokens. Check for a .env file in the project root first; if one exists, use a library like pyth…
    2. 02

      1. Submit a Binding Screen (Step by Step)

      Review the “1. Submit a Binding Screen (Step by Step)” section in the pinned source before continuing.

      Review and apply the “1. Submit a Binding Screen (Step by Step)” source section.
    3. 03

      4. Submit for review

      client.experiments.submit(exp.experimentid)

      client.experiments.submit(exp.experimentid)
    4. 04

      Python SDK

      Version note: adaptyv-sdk 0.1.0 (beta) is not yet on PyPI — install from GitHub:

      Version note: adaptyv-sdk 0.1.0 (beta) is not yet on PyPI — install from GitHub:In a project with pyproject.toml:Environment variables (set in shell or .env file):
    5. 05

      Decorator Pattern

      Review the “Decorator Pattern” section in the pinned source before continuing.

      Review and apply the “Decorator Pattern” source section.

    Permission review

    Static risk signals and limitations

    Network access

    medium · line 19

    The documentation includes network, browsing, or remote request actions.

    curl https://foundry-api-public.adaptyvbio.com/api/v1/targets?limit=3 \

    Network access

    medium · line 30

    The documentation includes network, browsing, or remote request actions.

    uv pip install "git+https://github.com/adaptyvbio/adaptyv-sdk.git"

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score82/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars31,966SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    K-Dense-AI/scientific-agent-skills
    Skill path
    skills/adaptyv/SKILL.md
    Commit
    e7ac42510774624f327003c95b6650e2883bc01d
    License
    MIT
    Collected
    2026-07-28
    Default branch
    main
    View the original SKILL.md

    Adaptyv Bio Foundry API

    Adaptyv Bio is a cloud lab that turns protein sequences into experimental data. Users submit amino acid sequences via API or UI; Adaptyv's automated lab runs assays (binding, thermostability, expression, fluorescence) and delivers results in ~21 days.

    Official docs: docs.adaptyvbio.com/api-reference · llms.txt index · OpenAPI spec

    Quick Start

    Base URL: https://foundry-api-public.adaptyvbio.com/api/v1

    Authentication: Bearer token in the Authorization header. Tokens are obtained from foundry.adaptyvbio.com sidebar.

    When writing code, always read the API key from the environment variable ADAPTYV_API_KEY or from a .env file — never hardcode tokens. Check for a .env file in the project root first; if one exists, use a library like python-dotenv to load it.

    The official API docs use FOUNDRY_API_TOKEN in curl examples; that is the same bearer token — prefer ADAPTYV_API_KEY in Python and new shell scripts for consistency with the SDK.

    export ADAPTYV_API_KEY="abs0_..."
    curl https://foundry-api-public.adaptyvbio.com/api/v1/targets?limit=3 \
      -H "Authorization: Bearer $ADAPTYV_API_KEY"
    

    Every request except GET /openapi.json requires authentication. Store tokens in environment variables or .env files — never commit them to source control.

    Python SDK

    Version note: adaptyv-sdk 0.1.0 (beta) is not yet on PyPI — install from GitHub:

    uv pip install "git+https://github.com/adaptyvbio/adaptyv-sdk.git"
    

    In a project with pyproject.toml:

    uv add "adaptyv-sdk @ git+https://github.com/adaptyvbio/adaptyv-sdk.git"
    

    Environment variables (set in shell or .env file):

    ADAPTYV_API_KEY=your_api_key
    ADAPTYV_API_URL=https://foundry-api-public.adaptyvbio.com/api/v1
    ADAPTYV_ORGANIZATION_ID=your_org_id  # optional
    

    The @lab.experiment decorator and FoundryClient both read ADAPTYV_API_KEY and ADAPTYV_API_URL from the environment when not passed explicitly.

    Decorator Pattern

    from adaptyv import lab
    
    @lab.experiment(target="PD-L1", experiment_type="screening", method="bli")
    def design_binders():
        return {"design_a": "MVKVGVNG...", "design_b": "MKVLVAG..."}
    
    result = design_binders()
    print(f"Experiment: {result.experiment_url}")
    

    Client Pattern

    import os
    from adaptyv import FoundryClient
    
    client = FoundryClient(
        api_key=os.environ["ADAPTYV_API_KEY"],
        base_url=os.environ.get(
            "ADAPTYV_API_URL",
            "https://foundry-api-public.adaptyvbio.com/api/v1",
        ),
    )
    
    # Browse targets
    targets = client.targets.list(search="EGFR", selfservice_only=True)
    
    # Estimate cost
    estimate = client.experiments.cost_estimate({
        "experiment_spec": {
            "experiment_type": "screening",
            "method": "bli",
            "target_id": "target-uuid",
            "sequences": {"seq1": "EVQLVESGGGLVQ..."},
            "n_replicates": 3
        }
    })
    
    # Create and submit
    exp = client.experiments.create({...})
    client.experiments.submit(exp.experiment_id)
    
    # Later: retrieve results
    results = client.experiments.get_results(exp.experiment_id)
    

    Experiment Types

    TypeMethodMeasuresRequires Target
    affinitybli or sprKD, kon, koff kineticsYes
    screeningbli or sprYes/no bindingYes
    thermostabilityMelting temperature (Tm)No
    expressionExpression yieldNo
    fluorescenceFluorescence intensityNo

    Experiment Lifecycle

    Draft → WaitingForConfirmation → QuoteSent → WaitingForMaterials → InQueue → InProduction → DataAnalysis → InReview → Done
    
    StatusWho ActsDescription
    DraftYouEditable, no cost commitment
    WaitingForConfirmationAdaptyvUnder review, quote being prepared
    QuoteSentYouReview and confirm the quote
    WaitingForMaterialsAdaptyvGene fragments and target ordered
    InQueueAdaptyvMaterials arrived, queued for lab
    InProductionAdaptyvAssay running
    DataAnalysisAdaptyvRaw data processing and QC
    InReviewAdaptyvFinal validation
    DoneYouResults available
    CanceledEitherExperiment canceled

    The results_status field on an experiment tracks: none, partial, or all.

    Common Workflows

    1. Submit a Binding Screen (Step by Step)

    # 1. Find a target
    targets = client.targets.list(search="EGFR", selfservice_only=True)
    target_id = targets.items[0].id
    
    # 2. Preview cost
    estimate = client.experiments.cost_estimate({
        "experiment_spec": {
            "experiment_type": "screening",
            "method": "bli",
            "target_id": target_id,
            "sequences": {"seq1": "EVQLVESGGGLVQ...", "seq2": "MKVLVAG..."},
            "n_replicates": 3
        }
    })
    
    # 3. Create experiment (starts as Draft)
    exp = client.experiments.create({
        "name": "EGFR binder screen batch 1",
        "experiment_spec": {
            "experiment_type": "screening",
            "method": "bli",
            "target_id": target_id,
            "sequences": {"seq1": "EVQLVESGGGLVQ...", "seq2": "MKVLVAG..."},
            "n_replicates": 3
        }
    })
    
    # 4. Submit for review
    client.experiments.submit(exp.experiment_id)
    
    # 5. Poll or use webhooks until Done
    # 6. Retrieve results
    results = client.experiments.get_results(exp.experiment_id)
    

    2. Automated Pipeline (Skip Draft + Auto-Accept Quote)

    exp = client.experiments.create({
        "name": "Auto pipeline run",
        "experiment_spec": {...},
        "skip_draft": True,
        "auto_accept_quote": True,
        "webhook_url": "https://my-server.com/webhook"
    })
    # Webhook fires on each status transition; poll or wait for Done
    

    3. Using Webhooks

    Pass webhook_url when creating an experiment. Adaptyv POSTs to that URL on every status transition with the experiment ID, previous status, and new status.

    Sequences

    • Simple format: {"seq1": "EVQLVESGGGLVQPGGSLRLSCAAS"}
    • Rich format: {"seq1": {"aa_string": "EVQLVESGGGLVQ...", "control": false, "metadata": {"type": "scfv"}}}
    • Multi-chain: use colon separator — "MVLS:EVQL"
    • Valid amino acids: A, C, D, E, F, G, H, I, K, L, M, N, P, Q, R, S, T, V, W, Y (case-insensitive, stored uppercase)
    • Sequences can only be added to experiments in Draft status

    Filtering, Sorting, and Pagination

    All list endpoints support pagination (limit 1-100, default 50; offset), search (free-text on name fields), and sorting.

    Filtering uses s-expression syntax via the filter query parameter:

    • Comparison: eq(field,value), neq, gt, gte, lt, lte, contains(field,substring)
    • Range/set: between(field,lo,hi), in(field,v1,v2,...)
    • Logic: and(expr1,expr2,...), or(...), not(expr)
    • Null: is_null(field), is_not_null(field)
    • JSONB: at(field,key) — e.g., eq(at(metadata,score),42)
    • Cast: float(), int(), text(), timestamp(), date()

    Sorting uses asc(field) or desc(field), comma-separated (max 8):

    sort=desc(created_at),asc(name)
    

    Example: filter=and(gte(created_at,2026-01-01),eq(status,done))

    Error Handling

    All errors return:

    {
      "error": "Human-readable description",
      "request_id": "req_019462a4-b1c2-7def-8901-23456789abcd"
    }
    

    The request_id is also in the x-request-id response header — include it when contacting support.

    Token Management

    Tokens use Biscuit-based cryptographic attenuation. You can create restricted tokens scoped by organization, resource type, actions (read/create/update), and expiry via POST /tokens/attenuate. Revoking a token (POST /tokens/revoke) revokes it and all its descendants.

    Detailed API Reference

    For the full list of all 32 endpoints with request/response schemas, read references/api-endpoints.md.

    Alternatives

    Compare before choosing

    Computed 9731,966

    K-Dense-AI/scientific-agent-skills

    esm

    Use when working directly with the `esm` Python SDK, ESM3 or ESMC model IDs, Forge/Biohub inference clients, or ESMFold2 folding workflows.

    Computed 9531,966

    K-Dense-AI/scientific-agent-skills

    tamarind

    Access a collection of open-source molecular design and structural biology tools on the Tamarind Bio platform, via its REST API or MCP server — no local GPUs required. Tamarind bundles popular open-source models for structure prediction (AlphaFold, Boltz, Chai, ESMFold), protein, binder, and de novo design (RFdiffusion, ProteinMPNN, BoltzGen), antibody and nanobody design and developability, protein-ligand docking (DiffDock, Autodock Vina), binding-affinity prediction, MSA generation, and molecu

    Computed 9337,126

    github/awesome-copilot

    rhino3d-scripts

    Authoring and debugging scripts for Rhinoceros 3D (Rhino 8 and later). Use when asked to write RhinoScript (VBScript / .rvb / .vbs), RhinoPython, or RhinoCommon-based scripts; automate Rhino modeling tasks; build command macros; manipulate Rhino geometry, layers, blocks, or document objects; pick objects from the viewport; control redraw and undo; or load and run scripts from the Rhino Script Editor. Covers `rhinoscriptsyntax`, `scriptcontext`, the `Rhino.*` RhinoCommon namespaces (`Rhino.Geomet

    Computed 91234,327

    affaan-m/ECC

    videodb

    See, Understand, Act on video and audio. See- ingest from local files, URLs, RTSP/live feeds, or live record desktop; return realtime context and playable stream links. Understand- extract frames, build visual/semantic/temporal indexes, and search moments with timestamps and auto-clips. Act- transcode and normalize (codec, fps, resolution, aspect ratio), perform timeline edits (subtitles, text/image overlays, branding, audio overlays, dubbing, translation), generate media assets (image, audio, v