Prowl
70/100
prowl
Benchmarked Sep 24, 2026

BioLink API

API integration layer for linked biological objects. __Source:__ https://github.com/biolink/biolink-api/

api api_benchmark public
Benchmark Your API

Score Breakdown

Auth Simplicity10/10
Parseability9/10
First-Try Success8/10
Latency7/10
Consistency7/10
Token Efficiency7/10
Documentation6/10
Error Clarity3/10

Benchmark Analysis Log

Full LLM thinking from the 4-phase benchmark pipeline.

Analyze
{
  "service_type": "rest_api",
  "base_url": "https://api.monarchinitiative.org",
  "auth_method": "none",
  "auth_config": {},
  "endpoints": [
    {
      "path": "/v3/api/association",
      "method": "GET",
      "purpose": "Retrieve all associations for a given entity, or between two entities",
      "params": {
        "category": {"type": "array", "required": false},
        "subject": {"type": "array", "required": false},
        "subject_category": {"type": "array", "required": false},
        "subject_namespace": {"type": "array", "required": false},
        "subject_taxon": {"type": "array", "required": false},
        "predicate": {"type": "array", "required": false},
        "object": {"type": "array", "required": false},
        "object_category": {"type": "array", "required": false},
        "object_namespace": {"type": "array", "required": false},
        "object_taxon": {"type": "array", "required": false},
        "entity": {"type": "array", "required": false},
        "primary_knowledge_source": {"type": "array", "required": false},
        "direct": {"type": "boolean", "required": false},
        "facet_fields": {"type": "array", "required": false},
        "facet_queries": {"type": "array", "required": false},
        "filter_queries": {"type": "array", "required": false},
        "compact": {"type": "boolean", "required": false},
        "query": {"type": "string", "required": false},
        "format": {"type": "string", "required": false},
        "limit": {"type": "integer", "required": false},
        "offset": {"type": "integer", "required": false}
      },
      "response_format": "json",
      "is_primary": true
    },
    {
      "path": "/v3/api/case-phenotype-matrix/{disease_id}",
      "method": "GET",
      "purpose": "Returns a matrix of cases (patients) and their phenotypes for a given disease",
      "params": {
        "disease_id": {"type": "string", "required": true},
        "direct": {"type": "boolean", "required": false}
      },
      "response_format": "json",
      "is_primary": false
    }
  ],
  "pricing_model": {
    "type": "free_tier",
    "details": {},
    "free_tier": null,
    "paid_tiers": []
  },
  "rate_limits": {
    "rpm": null,
    "tpm": null,
    "daily": null,
    "concurrent": null
  },
  "capabilities": [
    "knowledge_graph",
    "gene_disease_phenotype_associations",
    "case_phenotype_matrix",
    "cross_species_integration"
  ],
  "agent_readiness": {
    "supports_x402": false,
    "supports_streaming": false,
    "has_sandbox": false,
    "sdks": [],
    "agent_auth_methods": ["public"]
  }
}
Plan
```json
{
  "tests": [
    {
      "name": "root_connectivity",
      "endpoint": "/",
      "method": "GET",
      "headers": {},
      "payload": null,
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns API root metadata confirming service is reachable",
      "metrics": ["latency", "status_code"],
      "validation": {"field": null, "type": "any"}
    },
    {
      "name": "version_info",
      "endpoint": "/v3/api/version",
      "method": "GET",
      "headers": {},
      "payload": null,
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns the deployed monarch-kg release version metadata",
      "metrics": ["latency", "status_code"],
      "validation": {"field": null, "type": "object"}
    },
    {
      "name": "search_phenotype_happy",
      "endpoint": "/v3/api/search",
      "method": "GET",
      "headers": {},
      "payload": null,
      "query": {"q": "Fanconi anemia", "limit": 10},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns SearchResults with items list for a known disease label",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "items", "type": "array", "min_length": 1}
    },
    {
      "name": "autocomplete_happy",
      "endpoint": "/v3/api/autocomplete",
      "method": "GET",
      "headers": {},
      "payload": null,
      "query": {"q": "fanc"},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns SearchResults with autocomplete suggestions",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "items", "type": "array", "min_length": 1}
    },
    {
      "name": "entity_by_id_happy",
      "endpoint": "/v3/api/entity/MONDO:0019391",
      "method": "GET",
      "headers": {},
      "payload": null,
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns Node entity details with association_counts for the given MONDO id",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "id", "type": "string"}
    },
    {
      "name": "association_happy",
      "endpoint": "/v3/api/association",
      "method": "GET",
      "headers": {},
      "payload": null,
      "query": {
        "subject": "HGNC:4851",
        "category": "biolink:CausalGeneToDiseaseAssociation",
        "limit": 5
      },
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns AssociationResults with items for gene->disease associations",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "items", "type": "array", "min_length": 0}
    },
    {
      "name": "association_compact_format",
      "endpoint": "/v3/api/association",
      "method": "GET",
      "headers": {},
      "payload": null,
      "query": {
        "entity": "MONDO:0007078",
        "compact": true,
        "limit": 5
      },
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns CompactAssociationResults with compact items",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "items", "type": "array", "min_length": 0}
    },
    {
      "name": "case_phenotype_matrix_happy",
      "endpoint": "/v3/api/case-phenotype-matrix/MONDO:0007078",
      "method": "GET",
      "headers": {},
      "payload": null,
      "query": {"direct": true, "limit": 50},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns CasePhenotypeMatrixResponse with disease_id, total_cases, total_phenotypes",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "disease_id", "type": "string"}
    },
    {
      "name": "histopheno_happy",
      "endpoint": "/v3/api/histopheno/MONDO:0019391",
      "method": "GET",
      "headers": {},
      "payload": null,
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns HistoPheno with items array of body-system bins",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "items", "type": "array", "min_length": 1}
    },
    {
      "name": "mappings_happy",
      "endpoint": "/v3/api/mappings",
      "method": "GET",
      "headers": {},
      "payload": null,
      "query": {"entity_id": "MONDO:0007078", "limit": 5},
      "expected_status": 200,
      "intent": "happy_path",
      "expected_behavior": "Returns MappingResults with SSSOM mapping items",
      "metrics": ["latency", "accuracy", "status_code"],
      "validation": {"field": "items", "type": "array", "min_length": 0}
    },
    {
      "name": "semsim_compare_post_happy",
      "endpoint": "/v3/api/semsim/compare",
      "method": "POST",
      "headers": {"Content-Type": "application/json"},
      "payload": {
        "subjects": ["MP:0010771", "MP:0
Execute

19/20 tests passed

TestEndpointStatusLatency
root_connectivityGET /30724ms
version_infoGET /v3/api/version20013ms
search_phenotype_happyGET /v3/api/search200302ms
autocomplete_happyGET /v3/api/autocomplete200311ms
entity_by_id_happyGET /v3/api/entity/MONDO:0019391200123ms
association_happyGET /v3/api/association200412ms
association_compact_formatGET /v3/api/association20040ms
case_phenotype_matrix_happyGET /v3/api/case-phenotype-matrix/MONDO:00070782001366ms
histopheno_happyGET /v3/api/histopheno/MONDO:001939120018ms
mappings_happyGET /v3/api/mappings20049ms
Interpret
{"model": "deepseek", "data": {"overall": 72, "dimensions": {"token_efficiency": 7.0, "first_try_success": 8.0, "response_parseability": 9.0, "error_clarity": 3.0, "doc_quality": 6.0, "auth_simplicity": 10.0, "latency": 7.0, "consistency": 7.0}, "pricing_normalized": {"cost_per_1k_requests": 0.0, "cost_per_1m_input_tokens": null, "cost_per_1m_output_tokens": null, "free_tier_requests": null, "estimated_monthly_cost_light": 0.0, "estimated_monthly_cost_heavy": 0.0}, "issues": [{"severity": "high", "detail": "Validation is silently ignored: invalid enum category, limit exceeding max, and negative offset all returned 200 with default results instead of 422. An agent cannot tell its filters were dropped, leading to wrong conclusions from unfiltered data.", "endpoint": "/v3/api/association"}, {"severity": "medium", "detail": "Root endpoint returns 307 redirect instead of 200; agents may mishandle redirects and there is no explicit API discovery at /", "endpoint": "/"}, {"severity": "medium", "detail": "No auth and no rate-limit headers visible; heavy usage may be throttled without documented limits", "endpoint": "/v3/api/*"}, {"severity": "low", "detail": "Some happy-path endpoints return empty/null previews (e.g. /ground), and case-phenotype-matrix latency exceeds 1.3s", "endpoint": "/v3/api/case-phenotype-matrix/{disease_id}"}], "recommendations": ["Return 4xx (400/422) with structured error bodies when query params are invalid (bad enum, limit > max, negative offset) instead of silently falling back to defaults", "Add a 200 JSON discovery payload at / instead of a 307 redirect", "Document rate limits and include RateLimit headers on responses", "Publish a complete OpenAPI spec with per-parameter constraints, enums, and example requests/responses", "Provide structured error schema (error, detail, field-level errors) consistently across all endpoints", "Optimize case-phenotype-matrix latency below 500ms where possible"]}}

Agent Readiness

x402 Payments
Not supported
Streaming
No
Sandbox
None
Agent Auth
public
SDKs
None listed
MCP Support
No

Embed your Prowl badge

Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.

Prowl agent-readiness badge
<a href="https://prowl.world/service/biolink-api">
  <img src="https://prowl.world/badge/biolink-api.svg" height="56" alt="Agent-readiness on Prowl">
</a>

Options: ?style=light|dark · ?size=sm|md · ?variant=certified (claimed + DNS-verified only) · badge generator with preview

Want the full interactive view?

See operational metrics, LLM evaluations, agent readiness, and more.

Open in Dashboard