Scored drug-market and company safety briefs from openFDA, FDA, BLS and Clinical
Scored drug-market and company safety briefs from openFDA, FDA, BLS and ClinicalTrials.gov: recalls, adverse events, approvals, trial pipelines, shortages, device safety, warning letters and drug prices, for the US market and for Pfizer, Lilly and J&J. Each is a 0-100 score with drivers and citations. POST /v1/brief with {vertical}. Research signal, not medical or investment advice.
Answeringour last check, 2026-10-10
1 of 1checks answered this week
912 msmedian answer time
$0.005listed price per call
$0.005price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://agent.pocket.network/v1/pmic-pharma-signals
| Category | Company and compliance |
|---|---|
| Provider host | agent.pocket.network |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 43 from 2 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-10 | valid payment request | 402 | $0.005 | 912 ms |
Example input (from the provider)
{
"body": {
"entity_id": "lly",
"horizon": "365d",
"vertical": "company-safety"
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"description": "The body of POST /v1/brief; company-safety and clinical-pipeline also need entity_id. The other routes take JSON bodies too: /v1/verticals takes {}; /v1/overview takes entity_id and horizon; /v1/signals takes source_id, horizon, sort, direction, min_confidence and limit; /v1/signal and /v1/explain take series_id; /v1/catalog takes entity_id and q; /v1/events takes entity_id, event_type, severity, since and limit.",
"properties": {
"entity_id": {
"description": "The drug maker, for the company verticals.",
"enum": [
"pfe",
"lly",
"jnj"
],
"type": "string"
},
"horizon": {
"description": "The window the trend is measured over.",
"enum": [
"7d",
"30d",
"90d",
"365d"
],
"type": "string"
},
"vertical": {
"description": "Which brief to score.",
"enum": [
"drug-market",
"company-safety",
"clinical-pipeline",
"drug-shortages",
"device-safety",
"drug-prices",
"fda-enforcement"
],
"type": "string"
}
},
"required": [
"vertical"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST",
"PUT",
"PATCH"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"data": {
"description": "The answer to POST /v1/brief. score, label and trend_basis are null on insufficient_data briefs; entity is an object on company briefs. Errors return {error: {code, message}} with HTTP 400; other routes return their own JSON objects (see the openapi spec).",
"properties": {
"citations": {
"items": {
"properties": {
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"confidence": {
"properties": {
"label": {
"type": "string"
},
"score": {
"type": "integer"
}
},
"type": "object"
},
"drivers": {
"items": {
"type": "object"
},
"type": "array"
},
"entity": {
"description": "The company ({entity_id, name, ...}) on company briefs; absent otherwise."
},
"horizon": {
"type": "string"
},
"inputs": {
"items": {
"type": "object"
},
"type": "array"
},
"label": {
"description": "The vertical's label for the score, or null with no score."
},
"pack_version": {
"type": "string"
},
"question": {
"type": "string"
},
"recent_events": {
"items": {
"type": "object"
},
"type": "array"
},
"risk_flags": {
"items": {
"type": "string"
},
"type": "array"
},
"score": {
"description": "Integer 0-100, or null when status is insufficient_data."
},
"service": {
"type": "string"
},
"status": {
"enum": [
"ok",
"insufficient_data"
],
"type": "string"
},
"summary": {
"type": "string"
},
"title": {
"type": "string"
},
"trend": {
"type": "string"
},
"trend_basis": {
"description": "score_history, input_trends, or null when there is no trend."
},
"vertical": {
"type": "string"
},
"watch": {
"items": {
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"portal": {
"properties": {
"provenance": {
"const": "third-party-supplier"
},
"schemaCheck": {
"enum": [
"passed",