
Find binders. Validate. Get data back.
predict - validate - data in weeks
From protein sequence,
to validated binders,
to discovery, in weeks.
We screen hundreds of millions of molecules with Om library × library screening technology, then use LULA to score Om Accessible Space. Discovery always includes AS-MS. You get binder and non-binder data back in weeks.
Get started below
Just a protein sequence.
Paste 300–1500 amino acids. LULA scores Om Accessible Space and selects molecules predicted to bind only your protein.
Amino acid letters only. Sequences must be 300–1500 amino acids and start with M. Shift+Enter adds a new line.

enrichment results, verified
Top-ranked molecules carry the signal.
Across proteome-scale evaluation, LULA-1 recovered 267,324 known binders in the top 1,000 ranked molecules per target versus 4,877.6 expected under random ranking. Family AUROC remains strongest across the same druggable target families.
composition and performance · target-family AUROC
evaluated target-family coverage
Ligase/Synthase
0.829· 151
Oxidoreductase
0.811· 424
Transferase
0.808· 187
Ion channel
0.808· 147
Phosphatase
0.808· 134
Hydrolase
0.805· 351
Kinase
0.800· 707
Transporter/Pump
0.796· 191
Receptor/GPCR
0.793· 959
Protease
0.786· 316
Other
0.750· 1,528
Epigenetic/Chromatin
0.727· 207
Nucleic-acid enzyme
0.716· 137
EF@1000
54.8x
Aggregate enrichment in the top 1,000 ranked molecules per target.
Known binders recovered
267K
Recovered in top-ranked candidate sets across the benchmark.
Random baseline
4.9K
Expected known binders under random ranking.
The donut shows evaluated target-family coverage across 5,439 targets; slice size is target share and color tracks AUROC. The benchmark result is measured by known-binder recovery in the top-ranked candidate set.
Om Open Pipeline Challenges
Predict the binder. Om runs the wet lab.
Submit eligible Om molecules for real experimental validation. You keep your Result Data. Om pays the published amount for Qualified Binders selected within each protein’s current payout limit.

Current maximum payout
$25,000
$1,000 per Qualified Binder for up to 25 Qualified Binders, in paid-submission acceptance order.
Challenge terms
- 5,000 Wallet Credits per accepted molecule
- Submit up to 1,000 SMILES per batch — no participant limit
- You own your Result Data
- Om procures and experimentally tests every accepted molecule
- Payout priority follows paid-submission acceptance order
You keep ownership of every result and control its publication. A Qualified Binder outside the current payout limit is not paid or licensed unless Om later increases that limit.
enter from code
Scan om_50, rank with LULA, submit
The same SMILES-only contract runs through the Python SDK, the public API, and MCP. Use LULA or your own model to choose molecules — provenance is not part of eligibility.
Python
pip install omtx
from omtx import OmClient
client = OmClient() # reads OMTX_API_KEY
# 1. Scan Om's accessible space for om_50 molecules
space = client.molecules.accessible_space(tier=50, n=96, idempotency_key="scan-1")
candidates = client.molecules.smiles(space)
# 2. (optional) Rank them with LULA before you spend credits
client.lula1.score(protein_sequence=TARGET_SEQ, smiles=candidates,
idempotency_key="lula-1")
# 3. Submit your picks — 5,000 credits each, you own the results
client.discovery_challenges.submit(
challenge_id=CHALLENGE_ID, # from /discovery/challenges
smiles=candidates[:10],
accept_qualified_binder_data_license=True,
idempotency_key="submit-1",
)hosted Om MCP
Pick your agent harness to use Om
Install the Om Discovery plugin with npx, or connect the hosted Om MCP in Claude, Codex, Cursor, VS Code, Copilot, Gemini, Grok, or another remote MCP client. Score proteins, start Discovery, and read Wallet Credits from the agent. No Python SDK required.
one command
Install the Om Discovery plugin
Add the hosted Om MCP and the Om Discovery skill from GitHub, then complete OAuth in your agent. Or pick a harness below for the native client command.
npx skills add
npx skills add omtx-ai/omtxnpx plugins add
npx plugins add omtx-ai/omtxThe plugin points at https://agents.omtx.ai/mcp. Source: github.com/omtx-ai/omtx. Claude Code can also run /plugin marketplace add omtx-ai/omtx then /plugin install om-discovery@omtx.
Claude app
Claude.ai and Claude Desktop
- 1Open Customize → Connectors (claude.ai/settings/connectors).
- 2Add a custom connector named Om.
- 3Paste https://agents.omtx.ai/mcp, then Add and Connect.
- 4Finish Om OAuth in the browser and enable Om in the chat + menu.
Start a new chat, enable Om, then ask for om_status.
how we do it
FAQ
Use LULA to predict molecular binders, validate with AS-MS, and get binder and non-binder data back in weeks. Here is how Om runs the wet lab.
We screen hundreds of millions of molecules with Om library × library screening technology, then use LULA models to score Om Accessible Space and select molecules predicted to bind only your protein. Discovery always includes AS-MS validation. You get binder and non-binder data back in weeks. If you want the molecules themselves, order them later through Om MCP.
score → select → order, in one Wallet Credits flow
From a target sequence to a molecule order.
Bring a protein sequence. LULA-2 scores a fixed-price slice of Om Accessible Space and returns ranked, orderable rows. Pick the hits you want to test, spend Wallet Credits, and Om ships the molecules.
Create an API key, fund Wallet Credits, then run the SDK flow.
Real SDK flow
Define target + client
from pathlib import Path
from uuid import uuid4
import polars as pl
from omtx import OmClient
JAK2_V617F_SEQUENCE = "YOUR_JAK2_V617F_PROTEIN_SEQUENCE"
client = OmClient(api_key="YOUR_API_KEY")Launch LULA-2 scoring
job = client.lula2.score(
protein_sequence=JAK2_V617F_SEQUENCE,
source="om",
tier=50,
n=50_000,
top_k=10_000,
idempotency_key="jak2-v617f-lula2-r1",
)Collect ranked hits
artifact_paths = []
result_dir = Path("outputs/jak2-v617f-lula2-r1")
for job_id in job["job_ids"]:
client.jobs.wait(job_id, poll_interval=5, timeout=3600)
artifact_paths.extend(
client.jobs.download_all_artifacts(
job_id,
output_dir=result_dir / job_id,
overwrite=True,
)
)
score_tables = [
pl.read_parquet(path)
for path in artifact_paths
if path.suffix == ".parquet"
]
score_rows = pl.concat(score_tables).sort("score", descending=True)
selected_hits = score_rows.head(100).to_dicts()Order with Wallet Credits
addresses = client.molecules.shipping_addresses()
order = client.molecules.order(
items=selected_hits,
shipping_address_id=addresses["default_shipping_address_id"],
idempotency_key=f"jak2-v617f-round-1-{uuid4()}",
)
print(order["order_number"])50K
Om molecules
100
selected hits
Om
orderable rows
1 order
Wallet Credits
01Define the target
JAK2 V617FBring the protein sequence for a real target like JAK2 V617F.
02Score Om space
50K moleculesRun LULA-2 against an Om Accessible Space tier and get ranked molecules back.
03Select molecules
top 100Pick the highest-confidence rows you want moved onto the bench.
04Order with credits
Wallet CreditsSpend Wallet Credits on the selected hits. Om ships you molecules. That's it.
bring your hits, order molecules
Use LULA scores, generated molecules, docking, Boltz, or internal ML. Pick the molecules you want to test; Om turns selected orderable hits into a Wallet Credits-funded order.
early molecule partner
Latest Articles

Find a STAT6 binder. Om runs the wet lab—and pays.
The STAT6 Open Pipeline Challenge lets you submit om_50 molecules for AS-MS validation, own every Result Data record, and earn $1,000 for each payout-selected Qualified Binder, initially up to 25.
August 17, 2026 · 4 min read
Read More
LULA-1 is now open-weight on Hugging Face
LULA-1 scores protein-ligand pairs from sequence and SMILES, with local weights for non-commercial research and hosted scoring for commercial workflows.
July 31, 2026 · 6 min read
Read More
Vibe Discovery Is Coming
Om MCP brings Diligence, Data Access, Artifacts, Jobs, and Hub workflows into Codex, Claude Code, and OAuth-capable MCP harnesses.
April 8, 2026 · 12 min read
Read MoreWhile you're vibin'...
Watch the discovery playlist.

A little birdy said to ask Om MCP to make a vibe video for your discovery efforts. Want to ask for your favorite vibe video style?