query-pdb — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited query-pdb (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Query the RCSB Protein Data Bank for experimental 3D structures.
import requests
import json
# 1. Text search (simple keyword)
def search_pdb(query_text, max_results=5):
url = "https://search.rcsb.org/rcsbsearch/v2/query"
query = {
"query": {
"type": "terminal",
"service": "full_text",
"parameters": {"value": query_text}
},
"return_type": "entry",
"request_options": {"paginate": {"start": 0, "rows": max_results}}
}
r = requests.post(url, json=query)
r.raise_for_status()
return r.json()
# 2. Advanced search (by gene + organism + method)
def advanced_search_pdb(gene_name, organism="Homo sapiens", method=None, max_results=5):
nodes = [
{"type": "terminal", "service": "text",
"parameters": {"attribute": "rcsb_entity_source_organism.rcsb_gene_name.value",
"operator": "exact_match", "value": gene_name}},
{"type": "terminal", "service": "text",
"parameters": {"attribute": "rcsb_entity_source_organism.ncbi_scientific_name",
"operator": "exact_match", "value": organism}}
]
if method:
nodes.append({"type": "terminal", "service": "text",
"parameters": {"attribute": "exptl.method", "operator": "exact_match", "value": method}})
query = {
"query": {"type": "group", "logical_operator": "and", "nodes": nodes},
"return_type": "entry",
"request_options": {"paginate": {"start": 0, "rows": max_results},
"sort": [{"sort_by": "rcsb_accession_info.deposit_date", "direction": "desc"}]}
}
r = requests.post("https://search.rcsb.org/rcsbsearch/v2/query", json=query)
r.raise_for_status()
return r.json()
# 3. Get entry details
def get_pdb_entry(pdb_id):
url = f"https://data.rcsb.org/rest/v1/core/entry/{pdb_id}"
r = requests.get(url)
r.raise_for_status()
return r.json()
# 4. Download structure
def download_pdb(pdb_id, output_dir="/workspace/group"):
url = f"https://files.rcsb.org/download/{pdb_id}.pdb"
r = requests.get(url)
r.raise_for_status()
path = f"{output_dir}/{pdb_id}.pdb"
with open(path, 'w') as f:
f.write(r.text)
return path
# Example
results = search_pdb("human insulin")
for hit in results.get("result_set", []):
pdb_id = hit["identifier"]
details = get_pdb_entry(pdb_id)
title = details.get("struct", {}).get("title", "N/A")
method = details.get("exptl", [{}])[0].get("method", "N/A")
resolution = details.get("rcsb_entry_info", {}).get("resolution_combined", ["N/A"])[0]
print(f"{pdb_id}: {title}")
print(f" Method: {method}, Resolution: {resolution} Å")X-RAY DIFFRACTION — crystal structuresELECTRON MICROSCOPY — cryo-EMSOLUTION NMR — NMR in solution~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.