Install
$ agentstack add skill-noah-ai-co-noah-skills-medical-conference ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Conference Search Skill
This skill searches a conference and presentation database using three independent scripts. Choose the script that fits the task — each can be used standalone, or combined in sequence.
Scripts Overview
| Script | When to use | |---|---| | scripts/search_conferences.py | Find conferences by name, date, location, or therapeutic area | | scripts/search_presentations.py | Find abstracts/presentations when you already know the conference name or series | | scripts/search_chained.py | Discover the conference first, then auto-inject its name into a presentation search |
Script 1 — Search Conferences Only
Use when the user asks about which conferences exist, when/where they are held, or wants to browse conferences by area or organization.
python scripts/search_conferences.py --params ''
python scripts/search_conferences.py --params-file query.json
python scripts/search_conferences.py --params '' --raw
python scripts/search_conferences.py --params '' --output results.json
Query fields
| Field | Type | Description | Example | |---|---|---|---| | conference_name | str | Full or partial conference name | "ASCO Annual Meeting 2024" | | conference_start_date | str | Start date (YYYY-MM-DD) | "2024-06-01" | | conference_end_date | str | End date (YYYY-MM-DD) | "2024-06-05" | | conference_location | str | City, country, or venue | "Chicago" | | series_name | str | Conference series name | "ASCO" | | series_organization | str | Organizing body | "American Society of Clinical Oncology" | | from_n | int | Pagination offset | 0 | | size | int | Results per page | 50 |
Examples
# Find all ASCO conferences
python scripts/search_conferences.py --params '{"series_name": "ASCO"}'
# Conferences in Chicago in 2024
python scripts/search_conferences.py --params '{"conference_location": "Chicago", "conference_start_date": "2024-01-01", "conference_end_date": "2024-12-31"}'
# ESMO conferences, raw JSON
python scripts/search_conferences.py --params '{"series_name": "ESMO"}' --raw
Result fields
conference_name, conference_abbreviation, conference_website, conference_description, conference_start_date, conference_end_date, conference_location, series_id, series_name, series_abbreviation, series_website, series_organization
Script 2 — Search Presentations Only
Use when the user asks about specific drugs, diseases, targets, authors, or institutions and already knows (or doesn't need to filter by) an exact conference. The series_name field is sufficient for most queries.
python scripts/search_presentations.py --params ''
python scripts/search_presentations.py --params-file query.json
python scripts/search_presentations.py --params '' --raw
python scripts/search_presentations.py --params '' --output results.json
Query fields
| Field | Type | Description | Example | |---|---|---|---| | authors | List[str] | Presenter / author name(s) | ["John Smith"] | | institutions | List[str] | Author institution(s) | ["MD Anderson"] | | drugs | List[str] | Drug name(s) | ["pembrolizumab"] | | diseases | List[str] | Disease / indication(s) | ["lung cancer", "NSCLC"] | | targets | List[str] | Biological target(s) | ["PD-1", "VEGF"] | | conference_name | str | Exact conference name | "2024 ASCO Annual Meeting" | | series_name | str | Conference series name | "ESMO" | | from_n | int | Pagination offset | 0 | | size | int | Results per page | 10 |
Examples
# Pembrolizumab lung cancer abstracts at ESMO
python scripts/search_presentations.py --params '{"drugs": ["pembrolizumab"], "diseases": ["lung cancer"], "series_name": "ESMO"}'
# KRAS G12C data from MD Anderson researchers
python scripts/search_presentations.py --params '{"targets": ["KRAS G12C"], "institutions": ["MD Anderson"]}'
# All presentations at a specific conference (exact name required)
python scripts/search_presentations.py --params '{"conference_name": "2024 ASCO Annual Meeting", "diseases": ["NSCLC"]}'
# Save to file
python scripts/search_presentations.py --params '{"drugs": ["nivolumab"]}' --output results.json
Result fields
session_title, presentation_title, presentation_website, main_author, main_author_institution, authors, institutions, abstract, design, efficacy, safety, summary, drugs, diseases, targets, series_name, conference_name
Script 3 — Chained Search (Conference → Presentation)
Use when you need to find the exact conference first, then search its presentations. The top-matching conference_name from Step 1 is automatically injected into Step 2 — no manual copy-paste needed.
python scripts/search_chained.py \
--conference-params '' \
--presentation-params ''
# With file inputs
python scripts/search_chained.py \
--conference-params-file conf.json \
--presentation-params-file pres.json
# Raw JSON + save to file
python scripts/search_chained.py \
--conference-params '' \
--presentation-params '' \
--raw --output results.json
Examples
# PD-1 data at ASCO 2024 (auto-resolves conference name)
python scripts/search_chained.py \
--conference-params '{"series_name": "ASCO", "conference_start_date": "2024-01-01", "conference_end_date": "2024-12-31"}' \
--presentation-params '{"targets": ["PD-1"]}'
# Roche bispecific antibodies at ASH conferences
python scripts/search_chained.py \
--conference-params '{"series_name": "ASH"}' \
--presentation-params '{"drugs": ["bispecific antibody"], "institutions": ["Roche"]}'
Choosing the Right Script
User asks about conferences / dates / locations
→ search_conferences.py
User asks about drug / disease / abstract data, knows the series (e.g. "at ESMO")
→ search_presentations.py (use series_name field)
User asks about drug / disease / abstract data, knows the year but not exact conference name
→ search_chained.py (resolves conference_name automatically)
Fallback Search Strategies
When an initial query returns zero or poor results, try these strategies in order:
Strategy 1 — Conference Name / Series Variant Expansion
Conference abbreviations and full names are often stored inconsistently. Try common variants before giving up.
# Try abbreviation first, then full name
python scripts/search_conferences.py --params '{"series_name": "ASCO"}'
python scripts/search_conferences.py --params '{"series_name": "American Society of Clinical Oncology"}'
# Try alternate known abbreviations
# ESMO → "European Society for Medical Oncology"
# AHA → "American Heart Association"
# ACC → "American College of Cardiology"
For presentations, switch from conference_name (exact match) to series_name (fuzzy):
# Exact match — fails if name is slightly off
--params '{"conference_name": "2024 ASCO Annual Meeting", ...}'
# Safer fallback — use series instead
--params '{"series_name": "ASCO", ...}'
Strategy 2 — Switch to Chained Search
If search_presentations.py returns nothing with a manually typed conference_name, the name is likely mismatched. Let search_chained.py resolve it automatically.
# Instead of (may fail on exact name mismatch):
python scripts/search_presentations.py \
--params '{"conference_name": "ASCO 2024", "drugs": ["pembrolizumab"]}'
# Use chained (auto-resolves correct conference_name):
python scripts/search_chained.py \
--conference-params '{"series_name": "ASCO", "conference_start_date": "2024-01-01", "conference_end_date": "2024-12-31"}' \
--presentation-params '{"drugs": ["pembrolizumab"]}'
Strategy 3 — Drug / Disease Term Expansion
Drug names and disease terms in abstracts may use brand names, INNs, aliases, or abbreviations. Expand the drugs or diseases list to cover variants.
# Expand drug name variants
--params '{"drugs": ["SHR-A1904", "SHR A1904", "A1904"], "series_name": "ASCO"}'
# Expand disease terms (specific → broad)
--params '{"diseases": ["NSCLC", "non-small cell lung cancer", "lung cancer"], "series_name": "ESMO"}'
# Try target if drug name fails entirely
--params '{"targets": ["CLDN18.2", "Nectin-4"], "series_name": "ASCO"}'
Strategy 4 — Institution-First Search
When drug name and disease matching both fail, anchor on the presenting institution or author and filter results locally.
# Broad institutional pull
python scripts/search_presentations.py \
--params '{"institutions": ["Jiangsu Hengrui", "Hengrui Medicine"], "series_name": "ASCO", "size": 100}'
# Then filter locally by drug name pattern or disease keyword
Strategy 5 — Relax Filters Incrementally
Drop constraints one at a time in this order:
- Remove
conference_name→ useseries_nameonly - Remove date range constraints
- Broaden
diseases(e.g."NSCLC"→"lung cancer"→"cancer") - Remove
series_nameto search across all conferences - Search by
targetsalone if drug name is unknown
Decision Tree
Query returns results?
├── Yes → present results
└── No (presentations) →
Strategy 1: switch conference_name → series_name
└── Still no → Strategy 2: switch to search_chained.py
└── Still no → Strategy 3: expand drugs / diseases / targets terms
└── Still no → Strategy 4: institution anchor + local filter
└── Still no → Strategy 5: relax filters incrementally
No (conferences) →
Strategy 1: try series abbreviation ↔ full name swap
└── Still no → try different series_name or remove location filter
Any step hits HTTP 429?
└── Pause entire chain 30s → resume from current strategy
(sleep ≥5s between every request to avoid triggering 429)
Conversion Examples
User: "What PD-1 drug data was presented at ASCO 2024?"
python scripts/search_chained.py \
--conference-params '{"series_name": "ASCO", "conference_start_date": "2024-01-01", "conference_end_date": "2024-12-31"}' \
--presentation-params '{"targets": ["PD-1"]}'
User: "Pembrolizumab lung cancer abstracts from ESMO"
python scripts/search_presentations.py \
--params '{"drugs": ["pembrolizumab"], "diseases": ["lung cancer"], "series_name": "ESMO"}'
User: "Oncology conferences in Chicago 2024"
python scripts/search_conferences.py \
--params '{"conference_location": "Chicago", "conference_start_date": "2024-01-01", "conference_end_date": "2024-12-31"}'
User: "KRAS G12C presentations by MD Anderson researchers"
python scripts/search_presentations.py \
--params '{"targets": ["KRAS G12C"], "institutions": ["MD Anderson"]}'
User: "Roche bispecific antibody data at ASH conferences"
python scripts/search_chained.py \
--conference-params '{"series_name": "ASH"}' \
--presentation-params '{"drugs": ["bispecific antibody"], "institutions": ["Roche"]}'
Tips
- If no results are returned, try relaxing filters (e.g. use
series_nameinstead ofconference_name, or broaden the disease term). conference_nameinsearch_presentations.pymust be an exact match — usesearch_chained.pyor runsearch_conferences.pyfirst to get the correct name.- All
List[str]fields accept multiple values:["NSCLC", "lung cancer"].
Dependencies
- Python 3.8+
requestslibrary (pip install requests)- Environment variable
NOAH_API_TOKEN— register at noah.bio to obtain your API key.
Security & Packaging Notes
- This skill only calls NoahAI official HTTPS endpoints under
https://www.noah.bio/api/and does not contact third-party services. - It requires exactly one environment variable:
NOAH_API_TOKEN. Store it in the environment or a local.envfile, and never place it inline in commands, chats, or packaged files. - The token is scoped to read medical public details only and cannot access private user records.
- The skill does not intentionally persist request parameters locally. Any server-side retention is determined by the NoahAI API service and its operational logging policies.
- It does not request persistent or system-level privileges and does not modify system configuration.
- The skill is source-file based (Python scripts only) and does not require runtime installs, package downloads, or external bootstrap steps.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: NOAH-AI-CO
- Source: NOAH-AI-CO/noah-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.