{"id":24704,"plugin_id":"plugins~Plugin_7113e6f705948191bad2d24c30465361","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:18:35.752Z","digest":"b6416d868e9a7f17f2de28adb6a0b7934a51a4046527253736b5132608846982","against":null,"payload":{"name":"eqtl-catalogue-skill","description":"Submit compact eQTL Catalogue API requests for association retrieval and documented metadata endpoints. Use when a user wants concise public eQTL Catalogue summaries","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":98},{"relative_path":"scripts/rest_request.py","size_in_bytes":13525},{"relative_path":"scripts/test_rest_request.py","size_in_bytes":3299}],"skill_md_contents":"---\nname: eqtl-catalogue-skill\ndescription: Submit compact eQTL Catalogue API requests for association retrieval and documented metadata endpoints. Use when a user wants concise public eQTL Catalogue summaries\n---\n\n## Operating rules\n- Use `scripts/rest_request.py` for all eQTL Catalogue calls.\n- Use `base_url=https://www.ebi.ac.uk/eqtl/api`.\n- Prefer targeted association endpoints over broad list endpoints.\n- The public API currently appears strict about query validation, and live smoke tests returned intermittent `400`/`500`/timeout failures even with documented parameter sets; treat this source as usable but upstream-fragile.\n- For association endpoints, the script now backfills compatibility defaults for `quant_method`, `p_lower`, `p_upper`, and blank filter strings because the live API is currently rejecting omitted optional filters.\n- Prefer `variant_id` in requests; the script mirrors it to the legacy `snp` query key to accommodate the current server-side validator.\n- Re-run requests in long conversations instead of relying on older tool output.\n\n## Execution behavior\n- Return concise markdown summaries from the script JSON by default.\n- Return raw JSON only if the user explicitly asks for machine-readable output.\n- Prefer documented versioned paths such as `v3/studies`, `v3/associations`, `v3/studies/<study_id>/associations`, or legacy `v1/.../associations` routes with explicit filters, and surface upstream `400`/`500` errors verbatim when they occur.\n\n## Input\n- Read one JSON object from stdin.\n- Required fields: `base_url`, `path`\n- Optional fields: `method`, `params`, `headers`, `json_body`, `form_body`, `record_path`, `response_format`, `max_items`, `max_depth`, `timeout_sec`, `save_raw`, `raw_output_path`\n- Common eQTL Catalogue patterns:\n  - `{\"base_url\":\"https://www.ebi.ac.uk/eqtl/api\",\"path\":\"v3/studies\",\"max_items\":10}`\n  - `{\"base_url\":\"https://www.ebi.ac.uk/eqtl/api\",\"path\":\"v3/associations\",\"params\":{\"gene_id\":\"ENSG00000141510\",\"rsid\":\"rs7903146\",\"size\":10},\"max_items\":10}`\n  - `{\"base_url\":\"https://www.ebi.ac.uk/eqtl/api\",\"path\":\"v1/genes/ENSG00000141510/associations\",\"params\":{\"variant_id\":\"rs7903146\",\"size\":10},\"max_items\":10}`\n\n## Output\n- Success returns `ok`, `source`, `path`, `method`, `status_code`, `warnings`, and either compact `records` or a compact `summary`.\n- Use `raw_output_path` when `save_raw=true`.\n- Failure returns `ok=false` with `error.code` and `error.message`.\n\n## Execution\n```bash\necho '{\"base_url\":\"https://www.ebi.ac.uk/eqtl/api\",\"path\":\"v3/studies\",\"max_items\":10}' | python scripts/rest_request.py\n```\n\n## References\n- No additional runtime references are required; keep the import package limited to this file and `scripts/rest_request.py`.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}