Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
k-dense-ai avatar

Adaptyv

  • 845 installs
  • 32k repo stars
  • Updated July 29, 2026
  • k-dense-ai/scientific-agent-skills

adaptyv is an agent skill that wraps Adaptyv Bio Foundry REST endpoints so developers who automate protein experiments, quotes, and lab results can call the API without hand-reading OpenAPI each time.

About

adaptyv is an agent integration skill for the Adaptyv Bio Foundry public API at https://foundry-api-public.adaptyvbio.com/api/v1. It documents nine endpoint groups—Experiments, Sequences, Results, Targets, Quotes, Tokens, Updates, and Feedback—so coding agents can create Draft experiments, submit sequences, fetch results, and request quotes with correct request bodies. Developers reach for adaptyv when building scientific agent pipelines that must submit foundry work, poll status, and retrieve structured lab output instead of manually translating OpenAPI into curl or SDK calls. The skill exposes POST /experiments creation, experiment_spec schemas, and related CRUD flows from the bundled endpoint reference.

  • Eight endpoint areas: experiments, sequences, results, targets, quotes, tokens, updates, and feedback against the public
  • Five experiment_type values—affinity, screening, thermostability, fluorescence, expression—with BLI/SPR method rules for
  • Experiment lifecycle controls: Draft default, skip_draft, auto_accept_quote, and optional webhook_url for status POSTs
  • ExperimentSpec covers target_id, sequence name maps, and n_replicates (recommended default 3, minimum 1)
  • Points agents at GET /openapi.json on foundry-api-public.adaptyvbio.com for schema parity

Adaptyv by the numbers

  • 845 all-time installs (skills.sh)
  • +38 installs in the week ending Jul 29, 2026 (Skillselion tracking)
  • Ranked #467 of 4,356 Backend & APIs skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill adaptyv

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs845
repo stars32k
Security audit3 / 3 scanners passed
Last updatedJuly 29, 2026
Repositoryk-dense-ai/scientific-agent-skills

How do agents call Adaptyv Bio Foundry REST endpoints?

Wire Adaptyv Bio Foundry REST calls into agent workflows so protein experiments, quotes, and lab results run without hand-reading OpenAPI each time.

Who is it for?

Developers building AI agents or automation scripts that submit and track Adaptyv Bio Foundry protein experiments.

Skip if: Developers who only need generic REST client generation without Adaptyv-specific experiment, sequence, or quote workflows.

When should I use this skill?

User asks to create foundry experiments, request protein quotes, submit sequences, or fetch Adaptyv lab results via API.

What you get

Structured experiment payloads, sequence submissions, quote requests, and lab result responses from the foundry API.

  • experiment API payloads
  • quote requests
  • lab result responses

By the numbers

  • Documents 9 Adaptyv Bio Foundry API endpoint groups
  • Targets public API base URL foundry-api-public.adaptyvbio.com/api/v1

Files

SKILL.mdMarkdownGitHub ↗

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.

Related skills

How it compares

Pick adaptyv over generic OpenAPI skills when automating Adaptyv-specific experiment, sequence, quote, and result workflows.

FAQ

What is the Adaptyv Bio Foundry API base URL?

Adaptyv Bio Foundry requests use base URL https://foundry-api-public.adaptyvbio.com/api/v1. The OpenAPI spec is available at GET /openapi.json on that host for schema discovery.

Which Adaptyv endpoints does adaptyv cover?

adaptyv documents nine API areas: Experiments, Sequences, Results, Targets, Quotes, Tokens, Updates, and Feedback. POST /experiments creates a new experiment starting in Draft status.

When should a developer use adaptyv in an agent workflow?

Use adaptyv when an AI agent must programmatically create experiments, submit sequences, request quotes, or pull lab results from Adaptyv Bio Foundry without manually parsing OpenAPI each session.

Is Adaptyv safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Backend & APIsintegrationsbackend

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.