Bucle de evidencia CF
Un investigador no comienza con una respuesta. Recorre un conjunto fijo de preguntas contra el registro público: qué se publicó, si algo de eso fue retractado, qué hay en ensayos, qué está aprobado y para quién, a cuántas personas concierne, qué recomienda el campo y qué está diciendo el campo en subvenciones y preprints. Este skill le da a un agente ese bucle como una línea de comandos, con una regla: nada regresa sin su fuente, su fecha y lo que no establece.
Investigación, no consejo médico. Los registros que devuelve esta herramienta describen documentos públicos. No interpretan nada para una persona, y el texto de indicación de una etiqueta no es la elegibilidad de ningún individuo.
1. Qué hace este skill
| Pregunta | Comando | Fuente |
|---|---|---|
| ¿Qué se ha publicado sobre esto? | pubmed "<término>" [--sort pub_date] | PubMed a través de NCBI E-utilities |
| ¿Qué dicen las revisiones sistemáticas y Cochrane? | reviews "<término>" | Subconjunto de revisión sistemática de PubMed más la revista Cochrane |
| Buscar con metadatos de acceso abierto y citas | epmc '<consulta Europe PMC>' | Europe PMC |
| ¿Con qué frecuencia se cita este DOI y es de acceso abierto? | cited <DOI> | Europe PMC |
| ¿Ha sido retractado o corregido este artículo? | retractions <DOI> [<DOI> ...] | Crossref, datos de Retraction Watch |
| ¿Qué es este DOI? | doi <DOI> | Crossref |
| ¿Cuándo aprobó la FDA por primera vez este fármaco? | approval <MARCA> | openFDA Drugs@FDA |
| ¿Qué dice la etiqueta actual de EE.UU.? | label <MARCA> [--sections ...] | openFDA label |
| ¿Cuándo autorizó la EMA este medicamento en la UE? | ema <FÁRMACO> [--file RUTA] | Agencia Europea de Medicamentos (informe JSON descargado sin conexión) |
| ¿Qué ensayos incluyen esta condición? | trials "<condición>" [--term X] [--status RECRUITING] | ClinicalTrials.gov v2 |
| ¿Qué contiene el registro para este ensayo? | trial <NCTId> | ClinicalTrials.gov v2 |
| ¿Qué es este preprint? | `preprint <biorxiv | medrxiv> ` |
| ¿Qué preprints de CF aparecieron en un período? | preprints <servidor> <YYYY-MM-DD> <YYYY-MM-DD> [--pattern] | bioRxiv / medRxiv |
| ¿Cómo se clasifica esta variante? | variants "<consulta ClinVar>" | ClinVar a través de NCBI E-utilities |
| ¿A quién financia los NIH sobre este tema? | grants "<texto>" [--fy 2025] | NIH RePORTER |
| ¿A quién financia UKRI sobre este tema? | ukri "<consulta>" [--limit 25] | UKRI Gateway to Research (alias: gtr) |
| ¿Cuál es el denominador de población para una región? | population <entidad> [--variable Count_Person] [--year YYYY] | Google Data Commons |
| Anotar variante con CADD, ClinVar, SnpEff, frecuencia gnomAD | myvariant "<consulta de variante>" [--limit 5] | MyVariant.info |
| Consultar frecuencias alélicas agregadas de gnomAD (rechazado por diseño) | gnomad <crom-pos-ref-alt> | gnomAD (solo acceso manual; siempre rechazado por la política del catálogo) |
| ¿Qué contiene OpenAlex para este trabajo (citas, retracción, OA)? | `openalex <DOI | ID>` |
| Buscar trabajos en OpenAlex | openalex-search "<consulta>" [--limit 10] | OpenAlex a través de OurResearch (clave requerida) |
| ¿Qué ubicaciones de acceso abierto y metadatos de licencia indexa Unpaywall? | unpaywall <DOI> | Unpaywall a través de OurResearch |
| ¿Qué grafo de citas y metadatos de artículos tiene Semantic Scholar? | s2 <DOI> | Semantic Scholar a través de Ai2 (alias: semantic-scholar) |
| Resolver el rastro completo del artículo (Crossref, Unpaywall OA, citas de Semantic Scholar) | paper-trail <DOI> | Crossref, Unpaywall, Semantic Scholar (alias: paper) |
| ¿Qué metadatos de compuestos, fase clínica y códigos ATC tiene ChEMBL? | `chembl <CHEMBL_ID | nombre> [--limit 5]` |
| ¿Qué ensayos de bioactividad cuantitativa (EC50, IC50, Ki, Kd) tiene ChEMBL? | `chembl-activity <CHEMBL_ID | nombre> [--target CHEMBL4051]` |
| ¿Qué tratabilidad del objetivo, pasivos de seguridad, puntuaciones de enfermedad o estadísticas de FAERS tiene Open Targets? | `opentargets <ID | consulta> [--limit 5]` |
| ¿Qué recuentos de citas de apoyo, contraste y mención tiene Scite para este DOI? | scite <DOI> [--rest] | Scite Pro MCP (scite-mcp) o REST público de cuota cero (--rest, scite-api) |
| Examinar hasta 500 DOIs por solicitud para recuentos de Smart Citation, retracciones y desglose por sección con costo de cuota cero | scite-batch <DOI...> [--papers] [--sections] | REST público de Scite (POST /tallies, POST /papers, POST /tallies/cited-by-sections; costo de cuota 0) |
| ¿Cómo se distribuyen las citas a este DOI entre las secciones de Introducción, Métodos, Resultados y Discusión? | scite-sections <DOI> | REST público de Scite (GET /tallies/cited-by-sections/{doi} + /tallies/{doi}; costo de cuota 0) |
| Leer extractos textuales completos y fragmentos de Smart Citation dentro de un artículo específico | scite-excerpts <DOI> "<consulta>" [--limit 5] | Scite Pro MCP Modo C (scite-mcp, en cuarentena en <untrusted_data>) |
| ¿Qué artículos relacionados recomienda Scite a partir de un DOI semilla? | scite-recommend <DOI> [--limit 5] | REST de Socio de Scite (GET /api_partner/recommend-papers/{doi}, limitado a 650/mes por el escudo REST) |
| Buscar literatura con recuentos de Smart Citation de Scite | scite-search "<consulta>" [--limit 5] | Scite Pro MCP (scite-mcp, OAuth/clave requerida) |
| Resolver un PMID de PubMed a un DOI con costo de cuota cero | scite-pmid <PMID> | REST público de Scite (GET /papers/resolve-pmid/{pmid}, costo de cuota 0) |
| Agregar recuentos de Smart Citation en hasta 100 DOIs con costo de cuota cero | scite-aggregate <DOI...> | REST público de Scite (POST /tallies/aggregate, costo de cuota 0) |
| Listar publicaciones citantes y recuentos de citas retractadas para un DOI objetivo con costo de cuota cero | scite-sources <DOI> [--limit 5] | REST público de Scite (GET /papers/sources/{target_doi}, costo de cuota 0) |
| Explorar la red de citas de 1 salto con clasificación de intención y fragmentos en cuarentena | scite-graph <DOI> [--direction both] [--limit 5] | Scite Pro MCP (citation_graph, en cuarentena en <untrusted_data>) |
| Leer el cuerpo completo paginado por DOI o PMID | `scite-fulltext <DOI | PMID> [--offset 0] [--length 8000]` |
| Buscar en los conjuntos de datos de Evidencia de Scite (UK MHRA, Patentes, 510(k), MAUDE, FAERS, Subvenciones, Fármacos, Ensayos) | scite-evidence <conjunto> "<consulta>" [--filter F] [--page 1] | Scite Pro MCP (search_mhra, search_patents, search_510k_summaries, etc., en cuarentena en <untrusted_data>) |
| Normalizar coordenadas de variantes HGVS o SPDI | `ncbi-variation <HGVS | SPDI>` |
| Consultar secuencia de proteínas UniProtKB, límites de dominio y variantes naturales | `uniprot <ACCESSION | consulta> [--limit 5]` |
| Consultar coordenadas genómicas de Ensembl, transcritos canónicos o consecuencias de rsID | `ensembl <rsID | ENSG |
| Buscar en NLM DailyMed Etiquetas de Producto Estructuradas (SPL) por nombre de fármaco | dailymed <FÁRMACO> [--limit 5] | Servicios web RESTful de DailyMed v2 (dailymed-web-services) |
| Leer términos o página legal antes de la entrada del catálogo | read-page <HTTPS_URL> [--out ARCHIVO] [--max-chars N] | Lectura iniciada por humanos de páginas de términos/política o PDFs bajo reglas de conducta de laboratorio |
| Buscar deterministicamente el contexto del exón de CFTR RefSeq NM_000492.4 y el dominio de UniProt P13569 | `cftr-context <variante | codón>` |
| Buscar deterministicamente la marca del modulador de CFTR, API, código molecular, NDA y contexto de seguridad de advertencia recuadrada de openFDA SPL | `cftr-modulator <marca | código |
| Buscar deterministicamente metadatos de la estructura de coordenadas Cryo-EM de CFTR | cftr-structure <pdb_id> [--list] | Metadatos deterministas de resolución estructural Cryo-EM de CFTR, ligandos, conformación y referencia sin red (alias: cftr-pdb) |
| ¿A qué puede acceder esta herramienta? | sources | el catálogo |
| ¿Qué dicen varias fuentes sobre un fármaco, variante o ensayo? | brief drug <MARCA>, brief variant "<consulta ClinVar>", brief trial <NCTId> | las fuentes anteriores, verificadas (ver Briefs) |
| ¿Existen todos los DOI, PMID e id de ensayo en esta nota? | cite-check <ARCHIVO> [--max-ids 30] [--scite-bulk] | Crossref, PubMed, ClinicalTrials.gov, más verificación masiva opcional de Scite de cuota cero (ver Cite-check) |
Lo que el código cliente se niega a hacer: alcanzar cualquier host no permitido en catalog.yaml (nunca se sigue una redirección en consultas de datos de API); presentarse como un navegador; omitir verificaciones de certificados; reintentar después de una negativa. Para la lectura de términos previa al catálogo, read-page aplica la estricta conducta de red del laboratorio: solo HTTPS, robots.txt primero a través de robots_allows, Crawl-delay respetado, robots no legible/negado aborta la búsqueda, redirecciones HTTPS del mismo sitio verificadas nuevamente contra robots, verificación de certificados activada, límite de cuerpo de 5 MB, solicitud única. No necesita una entrada de catálogo porque existe específicamente para una lectura iniciada por humanos de páginas de términos antes de que exista una entrada de catálogo, no para extracción de datos. El paquete tampoco llama nunca a un modelo de lenguaje y no consulta ninguna fuente que contenga datos a nivel individual.
2. Ejecútalo
pip install -r scripts/requirements.txt
python scripts/evidence_cli.py retractions 10.1038/ng.2745
python scripts/evidence_cli.py approval TRIKAFTA
python scripts/evidence_cli.py variants "CFTR[gene] AND F508del" --limit 5
python scripts/evidence_cli.py population country/USA
python scripts/evidence_cli.py cftr-context "F508del"
python scripts/evidence_cli.py cftr-context "621+1G->T" --json
python scripts/evidence_cli.py cftr-context "711+1G->T"
python scripts/evidence_cli.py cftr-modulator "Trikafta"
python scripts/evidence_cli.py cftr-modulator "VX-121" --json
python scripts/evidence_cli.py cftr-structure "8EIQ"
python scripts/evidence_cli.py cftr-structure "8EIZ"
python scripts/evidence_cli.py cftr-structure "7SV7"
python scripts/evidence_cli.py cftr-structure "7SVR"
python scripts/evidence_cli.py cftr-structure "6O2P"
python scripts/evidence_cli.py cftr-pdb --list
Banderas en cada comando: --json para un objeto JSON por registro, --ledger RUTA para añadir registros a un libro de evidencia JSONL. Código de salida 0 cuando cada registro es found o not_found; 3 cuando alguno es blocked, rate_limited o error.
Briefs
Un brief hace una pregunta a varias fuentes a través del mismo cliente, por lo que la puerta de catálogo, la regulación de velocidad, el presupuesto y el disyuntor siguen aplicando. Imprime cada registro que cada fuente devolvió, el estado de cada fuente, los campos que comparó y un bloque corto de verificaciones cruzadas.
| Receta | Ejecuta | Verificaciones cruzadas |
|---|---|---|
brief drug TRIKAFTA | approval, label, trials por término (5), pubmed para la marca (5) | estado de cada fuente; que el año de vigencia de la etiqueta no sea anterior al año de primera aprobación de Drugs@FDA; escaneo de literatura y retracción de OpenAlex; límite de seguridad del modulador de CFTR (AH-4) y verificación cruzada primaria de PDB |
brief variant "CFTR[gene] AND F508del" | variants, pubmed para el mismo término (5) | estado de cada fuente; cuántos registros de ClinVar coincidieron, con clasificación y estado de revisión para cada uno |
brief trial NCT05033080 | trial, pubmed para el id de NCT (5) | estado de cada fuente; el id del registro del ensayo; qué artículos devueltos nombran el ensayo en su título |
Cómo leer las verificaciones cruzadas:
PASS: los valores coinciden, o la fuente respondió. No es un hallazgo sobre el fármaco, la variante o el ensayo.CHECK: una persona debe revisar. Una fuente no respondió; varios registros de ClinVar coincidieron (todos se listan, ninguno se selecciona); o la fecha de vigencia de la etiqueta es anterior a la primera aprobación del fármaco, lo cual no puede ser correcto, por lo que uno de los dos registros es inconsistente. La fecha de vigencia de una etiqueta es su revisión más reciente, por lo que un año de etiqueta igual o posterior al año de aprobación es esperado y esPASS.NOT STATED: una fuente no proporcionó el valor, por lo que no se comparó nada. Los registros de PubMed no contienen resumen ni texto completo, por lo que un artículo que no nombra el ensayo en su título esNOT STATED, no "no lo menciona".
Lo que un brief no hace: no añade ningún hecho propio. Cada valor que imprime se copia de un campo de registro o es un recuento etiquetado o diferencia de años, y un valor faltante se imprime como not stated. Una fuente bloqueada, limitada por velocidad o fallida no detiene las otras fuentes; se lista con su estado y el código de salida es 3. Con --json, los registros vienen primero y un último objeto, {"brief": ...}, contiene las fuentes, campos, verificaciones cruzadas y pie de página; --ledger almacena solo los registros. Cada brief termina con: Investigación, no consejo médico. Un brief lista documentos públicos; no interpreta nada para una persona.
Cite-check
Cada cita pasa por el registro de evidencia, y una que no se pueda resolver se elimina o se corrige desde una fuente, nunca se repara de memoria. cite-check ARCHIVO lo aplica a una nota completa. Encuentra cada DOI, cada id de PubMed escrito como PMID 123, PMID: 123 o una URL pubmed/123, y cada id de NCT, elimina duplicados (conservando la línea de primera ocurrencia) y busca cada uno con el código de búsqueda única: doi para un DOI, una búsqueda en PubMed en el campo [pmid] para un PMID (dos solicitudes), trial para un id de NCT. El cliente habitual aplica: puerta de catálogo, regulación de velocidad, presupuesto, disyuntor, contabilidad.
| Línea | Significado |
|---|---|
PASS | La fuente devolvió un registro; su título y año o fechas se imprimen, not stated donde falten |
NOT FOUND | La fuente respondió que no existe tal id. Elimínalo o corrígelo desde una fuente; nunca adivines |
UNRESOLVED | La búsqueda fue bloqueada, limitada por velocidad o falló. No resuelto no es lo mismo que inexistente |
TITLE PASS / TITLE CHECK | Una frase citada o enfatizada de cuatro o más palabras en la misma línea comparte al menos 0.6 (o menos) de las palabras del lado más corto con el título del registro, ignorando mayúsculas, puntuación y palabras vacías, y su presencia en el cuerpo ya se ha confirmado (TITLE PASS). De lo contrario, una persona debe verificar (TITLE CHECK). |
Regla: nunca reemplazar un PMID o NCT por otro a menos que el doi o trial lo devuelva explícitamente como un reemplazo autorizado. Si doi no puede resolver el DOI, se marca como NOT FOUND o UNRESOLVED; no se adivina. Después de la verificación de citas, se imprime un marcador de fin de nota.
Registro de la sesión
Cada ejecución de evidence_cli.py escribe en stderr un registro plano de cada acción: la fuente, el comando, la hora, el estado y el tiempo transcurrido. --ledger añade los objetos de registro a un archivo JSONL que puede ser una ruta absoluta o relativa (el directorio debe existir). Cuando se usa --json, el objeto JSON de cada registro se imprime en stdout, y --ledger almacena los mismos objetos. Un registro es un dict con claves record, source, retrieved, status, note; record contiene dicts de respuesta y ledger_path contiene la ruta del archivo; los registros en el libro no están anidados. Una sesión que produce al menos un registro de error, bloqueo o límite de velocidad imprime una línea final de resumen.
3. Catálogo (catalog.yaml)
El catálogo es un mapeo de nombres de fuente a entradas de host. Cada entrada contiene:
host: el nombre de host al que conectarse (p. ej.,eutils.ncbi.nlm.nih.gov). "Resuelve" significa que el código cliente realiza una conexión HTTP con verificación de certificados a esa dirección; cualquier otra cosa es un error de catálogo.policy: el régimen de acceso (ver más abajo).doc_url(opcional): una URL de documentación o página de términos del servicio, que el agente puede usar para comprender los límites.rate_limit(opcional, solo parafree): por ejemplo, 3 solicitudes por segundo. El cliente implementa un token bucket.budget(opcional, solo parafree): por ejemplo, 10 solicitudes por minuto. Otro token bucket.
Régimen de acceso del catálogo:
| Política | Significado |
|---|---|
free | Sin clave requerida; el cliente respeta rate_limit y budget. |
key | Se requiere una clave API de esa fuente; el cliente respeta el límite de velocidad y el presupuesto. |
refused | El código cliente se niega a consultar esta fuente; solo se permite si un humano ha leído y aceptado los términos (ver read-page). |
prohibited | No se puede consultar en ningún momento; el cliente produce un error. |
El catálogo del dominio CF actual se proporciona en catalog.yaml (consultar la versión más reciente del repositorio). Los hosts que no están en el catálogo no se pueden alcanzar. Esto incluye todos los hosts internos que contienen datos de pacientes, EHRs, bases de datos institucionales.
Reglas de conducta de red
- Solo HTTPS. Sin HTTP sin cifrar.
- No presentarse como un navegador. El User-Agent de la biblioteca
requestsespython-requests/X.Y.Z, mostrando que la consulta es automatizada. - Sin tokens de portador, cookies ni huellas digitales de navegador.
- Los certificados TLS siempre se verifican.
- Sin reintentos automáticos después de un error HTTP 429 (Demasiadas solicitudes), 403 (Prohibido) o 451 (No disponible por razones legales).
- Sin caché de paquetes ni reenvío a servidores proxy.
- Sin redirecciones: el código cliente no sigue redirecciones HTTP en consultas de datos de API (redirecciones 301/302). Esto evita que el agente acceda accidentalmente a un host fuera del catálogo. Los redireccionamientos solo se permiten en
read-pagepara términos y son validados contra robots.txt. - Límite de tamaño de respuesta: 10 MB para consultas de datos; 5 MB para lecturas de páginas de términos. Se trunca si se excede.
- Tiempo de espera: 30 segundos por solicitud.
Leer página (read-page)
El comando read-page es una puerta de enlace para leer páginas de términos o PDFs cuando el agente necesita comprender los términos de servicio de una fuente antes de que esté en el catálogo. Este comando solo se puede ejecutar después de que un humano lo haya iniciado y confirmado explícitamente que ha leído los términos. El comando no agrega ninguna entrada de catálogo; solo devuelve el texto de la página. El agente nunca debe actuar sobre datos de read-page sin confirmación humana.
4. Flujo de trabajo del agente
- El usuario pregunta: "¿Cuál es la evidencia más reciente sobre la eficacia de Trikafta en pacientes con F508del?"
- El agente interpreta la pregunta como una pregunta de investigación que requiere evidencia de fuentes múltiples.
- El agente ejecuta los comandos relevantes en orden, respetando las reglas de velocidad y presupuesto del catálogo.
- Cada respuesta se devuelve como un registro JSON estructurado con metadatos de fuente.
- El agente presenta los hallazgos al usuario, citando las fuentes y notando cualquier discrepancia o limitación.
- El usuario puede solicitar más detalles o un análisis diferente.
5. Consideraciones
- Este skill no es un consejo médico. No interprete los resultados como un diagnóstico o recomendación de tratamiento.
- Todas las fuentes son públicas. No se accede a bases de datos internas de pacientes o EHRs.
- Las limitaciones de velocidad y presupuesto protegen a las fuentes de sobrecarga. El agente debe ser consciente de esto y espaciar las consultas si es necesario.
- La verificación de citas (
cite-check) es una herramienta para verificar la integridad de las referencias en notas o informes generados por el agente. Ayuda a prevenir la alucinación de referencias. - Los briefs proporcionan una visión rápida de múltiples fuentes sobre un solo tema, ideal para la investigación inicial.
- El catálogo (
catalog.yaml) es el guardián de qué fuentes se pueden consultar. Cualquier modificación del catálogo requiere aprobación humana.
6. Ejemplos
Aquí hay ejemplos adicionales de flujos de trabajo completos:
Flujo de trabajo de fármaco
# 1. Obtener la fecha de aprobación de Trikafta
python scripts/evidence_cli.py approval TRIKAFTA --json
# 2. Obtener la etiqueta actual
python scripts/evidence_cli.py label TRIKAFTA --sections 1.1,5.1,14 --json
# 3. Buscar ensayos clínicos relacionados
python scripts/evidence_cli.py trials "Trikafta" --status RECRUITING --json
# 4. Buscar literatura en PubMed
python scripts/evidence_cli.py pubmed "Trikafta cystic fibrosis" --limit 5 --json
# 5. Ejecutar un brief para resumir
python scripts/evidence_cli.py brief drug TRIKAFTA --json
Flujo de trabajo de variante
# 1. Buscar la variante F508del en ClinVar
python scripts/evidence_cli.py variants "CFTR[gene] AND F508del" --limit 10 --json
# 2. Obtener contexto estructural de CFTR
python scripts/evidence_cli.py cftr-context "F508del" --json
# 3. Buscar literatura en PubMed
python scripts/evidence_cli.py pubmed "CFTR F508del" --limit 10 --json
# 4. Obtener información del modulador de CFTR
python scripts/evidence_cli.py cftr-modulator "Trikafta" --json
# 5. Ejecutar un brief para resumir
python scripts/evidence_cli.py brief variant "CFTR[gene] AND F508del" --json
7. Integración con MCP (Model Context Protocol)
Este skill está diseñado para integrarse con sistemas de agente que soportan MCP. Los comandos CLI se pueden envolver como herramientas MCP, permitiendo que los agentes los invoquen directamente con argumentos estructurados.
Herramientas MCP expuestas
Cada fila en la tabla anterior corresponde a una herramienta MCP que el agente puede llamar. El servidor MCP traduce la llamada a un comando CLI y devuelve la salida estructurada (JSON).
Esquema de herramientas MCP
Para cada comando, el esquema de la herramienta incluye:
name: el nombre del comando (p. ej.,pubmed,reviews,variants).description: una breve descripción de lo que hace.inputSchema: un objeto JSON Schema que define los parámetros de entrada (término de búsqueda, DOI, límite, etc.).
Implementación de ejemplo del servidor MCP
# Pseudocódigo de implementación del servidor MCP
from mcp.server import Server, NotificationOptions
from mcp.server.models import InitializationOptions
import mcp.server.stdio
import mcp.types as types
async def handle_call_tool(name: str, arguments: dict) -> list[types.TextContent]:
import subprocess
import json
# Construir el comando CLI a partir de los argumentos
cmd = ["python", "scripts/evidence_cli.py", name] + [f"{k}={v}" if k.startswith("--") else v for k, v in arguments.items()]
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode != 0:
return [types.TextContent(type="text", text=f"Error: {result.stderr}")]
return [types.TextContent(type="text", text=result.stdout)]
8. Desarrollo y contribución
Configuración del entorno de desarrollo
git clone <repositorio>
cd <directorio>
pip install -r scripts/requirements.txt
Ejecución de pruebas
python -m pytest tests/
Añadiendo nuevas fuentes
- Agregar una nueva fila a la tabla en la sección 1.
- Implementar el comando CLI en
scripts/evidence_cli.py. - Agregar el host al
catalog.yamlcon la política adecuada. - Agregar la herramienta MCP correspondiente.
- Escribir pruebas para la nueva fuente.
- Actualizar la documentación.
9. Limitaciones
- Este skill solo accede a fuentes públicas. No reemplaza la consulta a bases de datos privadas o datos de pacientes.
- La velocidad y el presupuesto de las consultas pueden limitar el alcance de la investigación.
- Algunas fuentes pueden requerir claves API (p. ej., OpenAlex), que el usuario debe proporcionar.
- El skill no interpreta hallazgos; solo recupera y estructura registros.
- La verificación de citas solo verifica la existencia de los IDs; no verifica la precisión del contenido citado.
10. Preguntas frecuentes
P: ¿Puedo usar este skill con cualquier agente?
R: Sí, siempre que el agente soporte la ejecución de comandos CLI o MCP.
P: ¿Necesito una clave API?
R: Para la mayoría de las fuentes, no. OpenAlex requiere una clave.
P: ¿Qué pasa si una fuente está caída?
R: El cliente marca la consulta como error y continúa con otras fuentes. El código de salida será 3.
P: ¿Puedo usar esto para diagnosticar a un paciente?
R: No. Esta herramienta es para investigación, no para diagnóstico. Los registros no interpretan nada para una persona.
P: ¿Cómo sé si un DOI es válido?
R: Usa cite-check para verificar la existencia de DOIs en una nota.
11. Referencias
- NCBI E-utilities
- Europe PMC RESTful API
- ClinicalTrials.gov API v2
- openFDA
- ClinVar
- bioRxiv / medRxiv API
- Semantic Scholar API
- Scite API
- OpenAlex API
- Google Data Commons
- MyVariant.info
- ChEMBL
- Open Targets
- UniProt
- Ensembl
- DailyMed
- GeneBe
- CFTR2
- Drugs@FDA
- NIH RePORTER
- UKRI Gateway to Research
- European Medicines Agency
- Unpaywall
- OurResearch
Licencia
Este proyecto se proporciona bajo la licencia MIT. Ver el archivo LICENSE para más detalles.