tamarind — Claude Code skill: what it does, how to install
Runs Tamarind Bio structural biology and molecular design tools through its REST API or MCP server. Use it for cloud jobs without local GPUs.
npx skills add K-Dense-AI/scientific-agent-skills --skill tamarind -a claude-codeWhat tamarind does
This skill guides work with AlphaFold, Boltz, Chai, ESMFold, RFdiffusion, ProteinMPNN, BoltzGen, DiffDock, and Autodock Vina. It covers structure prediction, protein and antibody design, docking, binding-affinity prediction, MSA generation, and molecular dynamics.
Its workflow discovers a tool, reads its schema, validates a job with POST /validate-job, submits it with POST /submit-job, then polls its state. Results are retrieved separately; when preparation is in progress, retrieve the result again instead of submitting the compute job again.
Python 3.10+, requests, network access, a Tamarind Bio account, and an API key in TAMARIND_API_KEY are required. Check the account allowance and compute budget before scaling jobs, because entitlements and quotas affect available runs.
What it helps with
- predict a protein structure with AlphaFold
- design a protein or binder
- run protein-ligand docking
- submit batches of sequences for analysis
- retrieve output after archive preparation
Example prompts for the agent
- “Run AlphaFold for this sequence through Tamarind.”
- “Check the DiffDock tool schema and prepare a docking job.”
- “Submit this batch of sequences to Tamarind for structural characterization.”
How to install tamarind
1Skills CLI (Vercel)
npx skills add K-Dense-AI/scientific-agent-skills --skill tamarind -a claude-code2Manually: put the files in place
~/.claude/skills/tamarind/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/tamarind/
1Skills CLI (Vercel)
npx skills add K-Dense-AI/scientific-agent-skills --skill tamarind -a codex2Manually: put the files in place
.agents/skills/tamarind/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add K-Dense-AI/scientific-agent-skills --skill tamarind -a cursor2Manually: put the files in place
.cursor/skills/tamarind/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install K-Dense-AI/scientific-agent-skills tamarind2Manually: put the files in place
.github/skills/tamarind/SKILL.md1Skills CLI (Vercel)
npx skills add K-Dense-AI/scientific-agent-skills --skill tamarind -a gemini-cli2Platform CLI
gemini skills install https://github.com/K-Dense-AI/scientific-agent-skills --path skills/tamarindManually: put the files in place
.devin/skills/tamarind/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add K-Dense-AI/scientific-agent-skills --skill tamarind -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set120
The whole set →Similar
Questions about tamarind
How do I install tamarind in Claude Code?
Run npx skills add K-Dense-AI/scientific-agent-skills --skill tamarind -a claude-code, then run npx skills add K-Dense-AI/scientific-agent-skills --skill tamarind -a claude-code again and open ~/.claude/skills/tamarind/SKILL.md.
What does tamarind do?
The skill guides an agent through Tamarind Bio tools for molecular design and structural biology. It covers tool discovery, job validation, submission, polling, and result retrieval through the REST API or MCP server.
What is required to use tamarind?
It requires Python 3.10+, requests, network access, a Tamarind Bio account, and an API key in TAMARIND_API_KEY. The key is sent in the x-api-key header.
Source text
SKILL.md · MIT
---
name: tamarind
description: Provides access to 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 molecular dynamics. Use when the user mentions Tamarind or tamarind.bio, wants to run any of these open-source tools in the cloud, references app.tamarind.bio/api or the x-api-key header, or needs to submit batches of sequences for structural or biophysical characterization.
license: MIT
compatibility: Requires Python 3.10+, a Tamarind Bio account, and an API key from app.tamarind.bio. Uses the `requests` library against the public REST API (these recipes use HTTP directly). Network access required. Optional MCP server at mcp.tamarind.bio/mcp for agent hosts.
metadata:
version: "1.3"
last-reviewed: "2026-09-30"
skill-author: Tamarind Bio
trigger-keywords: protein structure prediction, AlphaFold, Boltz, Chai, ESMFold, protein design, binder design, de novo design, antibody design, nanobody, protein-ligand docking, DiffDock, Autodock Vina, binding affinity, MSA generation, inverse folding, ProteinMPNN, RFdiffusion, BoltzGen, cloud GPU biology, structure prediction API, x-api-key, developability, adme, enzyme, peptide, protein language models, molecular design
openclaw:
primaryEnv: TAMARIND_API_KEY
envVars:
- name: TAMARIND_API_KEY
required: true
description: Tamarind Bio API key sent as the x-api-key header.
---
# Tamarind Bio
Tamarind runs molecular-design and structural-biology tools on managed compute:
structure prediction, protein and antibody design, docking, binding-affinity
prediction, MSA generation, and molecular dynamics. Use it when the user requests
Tamarind, its REST API/MCP server, or cloud execution of these scientific tools.
For local sequence processing or molecular descriptors, use a local library.
## Sources and review scope
The REST contracts and public catalog were reviewed on **2026-09-30**. Examples are
illustrative until validated against the user's account; this review did not run
authenticated jobs or establish scientific accuracy for any model.
- [API index](https://app.tamarind.bio/llms.txt) and
[complete guide](https://app.tamarind.bio/llms-full.txt).
- [Current OpenAPI](https://app.tamarind.bio/api/openapi.json) includes discovery,
validation, jobs, files, and newer pipeline/custom-tool surfaces.
[openapi.yaml](https://app.tamarind.bio/openapi.yaml) is also available. Check that
needed paths exist: the merged spec can return HTTP 200 with only its classic
surface when the backend spec cannot be fetched.
- [Public catalog](https://app.tamarind.bio/tools.json) needs no key; query `?type=`
or `?tag=`. It documents public tools and conditional required settings, not
every optional parameter or account entitlement.
- [Product documentation index](https://docs.tamarind.bio/llms.txt) links to
Markdown pages, including the [MCP guide](https://docs.tamarind.bio/tamarind/mcp-server.md).
Fetch the account's current schemas before composing a run. Where the prose guide
and OpenAPI differ, prefer the operation/schema for field shapes, and record any
unresolved difference rather than guessing.
## Access
1. Use the user's Tamarind deployment. The shared base is
`https://app.tamarind.bio/api`; a dedicated organization deployment has its own
host and account data. Every relative REST path below is under `/api`.
2. Obtain a key from the deployment's API settings and read it from
`TAMARIND_API_KEY`; send it as `x-api-key`. Keep keys out of files and logs.
3. Check the account's current allowance and compute budget before scaling up.
Free usage is a monthly allowance, not an unconditional promise of ten jobs
forever; billing and entitlements can change.
```bash
# Public discovery requires no credential.
curl --fail-with-body 'https://app.tamarind.bio/tools.json?type=alphafold'
# Account-scoped discovery:
curl --fail-with-body 'https://app.tamarind.bio/api/tools' \
-H "x-api-key: $TAMARIND_API_KEY"
```
For REST examples install `requests` in the execution environment. The official
CLI distribution is **`tamarind-cli`**, and its Custom Tools Python client imports
as `from tamarind import Tamarind`; the unrelated package named `tamarind` is not
this client. See the [SDK reference](https://app.tamarind.bio/api-docs/custom-tools-sdk-reference).
Core job recipes below use HTTP directly.
## Workflow
1. **Discover.** Read `GET /tools` and match the user's scientific task to the tool
description. Built-ins return an array; `?custom=true` lists legacy custom
tools only. Current custom deployments can be missing from this list: use the
known deployed name and its schema before concluding that it is unavailable.
2. **Read the schema.** `GET /tools/{name}/schema` returns a JSON Schema for the
`settings` object. `GET /tools` also supplies a trimmed `settings` parameter
list. Check task-dependent fields, file extensions, list values, and defaults.
3. **Validate.** Send `POST /validate-job` with `type`, `settings`, and optional
`jobName`. Check HTTP status first, then JSON `valid`. On success, inspect and
use `normalized` as the settings to submit. Address `unrecognized_settings`
if returned, even alongside `valid: true`: an optional-field typo can otherwise
silently leave the default in effect. Validation checks fields, not all submit
policies, queue limits, or deployment readiness.
4. **Submit once.** `POST /submit-job` takes `jobName`, `type`, `settings`, optional
`version` for a custom-tool build, and optional/organization-required
`projectTag`. Persist the submitted name and settings. A successful response
is plain text, not a JSON receipt. Use the returned stored name.
5. **Poll.** `GET /jobs?jobName=...` returns a row directly. Single-job terminal
states are `Complete`, `Stopped`, and `Failed`; handle legacy `Deleted` or an
exact-lookup error without looping indefinitely. Poll batch parents using
`batchStatus`, and poll newer pipelines on their own run endpoint.
6. **Download and inspect.** `POST /result` returns a JSON string URL on **200**,
or **202** with `status: "preparing"`. Retry result retrieval after 202, without
resubmitting compute. GET the signed URL without the Tamarind API-key header.
Download the archive only for successful runs; request `fileName: "output.log"`
for stopped/failed jobs. Verify the scientific outputs after downloading.
[Workflow recipes](references/workflows.md) implement validation, stored names,
bounded polling, 202 handling, batch validation, and pagination. They are locally
smoke-tested with simulated responses; authenticated execution remains untested.
## Picking tools and interpreting results
Select by inputs, intended output, and modeling assumptions, then confirm the
candidate in the live catalog. These are anchors, not a guaranteed catalog:
| Task | Candidates and decisions |
|---|---|
| Protein/complex structure | `alphafold` for AF2 monomers/multimers; `boltz`, `chai`, or `protenix` for cofolding including ligands/nucleic acids; `esmfold` for fast single-sequence protein folding. Check `esmfold2` separately: its current catalog includes protein, DNA, RNA, and ligand complexes. |
| Binder/motif design | `bindcraft`, `boltzgen`, `rfdiffusion`; choose by target type, scaffold constraints, and required structure inputs. |
| Inverse folding | `proteinmpnn`/`ligandmpnn` consume structures and design sequences. Re-fold designs and compare to the intended backbone/interface. |
| Small-molecule docking | `autodock-vina` for a fixed receptor and search box; `diffdock` for diffusion docking; `boltz`/`chai` for cofolding. Choose the modeling approach for the task, not to avoid supplying a required input. |
| Antibody/developability/MSA/MD | Filter descriptions and schemas for the specific task; availability and inputs differ by tool. |
Confidence scores describe model confidence, not experimental binding, specificity,
or affinity. Compare designed backbones, interfaces, clashes, chain/residue mapping,
and developability. Check ligand chemistry and stereochemistry; docking scores
are not interchangeable with measured binding free energies. Record tool/model,
input provenance, chain mapping, seeds/samples, MSA/template choices, normalized
settings, and any user-selected filtering thresholds.
Honor the user's selected tool and budget. Use authorized defaults for routine
choices; surface unresolved choices that materially affect the scientific task or
compute scope before a large campaign. Never silently substitute a different
scientific task because its inputs are easier to supply.
## File inputs and chaining
- Upload a structure with `PUT /upload/{filename}` (binary body; follow the
documented redirect), then reference the registered relative name, e.g.
`target.pdb` or `inputs/target.pdb` when `?folder=inputs` was used.
- Confirm names using `GET /files`; it returns a non-paginated array for the
selected folder, not a list of a job's outputs.
- Prefer these paths over inline file content. The current guide says redundant
account-email prefixes are stripped; there is no longer a universal
double-prefix failure. Arbitrary strings are not necessarily file references.
- Reuse a completed job's file as `JobName/path/to/file.ext`, matching the next
parameter's supported extensions and list/scalar shape. Do not guess filenames.
- ProteinMPNN designs must feed a folding tool's **sequence** field. A structural
template field does not mean "fold this designed sequence". Read generated
FASTA/CSV sequences and validate one folding settings object per sequence.
- Do not author internal fields such as `submit_method`, `msa`, or `monomer_msa`.
## Batches and pipelines
`POST /submit-batch` accepts one `type`, a nonempty `settings` array, `batchName`,
and optional parallel `jobNames`. Validate **every** row using array-mode
`/validate-job` (up to 1,000 rows per call), and use each row's normalized settings.
Submission allows up to **30,000 expanded jobs**, counting design fan-out, and
has a separate approximately **4.5 MB** request limit. Split on both constraints.
Do not assume old `weightedHoursBudget`, `maxRuntimeSeconds`, or `gpuType` request
fields enforce a cap: they are absent from the current batch schema. Use confirmed
account controls and an agreed job/sample count.
Poll `GET /jobs?jobName=<batchName>` until `batchStatus` is `Complete`, `Stopped`,
or `AggregationFailed`. Subjobs can finish before aggregation. Fetch the archive
through `/result` and handle 202; `resultUrl` is optional and is not a reliable
readiness signal. Page `GET /jobs?batch=...` using `startKey` to inspect children.
For new saved workflows use the template/run API under `/pipelines`: read the
current pipeline graph contract, validate the proposed run with
`POST /pipelines/validate`, submit with `POST /pipelines/submit` (required
`name`, `bindings`, and one of `templateId`/`pipeline`), and poll
`GET /pipelines/runs/{run_id}`. Its statuses are lowercase and separate from job
statuses. The legacy `/submit-pipeline` and `/run-pipeline` remain documented;
[API reference](references/api_reference.md) gives their actual required fields.
## MCP alternative
Connect to `https://mcp.tamarind.bio/mcp` with OAuth 2.1 or the `x-api-key` header.
The official guide confirms `submitJob`, `submitBatch`, `getJobs`, `getResult`,
`uploadFile`, and `getFiles`. Read the connected server's `tools/list` schemas
before using signatures or interpreting result envelopes.
If the connection advertises discovery/validation helpers such as
`getAvailableTools`, `getJobSchema`, or `validateJob`, use their current schemas.
Extra helpers, filter vocabularies, `submitBatch(fromJob=...)`, and upload-through-
MCP variants are not guaranteed by the public guide. This review's anonymous
`tools/list` request returned 401, so their current contracts were not verified.
Use the documented REST equivalents when needed.
## Recovery
HTTP auth failures differ by route: classic endpoints can answer **400**, jobs
can answer **401** or gateway **403**, and usage can answer **401**. A 403 is not
proof of a budget error. Check status and the actual response body before changing
settings. Submission errors may be JSON or plain text regardless of Content-Type.
A timeout/5xx on submit does not prove that nothing queued. Look up the persisted
name before retrying; for campaigns use `POST /jobs/search` with up to 1,000 names
per request. Respect rate limits and avoid one-request-per-job polling at scale.
A 413 rejects the oversized request before creating jobs; split the body or upload
file content separately. `DELETE /delete-job` is a **soft delete**: it hides the
job and leaves stored result files intact.
## Reference files
- [API reference](references/api_reference.md): endpoint shapes, validation,
pagination, authentication differences, and legacy/new pipeline boundaries.
- [Tool catalog](references/tool_catalog.md): schema interpretation and discovery.
- [Examples](references/examples.md): current catalog-backed settings examples
and tool-specific caveats, explicitly bounded by verification scope.
- [Workflows](references/workflows.md): executable HTTP recipes with local mocked
verification; no authenticated scientific jobs were run for this review.
© K-Dense-AI · MIT · K-Dense-AI/scientific-agent-skills