Skip to main content
Glama

read_session

Read-onlyIdempotent

Retrieve recorded search PMIDs, cached article payloads, session summaries, artifacts, and durable search runs for a PubMed session.

Instructions

Read session data through one schema-exact discriminated request.

Actions:

  • pmids: return PMIDs for one recorded search

  • article: return one cached article payload

  • summary: return current session summary and optional history

  • list_artifacts: list persistent MCP output artifact manifests

  • artifact: read one persistent artifact by artifact_id or artifact_uri

  • search_runs: list durable unified_search run envelopes

  • search_run: read one run by stable run_id

  • replay_search: return credential-free unified_search replay arguments

Each action accepts only its own fields. For remote artifact reads, select an artifact_id or artifact_uri locator and use artifact_file plus offset/max_chars to page through large files. Local paths remain redacted unless both include_local_paths and the server setting allow them.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
requestYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed87 schema fields changedv0.7.7
    • addedInput schema / $defs / ArtifactIdLocator / properties / kind / anyOf
      Added value: +[
      +  {
      +    "const": "artifact_id",
      +    "title": "Kind",
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^[ \\t\\r\\n]*(?:[aA][rR][tT][iI][fF][aA][cC][tT]_[iI][dD])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / ArtifactIdLocator / properties / kind / const
      Removed value: -"artifact_id"
    • removedInput schema / $defs / ArtifactIdLocator / properties / kind / type
      Removed value: -"string"
    • addedInput schema / $defs / ArtifactUriLocator / properties / kind / anyOf
      Added value: +[
      +  {
      +    "const": "artifact_uri",
      +    "title": "Kind",
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^[ \\t\\r\\n]*(?:[aA][rR][tT][iI][fF][aA][cC][tT]_[uU][rR][iI])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / ArtifactUriLocator / properties / kind / const
      Removed value: -"artifact_uri"
    • removedInput schema / $defs / ArtifactUriLocator / properties / kind / type
      Removed value: -"string"
    • addedInput schema / $defs / SessionArticleRequest / properties / action / anyOf
      Added value: +[
      +  {
      +    "const": "article",
      +    "title": "Action",
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^[ \\t\\r\\n]*(?:[aA][rR][tT][iI][cC][lL][eE])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionArticleRequest / properties / action / const
      Removed value: -"article"
    • removedInput schema / $defs / SessionArticleRequest / properties / action / type
      Removed value: -"string"
    • addedInput schema / $defs / SessionArticleRequest / properties / pmid / description
      Added value: +"Complete identifier string; optional identifier prefix, official article URL, or inline backticks. No numbers, foreign hosts, URL queries/fragments or partial identifiers."
    • addedInput schema / $defs / SessionArticleRequest / properties / pmid / examples
      Added value: +[
      +  "33053718",
      +  "PMID:33053718",
      +  "https://pubmed.ncbi.nlm.nih.gov/33053718/"
      +]
    • addedInput schema / $defs / SessionArticleRequest / properties / pmid / format
      Added value: +"pubmed-pmid"
    • changedInput schema / $defs / SessionArticleRequest / properties / pmid / maxLength
      Previous value: -20New value: +512
    • addedInput schema / $defs / SessionArticleRequest / properties / pmid / minLength
      Added value: +1
    • removedInput schema / $defs / SessionArticleRequest / properties / pmid / pattern
      Removed value: -"^[1-9][0-9]{0,19}$"
    • addedInput schema / $defs / SessionArticleRequest / properties / pmid / x-pubmed-input
      Added value: +"pmid"
    • addedInput schema / $defs / SessionArtifactRequest / properties / action / anyOf
      Added value: +[
      +  {
      +    "const": "artifact",
      +    "title": "Action",
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^[ \\t\\r\\n]*(?:[aA][rR][tT][iI][fF][aA][cC][tT])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionArtifactRequest / properties / action / const
      Removed value: -"artifact"
    • removedInput schema / $defs / SessionArtifactRequest / properties / action / type
      Removed value: -"string"
    • addedInput schema / $defs / SessionArtifactRequest / properties / include_local_paths / anyOf
      Added value: +[
      +  {
      +    "default": false,
      +    "title": "Include Local Paths",
      +    "type": "boolean"
      +  },
      +  {
      +    "description": "Explicit true/false text, ignoring ASCII case and surrounding whitespace.",
      +    "pattern": "^[ \\t\\r\\n]*(?:[tT][rR][uU][eE]|[fF][aA][lL][sS][eE])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionArtifactRequest / properties / include_local_paths / type
      Removed value: -"boolean"
    • addedInput schema / $defs / SessionArtifactRequest / properties / locator / anyOf
      Added value: +[
      +  {
      +    "discriminator": {
      +      "mapping": {
      +        "artifact_id": "#/$defs/ArtifactIdLocator",
      +        "artifact_uri": "#/$defs/ArtifactUriLocator"
      +      },
      +      "propertyName": "kind"
      +    },
      +    "oneOf": [
      +      {
      +        "$ref": "#/$defs/ArtifactIdLocator"
      +      },
      +      {
      +        "$ref": "#/$defs/ArtifactUriLocator"
      +      }
      +    ],
      +    "title": "Locator"
      +  },
      +  {
      +    "contentMediaType": "application/json",
      +    "contentSchema": {
      +      "discriminator": {
      +        "mapping": {
      +          "artifact_id": "#/$defs/ArtifactIdLocator",
      +          "artifact_uri": "#/$defs/ArtifactUriLocator"
      +        },
      +        "propertyName": "kind"
      +      },
      +      "oneOf": [
      +        {
      +          "$ref": "#/$defs/ArtifactIdLocator"
      +        },
      +        {
      +          "$ref": "#/$defs/ArtifactUriLocator"
      +        }
      +      ],
      +      "title": "Locator"
      +    },
      +    "description": "One JSON-encoded container; the decoded value must satisfy contentSchema.",
      +    "maxLength": 1000000,
      +    "type": "string"
      +  },
      +  {
      +    "description": "One JSON code fence; after removing the fence, decode JSON and validate against x-pubmed-decodedSchema.",
      +    "maxLength": 1000000,
      +    "pattern": "^\\s*```(?:[jJ][sS][oO][nN])?[ \\t]*\\r?\\n[\\s\\S]*\\r?\\n```\\s*$",
      +    "type": "string",
      +    "x-pubmed-decodedSchema": {
      +      "discriminator": {
      +        "mapping": {
      +          "artifact_id": "#/$defs/ArtifactIdLocator",
      +          "artifact_uri": "#/$defs/ArtifactUriLocator"
      +        },
      +        "propertyName": "kind"
      +      },
      +      "oneOf": [
      +        {
      +          "$ref": "#/$defs/ArtifactIdLocator"
      +        },
      +        {
      +          "$ref": "#/$defs/ArtifactUriLocator"
      +        }
      +      ],
      +      "title": "Locator"
      +    },
      +    "x-pubmed-encoding": "fenced-json"
      +  }
      +]
    • removedInput schema / $defs / SessionArtifactRequest / properties / locator / discriminator
      Removed value: -{
      -  "mapping": {
      -    "artifact_id": "#/$defs/ArtifactIdLocator",
      -    "artifact_uri": "#/$defs/ArtifactUriLocator"
      -  },
      -  "propertyName": "kind"
      -}
    • removedInput schema / $defs / SessionArtifactRequest / properties / locator / oneOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/ArtifactIdLocator"
      -  },
      -  {
      -    "$ref": "#/$defs/ArtifactUriLocator"
      -  }
      -]
    • addedInput schema / $defs / SessionArtifactRequest / properties / max_chars / anyOf
      Added value: +[
      +  {
      +    "default": 200000,
      +    "maximum": 200000,
      +    "minimum": 1,
      +    "title": "Max Chars",
      +    "type": "integer"
      +  },
      +  {
      +    "description": "ASCII decimal integer; the integer branch's bounds apply after conversion.",
      +    "maxLength": 32,
      +    "pattern": "^[ \\t\\r\\n]*-?(?:0|[1-9][0-9]*)[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionArtifactRequest / properties / max_chars / maximum
      Removed value: -200000
    • removedInput schema / $defs / SessionArtifactRequest / properties / max_chars / minimum
      Removed value: -1
    • removedInput schema / $defs / SessionArtifactRequest / properties / max_chars / type
      Removed value: -"integer"
    • addedInput schema / $defs / SessionArtifactRequest / properties / offset / anyOf
      Added value: +[
      +  {
      +    "default": 0,
      +    "maximum": 2000000000,
      +    "minimum": 0,
      +    "title": "Offset",
      +    "type": "integer"
      +  },
      +  {
      +    "description": "ASCII decimal integer; the integer branch's bounds apply after conversion.",
      +    "maxLength": 32,
      +    "pattern": "^[ \\t\\r\\n]*-?(?:0|[1-9][0-9]*)[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionArtifactRequest / properties / offset / maximum
      Removed value: -2000000000
    • removedInput schema / $defs / SessionArtifactRequest / properties / offset / minimum
      Removed value: -0
    • removedInput schema / $defs / SessionArtifactRequest / properties / offset / type
      Removed value: -"integer"
    • addedInput schema / $defs / SessionListArtifactsRequest / properties / action / anyOf
      Added value: +[
      +  {
      +    "const": "list_artifacts",
      +    "title": "Action",
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^[ \\t\\r\\n]*(?:[lL][iI][sS][tT]_[aA][rR][tT][iI][fF][aA][cC][tT][sS])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionListArtifactsRequest / properties / action / const
      Removed value: -"list_artifacts"
    • removedInput schema / $defs / SessionListArtifactsRequest / properties / action / type
      Removed value: -"string"
    • addedInput schema / $defs / SessionListArtifactsRequest / properties / include_local_paths / anyOf
      Added value: +[
      +  {
      +    "default": false,
      +    "title": "Include Local Paths",
      +    "type": "boolean"
      +  },
      +  {
      +    "description": "Explicit true/false text, ignoring ASCII case and surrounding whitespace.",
      +    "pattern": "^[ \\t\\r\\n]*(?:[tT][rR][uU][eE]|[fF][aA][lL][sS][eE])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionListArtifactsRequest / properties / include_local_paths / type
      Removed value: -"boolean"
    • addedInput schema / $defs / SessionListArtifactsRequest / properties / limit / anyOf
      Added value: +[
      +  {
      +    "default": 10,
      +    "maximum": 100,
      +    "minimum": 1,
      +    "title": "Limit",
      +    "type": "integer"
      +  },
      +  {
      +    "description": "ASCII decimal integer; the integer branch's bounds apply after conversion.",
      +    "maxLength": 32,
      +    "pattern": "^[ \\t\\r\\n]*-?(?:0|[1-9][0-9]*)[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionListArtifactsRequest / properties / limit / maximum
      Removed value: -100
    • removedInput schema / $defs / SessionListArtifactsRequest / properties / limit / minimum
      Removed value: -1
    • removedInput schema / $defs / SessionListArtifactsRequest / properties / limit / type
      Removed value: -"integer"
    • addedInput schema / $defs / SessionLogRequest / properties / action / anyOf
      Added value: +[
      +  {
      +    "const": "log",
      +    "title": "Action",
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^[ \\t\\r\\n]*(?:[lL][oO][gG])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionLogRequest / properties / action / const
      Removed value: -"log"
    • removedInput schema / $defs / SessionLogRequest / properties / action / type
      Removed value: -"string"
    • addedInput schema / $defs / SessionLogRequest / properties / event_limit / anyOf
      Added value: +[
      +  {
      +    "default": 50,
      +    "maximum": 500,
      +    "minimum": 1,
      +    "title": "Event Limit",
      +    "type": "integer"
      +  },
      +  {
      +    "description": "ASCII decimal integer; the integer branch's bounds apply after conversion.",
      +    "maxLength": 32,
      +    "pattern": "^[ \\t\\r\\n]*-?(?:0|[1-9][0-9]*)[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionLogRequest / properties / event_limit / maximum
      Removed value: -500
    • removedInput schema / $defs / SessionLogRequest / properties / event_limit / minimum
      Removed value: -1
    • removedInput schema / $defs / SessionLogRequest / properties / event_limit / type
      Removed value: -"integer"
    • addedInput schema / $defs / SessionLogRequest / properties / history_limit / anyOf
      Added value: +[
      +  {
      +    "default": 10,
      +    "maximum": 100,
      +    "minimum": 1,
      +    "title": "History Limit",
      +    "type": "integer"
      +  },
      +  {
      +    "description": "ASCII decimal integer; the integer branch's bounds apply after conversion.",
      +    "maxLength": 32,
      +    "pattern": "^[ \\t\\r\\n]*-?(?:0|[1-9][0-9]*)[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionLogRequest / properties / history_limit / maximum
      Removed value: -100
    • removedInput schema / $defs / SessionLogRequest / properties / history_limit / minimum
      Removed value: -1
    • removedInput schema / $defs / SessionLogRequest / properties / history_limit / type
      Removed value: -"integer"
    • addedInput schema / $defs / SessionLogRequest / properties / include_history / anyOf
      Added value: +[
      +  {
      +    "default": true,
      +    "title": "Include History",
      +    "type": "boolean"
      +  },
      +  {
      +    "description": "Explicit true/false text, ignoring ASCII case and surrounding whitespace.",
      +    "pattern": "^[ \\t\\r\\n]*(?:[tT][rR][uU][eE]|[fF][aA][lL][sS][eE])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionLogRequest / properties / include_history / type
      Removed value: -"boolean"
    • addedInput schema / $defs / SessionPmidsRequest / properties / action / anyOf
      Added value: +[
      +  {
      +    "const": "pmids",
      +    "title": "Action",
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^[ \\t\\r\\n]*(?:[pP][mM][iI][dD][sS])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionPmidsRequest / properties / action / const
      Removed value: -"pmids"
    • removedInput schema / $defs / SessionPmidsRequest / properties / action / type
      Removed value: -"string"
    • addedInput schema / $defs / SessionPmidsRequest / properties / search_index / anyOf
      Added value: +[
      +  {
      +    "default": -1,
      +    "maximum": 100000,
      +    "minimum": -100000,
      +    "title": "Search Index",
      +    "type": "integer"
      +  },
      +  {
      +    "description": "ASCII decimal integer; the integer branch's bounds apply after conversion.",
      +    "maxLength": 32,
      +    "pattern": "^[ \\t\\r\\n]*-?(?:0|[1-9][0-9]*)[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionPmidsRequest / properties / search_index / maximum
      Removed value: -100000
    • removedInput schema / $defs / SessionPmidsRequest / properties / search_index / minimum
      Removed value: --100000
    • removedInput schema / $defs / SessionPmidsRequest / properties / search_index / type
      Removed value: -"integer"
    • addedInput schema / $defs / SessionReplaySearchRequest / properties / action / anyOf
      Added value: +[
      +  {
      +    "const": "replay_search",
      +    "title": "Action",
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^[ \\t\\r\\n]*(?:[rR][eE][pP][lL][aA][yY]_[sS][eE][aA][rR][cC][hH])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionReplaySearchRequest / properties / action / const
      Removed value: -"replay_search"
    • removedInput schema / $defs / SessionReplaySearchRequest / properties / action / type
      Removed value: -"string"
    • addedInput schema / $defs / SessionSearchRunRequest / properties / action / anyOf
      Added value: +[
      +  {
      +    "const": "search_run",
      +    "title": "Action",
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^[ \\t\\r\\n]*(?:[sS][eE][aA][rR][cC][hH]_[rR][uU][nN])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionSearchRunRequest / properties / action / const
      Removed value: -"search_run"
    • removedInput schema / $defs / SessionSearchRunRequest / properties / action / type
      Removed value: -"string"
    • addedInput schema / $defs / SessionSearchRunsRequest / properties / action / anyOf
      Added value: +[
      +  {
      +    "const": "search_runs",
      +    "title": "Action",
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^[ \\t\\r\\n]*(?:[sS][eE][aA][rR][cC][hH]_[rR][uU][nN][sS])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionSearchRunsRequest / properties / action / const
      Removed value: -"search_runs"
    • removedInput schema / $defs / SessionSearchRunsRequest / properties / action / type
      Removed value: -"string"
    • addedInput schema / $defs / SessionSearchRunsRequest / properties / limit / anyOf
      Added value: +[
      +  {
      +    "default": 10,
      +    "maximum": 100,
      +    "minimum": 1,
      +    "title": "Limit",
      +    "type": "integer"
      +  },
      +  {
      +    "description": "ASCII decimal integer; the integer branch's bounds apply after conversion.",
      +    "maxLength": 32,
      +    "pattern": "^[ \\t\\r\\n]*-?(?:0|[1-9][0-9]*)[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionSearchRunsRequest / properties / limit / maximum
      Removed value: -100
    • removedInput schema / $defs / SessionSearchRunsRequest / properties / limit / minimum
      Removed value: -1
    • removedInput schema / $defs / SessionSearchRunsRequest / properties / limit / type
      Removed value: -"integer"
    • changedInput schema / $defs / SessionSearchRunsRequest / properties / status / anyOf
      Previous value: -[
      -  {
      -    "enum": [
      -      "started",
      -      "planned",
      -      "running",
      -      "completed",
      -      "partial",
      -      "failed",
      -      "cancelled",
      -      "interrupted"
      -    ],
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "enum": [
      +          "started",
      +          "planned",
      +          "running",
      +          "completed",
      +          "partial",
      +          "failed",
      +          "cancelled",
      +          "interrupted"
      +        ],
      +        "type": "string"
      +      },
      +      {
      +        "pattern": "^[ \\t\\r\\n]*(?:[sS][tT][aA][rR][tT][eE][dD]|[pP][lL][aA][nN][nN][eE][dD]|[rR][uU][nN][nN][iI][nN][gG]|[cC][oO][mM][pP][lL][eE][tT][eE][dD]|[pP][aA][rR][tT][iI][aA][lL]|[fF][aA][iI][lL][eE][dD]|[cC][aA][nN][cC][eE][lL][lL][eE][dD]|[iI][nN][tT][eE][rR][rR][uU][pP][tT][eE][dD])[ \\t\\r\\n]*$",
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / $defs / SessionSummaryRequest / properties / action / anyOf
      Added value: +[
      +  {
      +    "const": "summary",
      +    "title": "Action",
      +    "type": "string"
      +  },
      +  {
      +    "pattern": "^[ \\t\\r\\n]*(?:[sS][uU][mM][mM][aA][rR][yY])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionSummaryRequest / properties / action / const
      Removed value: -"summary"
    • removedInput schema / $defs / SessionSummaryRequest / properties / action / type
      Removed value: -"string"
    • addedInput schema / $defs / SessionSummaryRequest / properties / history_limit / anyOf
      Added value: +[
      +  {
      +    "default": 10,
      +    "maximum": 100,
      +    "minimum": 1,
      +    "title": "History Limit",
      +    "type": "integer"
      +  },
      +  {
      +    "description": "ASCII decimal integer; the integer branch's bounds apply after conversion.",
      +    "maxLength": 32,
      +    "pattern": "^[ \\t\\r\\n]*-?(?:0|[1-9][0-9]*)[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionSummaryRequest / properties / history_limit / maximum
      Removed value: -100
    • removedInput schema / $defs / SessionSummaryRequest / properties / history_limit / minimum
      Removed value: -1
    • removedInput schema / $defs / SessionSummaryRequest / properties / history_limit / type
      Removed value: -"integer"
    • addedInput schema / $defs / SessionSummaryRequest / properties / include_history / anyOf
      Added value: +[
      +  {
      +    "default": false,
      +    "title": "Include History",
      +    "type": "boolean"
      +  },
      +  {
      +    "description": "Explicit true/false text, ignoring ASCII case and surrounding whitespace.",
      +    "pattern": "^[ \\t\\r\\n]*(?:[tT][rR][uU][eE]|[fF][aA][lL][sS][eE])[ \\t\\r\\n]*$",
      +    "type": "string"
      +  }
      +]
    • removedInput schema / $defs / SessionSummaryRequest / properties / include_history / type
      Removed value: -"boolean"
    • addedInput schema / properties / request / anyOf
      Added value: +[
      +  {
      +    "discriminator": {
      +      "mapping": {
      +        "article": "#/$defs/SessionArticleRequest",
      +        "artifact": "#/$defs/SessionArtifactRequest",
      +        "list_artifacts": "#/$defs/SessionListArtifactsRequest",
      +        "log": "#/$defs/SessionLogRequest",
      +        "pmids": "#/$defs/SessionPmidsRequest",
      +        "replay_search": "#/$defs/SessionReplaySearchRequest",
      +        "search_run": "#/$defs/SessionSearchRunRequest",
      +        "search_runs": "#/$defs/SessionSearchRunsRequest",
      +        "summary": "#/$defs/SessionSummaryRequest"
      +      },
      +      "propertyName": "action"
      +    },
      +    "oneOf": [
      +      {
      +        "$ref": "#/$defs/SessionPmidsRequest"
      +      },
      +      {
      +        "$ref": "#/$defs/SessionArticleRequest"
      +      },
      +      {
      +        "$ref": "#/$defs/SessionSummaryRequest"
      +      },
      +      {
      +        "$ref": "#/$defs/SessionLogRequest"
      +      },
      +      {
      +        "$ref": "#/$defs/SessionListArtifactsRequest"
      +      },
      +      {
      +        "$ref": "#/$defs/SessionArtifactRequest"
      +      },
      +      {
      +        "$ref": "#/$defs/SessionSearchRunsRequest"
      +      },
      +      {
      +        "$ref": "#/$defs/SessionSearchRunRequest"
      +      },
      +      {
      +        "$ref": "#/$defs/SessionReplaySearchRequest"
      +      }
      +    ],
      +    "title": "Request"
      +  },
      +  {
      +    "contentMediaType": "application/json",
      +    "contentSchema": {
      +      "discriminator": {
      +        "mapping": {
      +          "article": "#/$defs/SessionArticleRequest",
      +          "artifact": "#/$defs/SessionArtifactRequest",
      +          "list_artifacts": "#/$defs/SessionListArtifactsRequest",
      +          "log": "#/$defs/SessionLogRequest",
      +          "pmids": "#/$defs/SessionPmidsRequest",
      +          "replay_search": "#/$defs/SessionReplaySearchRequest",
      +          "search_run": "#/$defs/SessionSearchRunRequest",
      +          "search_runs": "#/$defs/SessionSearchRunsRequest",
      +          "summary": "#/$defs/SessionSummaryRequest"
      +        },
      +        "propertyName": "action"
      +      },
      +      "oneOf": [
      +        {
      +          "$ref": "#/$defs/SessionPmidsRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionArticleRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionSummaryRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionLogRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionListArtifactsRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionArtifactRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionSearchRunsRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionSearchRunRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionReplaySearchRequest"
      +        }
      +      ],
      +      "title": "Request"
      +    },
      +    "description": "One JSON-encoded container; the decoded value must satisfy contentSchema.",
      +    "maxLength": 1000000,
      +    "type": "string"
      +  },
      +  {
      +    "description": "One JSON code fence; after removing the fence, decode JSON and validate against x-pubmed-decodedSchema.",
      +    "maxLength": 1000000,
      +    "pattern": "^\\s*```(?:[jJ][sS][oO][nN])?[ \\t]*\\r?\\n[\\s\\S]*\\r?\\n```\\s*$",
      +    "type": "string",
      +    "x-pubmed-decodedSchema": {
      +      "discriminator": {
      +        "mapping": {
      +          "article": "#/$defs/SessionArticleRequest",
      +          "artifact": "#/$defs/SessionArtifactRequest",
      +          "list_artifacts": "#/$defs/SessionListArtifactsRequest",
      +          "log": "#/$defs/SessionLogRequest",
      +          "pmids": "#/$defs/SessionPmidsRequest",
      +          "replay_search": "#/$defs/SessionReplaySearchRequest",
      +          "search_run": "#/$defs/SessionSearchRunRequest",
      +          "search_runs": "#/$defs/SessionSearchRunsRequest",
      +          "summary": "#/$defs/SessionSummaryRequest"
      +        },
      +        "propertyName": "action"
      +      },
      +      "oneOf": [
      +        {
      +          "$ref": "#/$defs/SessionPmidsRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionArticleRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionSummaryRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionLogRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionListArtifactsRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionArtifactRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionSearchRunsRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionSearchRunRequest"
      +        },
      +        {
      +          "$ref": "#/$defs/SessionReplaySearchRequest"
      +        }
      +      ],
      +      "title": "Request"
      +    },
      +    "x-pubmed-encoding": "fenced-json"
      +  }
      +]
    • removedInput schema / properties / request / discriminator
      Removed value: -{
      -  "mapping": {
      -    "article": "#/$defs/SessionArticleRequest",
      -    "artifact": "#/$defs/SessionArtifactRequest",
      -    "list_artifacts": "#/$defs/SessionListArtifactsRequest",
      -    "log": "#/$defs/SessionLogRequest",
      -    "pmids": "#/$defs/SessionPmidsRequest",
      -    "replay_search": "#/$defs/SessionReplaySearchRequest",
      -    "search_run": "#/$defs/SessionSearchRunRequest",
      -    "search_runs": "#/$defs/SessionSearchRunsRequest",
      -    "summary": "#/$defs/SessionSummaryRequest"
      -  },
      -  "propertyName": "action"
      -}
    • removedInput schema / properties / request / oneOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/SessionPmidsRequest"
      -  },
      -  {
      -    "$ref": "#/$defs/SessionArticleRequest"
      -  },
      -  {
      -    "$ref": "#/$defs/SessionSummaryRequest"
      -  },
      -  {
      -    "$ref": "#/$defs/SessionLogRequest"
      -  },
      -  {
      -    "$ref": "#/$defs/SessionListArtifactsRequest"
      -  },
      -  {
      -    "$ref": "#/$defs/SessionArtifactRequest"
      -  },
      -  {
      -    "$ref": "#/$defs/SessionSearchRunsRequest"
      -  },
      -  {
      -    "$ref": "#/$defs/SessionSearchRunRequest"
      -  },
      -  {
      -    "$ref": "#/$defs/SessionReplaySearchRequest"
      -  }
      -]
  2. Changed21 schema fields changedv0.7.2
    • addedInput schema / $defs
      Added value: +{
      +  "ArtifactIdLocator": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "artifact_id",
      +        "title": "Kind",
      +        "type": "string"
      +      },
      +      "session_id": {
      +        "anyOf": [
      +          {
      +            "maxLength": 80,
      +            "minLength": 1,
      +            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,79}$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Session Id"
      +      },
      +      "value": {
      +        "maxLength": 512,
      +        "minLength": 1,
      +        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,511}$",
      +        "title": "Value",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value"
      +    ],
      +    "title": "ArtifactIdLocator",
      +    "type": "object"
      +  },
      +  "ArtifactUriLocator": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "kind": {
      +        "const": "artifact_uri",
      +        "title": "Kind",
      +        "type": "string"
      +      },
      +      "value": {
      +        "maxLength": 605,
      +        "minLength": 13,
      +        "pattern": "^artifact://[A-Za-z0-9][A-Za-z0-9_.-]{0,79}/[A-Za-z0-9][A-Za-z0-9_.-]{0,511}$",
      +        "title": "Value",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "value"
      +    ],
      +    "title": "ArtifactUriLocator",
      +    "type": "object"
      +  },
      +  "SessionArticleRequest": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "action": {
      +        "const": "article",
      +        "title": "Action",
      +        "type": "string"
      +      },
      +      "pmid": {
      +        "maxLength": 20,
      +        "pattern": "^[1-9][0-9]{0,19}$",
      +        "title": "Pmid",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "action",
      +      "pmid"
      +    ],
      +    "title": "SessionArticleRequest",
      +    "type": "object"
      +  },
      +  "SessionArtifactRequest": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "action": {
      +        "const": "artifact",
      +        "title": "Action",
      +        "type": "string"
      +      },
      +      "artifact_file": {
      +        "anyOf": [
      +          {
      +            "maxLength": 512,
      +            "minLength": 1,
      +            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,511}$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Artifact File"
      +      },
      +      "include_local_paths": {
      +        "default": false,
      +        "title": "Include Local Paths",
      +        "type": "boolean"
      +      },
      +      "locator": {
      +        "discriminator": {
      +          "mapping": {
      +            "artifact_id": "#/$defs/ArtifactIdLocator",
      +            "artifact_uri": "#/$defs/ArtifactUriLocator"
      +          },
      +          "propertyName": "kind"
      +        },
      +        "oneOf": [
      +          {
      +            "$ref": "#/$defs/ArtifactIdLocator"
      +          },
      +          {
      +            "$ref": "#/$defs/ArtifactUriLocator"
      +          }
      +        ],
      +        "title": "Locator"
      +      },
      +      "max_chars": {
      +        "default": 200000,
      +        "maximum": 200000,
      +        "minimum": 1,
      +        "title": "Max Chars",
      +        "type": "integer"
      +      },
      +      "offset": {
      +        "default": 0,
      +        "maximum": 2000000000,
      +        "minimum": 0,
      +        "title": "Offset",
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "action",
      +      "locator"
      +    ],
      +    "title": "SessionArtifactRequest",
      +    "type": "object"
      +  },
      +  "SessionListArtifactsRequest": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "action": {
      +        "const": "list_artifacts",
      +        "title": "Action",
      +        "type": "string"
      +      },
      +      "include_local_paths": {
      +        "default": false,
      +        "title": "Include Local Paths",
      +        "type": "boolean"
      +      },
      +      "kind": {
      +        "anyOf": [
      +          {
      +            "maxLength": 500,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Kind"
      +      },
      +      "limit": {
      +        "default": 10,
      +        "maximum": 100,
      +        "minimum": 1,
      +        "title": "Limit",
      +        "type": "integer"
      +      },
      +      "session_id": {
      +        "anyOf": [
      +          {
      +            "maxLength": 80,
      +            "minLength": 1,
      +            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,79}$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Session Id"
      +      },
      +      "tool": {
      +        "anyOf": [
      +          {
      +            "maxLength": 500,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Tool"
      +      }
      +    },
      +    "required": [
      +      "action"
      +    ],
      +    "title": "SessionListArtifactsRequest",
      +    "type": "object"
      +  },
      +  "SessionLogRequest": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "action": {
      +        "const": "log",
      +        "title": "Action",
      +        "type": "string"
      +      },
      +      "event_limit": {
      +        "default": 50,
      +        "maximum": 500,
      +        "minimum": 1,
      +        "title": "Event Limit",
      +        "type": "integer"
      +      },
      +      "history_limit": {
      +        "default": 10,
      +        "maximum": 100,
      +        "minimum": 1,
      +        "title": "History Limit",
      +        "type": "integer"
      +      },
      +      "include_history": {
      +        "default": true,
      +        "title": "Include History",
      +        "type": "boolean"
      +      },
      +      "kind": {
      +        "anyOf": [
      +          {
      +            "maxLength": 500,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Kind"
      +      }
      +    },
      +    "required": [
      +      "action"
      +    ],
      +    "title": "SessionLogRequest",
      +    "type": "object"
      +  },
      +  "SessionPmidsRequest": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "action": {
      +        "const": "pmids",
      +        "title": "Action",
      +        "type": "string"
      +      },
      +      "query_filter": {
      +        "anyOf": [
      +          {
      +            "maxLength": 500,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Query Filter"
      +      },
      +      "search_index": {
      +        "default": -1,
      +        "maximum": 100000,
      +        "minimum": -100000,
      +        "title": "Search Index",
      +        "type": "integer"
      +      }
      +    },
      +    "required": [
      +      "action"
      +    ],
      +    "title": "SessionPmidsRequest",
      +    "type": "object"
      +  },
      +  "SessionReplaySearchRequest": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "action": {
      +        "const": "replay_search",
      +        "title": "Action",
      +        "type": "string"
      +      },
      +      "run_id": {
      +        "maxLength": 512,
      +        "minLength": 1,
      +        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,511}$",
      +        "title": "Run Id",
      +        "type": "string"
      +      },
      +      "session_id": {
      +        "anyOf": [
      +          {
      +            "maxLength": 80,
      +            "minLength": 1,
      +            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,79}$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Session Id"
      +      }
      +    },
      +    "required": [
      +      "action",
      +      "run_id"
      +    ],
      +    "title": "SessionReplaySearchRequest",
      +    "type": "object"
      +  },
      +  "SessionSearchRunRequest": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "action": {
      +        "const": "search_run",
      +        "title": "Action",
      +        "type": "string"
      +      },
      +      "run_id": {
      +        "maxLength": 512,
      +        "minLength": 1,
      +        "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,511}$",
      +        "title": "Run Id",
      +        "type": "string"
      +      },
      +      "session_id": {
      +        "anyOf": [
      +          {
      +            "maxLength": 80,
      +            "minLength": 1,
      +            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,79}$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Session Id"
      +      }
      +    },
      +    "required": [
      +      "action",
      +      "run_id"
      +    ],
      +    "title": "SessionSearchRunRequest",
      +    "type": "object"
      +  },
      +  "SessionSearchRunsRequest": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "action": {
      +        "const": "search_runs",
      +        "title": "Action",
      +        "type": "string"
      +      },
      +      "limit": {
      +        "default": 10,
      +        "maximum": 100,
      +        "minimum": 1,
      +        "title": "Limit",
      +        "type": "integer"
      +      },
      +      "session_id": {
      +        "anyOf": [
      +          {
      +            "maxLength": 80,
      +            "minLength": 1,
      +            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,79}$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Session Id"
      +      },
      +      "status": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "started",
      +              "planned",
      +              "running",
      +              "completed",
      +              "partial",
      +              "failed",
      +              "cancelled",
      +              "interrupted"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Status"
      +      }
      +    },
      +    "required": [
      +      "action"
      +    ],
      +    "title": "SessionSearchRunsRequest",
      +    "type": "object"
      +  },
      +  "SessionSummaryRequest": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "action": {
      +        "const": "summary",
      +        "title": "Action",
      +        "type": "string"
      +      },
      +      "history_limit": {
      +        "default": 10,
      +        "maximum": 100,
      +        "minimum": 1,
      +        "title": "History Limit",
      +        "type": "integer"
      +      },
      +      "include_history": {
      +        "default": false,
      +        "title": "Include History",
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "action"
      +    ],
      +    "title": "SessionSummaryRequest",
      +    "type": "object"
      +  }
      +}
    • addedInput schema / additionalProperties
      Added value: +false
    • removedInput schema / properties / action
      Removed value: -{
      -  "default": "summary",
      -  "title": "Action",
      -  "type": "string"
      -}
    • removedInput schema / properties / artifact_file
      Removed value: -{
      -  "default": "",
      -  "title": "Artifact File",
      -  "type": "string"
      -}
    • removedInput schema / properties / artifact_id
      Removed value: -{
      -  "default": "",
      -  "title": "Artifact Id",
      -  "type": "string"
      -}
    • removedInput schema / properties / artifact_kind
      Removed value: -{
      -  "default": "",
      -  "title": "Artifact Kind",
      -  "type": "string"
      -}
    • removedInput schema / properties / artifact_tool
      Removed value: -{
      -  "default": "",
      -  "title": "Artifact Tool",
      -  "type": "string"
      -}
    • removedInput schema / properties / artifact_uri
      Removed value: -{
      -  "default": "",
      -  "title": "Artifact Uri",
      -  "type": "string"
      -}
    • removedInput schema / properties / event_limit
      Removed value: -{
      -  "default": 50,
      -  "title": "Event Limit",
      -  "type": "integer"
      -}
    • removedInput schema / properties / history_limit
      Removed value: -{
      -  "default": 10,
      -  "title": "History Limit",
      -  "type": "integer"
      -}
    • removedInput schema / properties / include_history
      Removed value: -{
      -  "default": false,
      -  "title": "Include History",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / include_local_paths
      Removed value: -{
      -  "default": false,
      -  "title": "Include Local Paths",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / max_chars
      Removed value: -{
      -  "default": 200000,
      -  "title": "Max Chars",
      -  "type": "integer"
      -}
    • removedInput schema / properties / offset
      Removed value: -{
      -  "default": 0,
      -  "title": "Offset",
      -  "type": "integer"
      -}
    • removedInput schema / properties / pmid
      Removed value: -{
      -  "default": "",
      -  "title": "Pmid",
      -  "type": "string"
      -}
    • removedInput schema / properties / query_filter
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Query Filter"
      -}
    • addedInput schema / properties / request
      Added value: +{
      +  "discriminator": {
      +    "mapping": {
      +      "article": "#/$defs/SessionArticleRequest",
      +      "artifact": "#/$defs/SessionArtifactRequest",
      +      "list_artifacts": "#/$defs/SessionListArtifactsRequest",
      +      "log": "#/$defs/SessionLogRequest",
      +      "pmids": "#/$defs/SessionPmidsRequest",
      +      "replay_search": "#/$defs/SessionReplaySearchRequest",
      +      "search_run": "#/$defs/SessionSearchRunRequest",
      +      "search_runs": "#/$defs/SessionSearchRunsRequest",
      +      "summary": "#/$defs/SessionSummaryRequest"
      +    },
      +    "propertyName": "action"
      +  },
      +  "oneOf": [
      +    {
      +      "$ref": "#/$defs/SessionPmidsRequest"
      +    },
      +    {
      +      "$ref": "#/$defs/SessionArticleRequest"
      +    },
      +    {
      +      "$ref": "#/$defs/SessionSummaryRequest"
      +    },
      +    {
      +      "$ref": "#/$defs/SessionLogRequest"
      +    },
      +    {
      +      "$ref": "#/$defs/SessionListArtifactsRequest"
      +    },
      +    {
      +      "$ref": "#/$defs/SessionArtifactRequest"
      +    },
      +    {
      +      "$ref": "#/$defs/SessionSearchRunsRequest"
      +    },
      +    {
      +      "$ref": "#/$defs/SessionSearchRunRequest"
      +    },
      +    {
      +      "$ref": "#/$defs/SessionReplaySearchRequest"
      +    }
      +  ],
      +  "title": "Request"
      +}
    • removedInput schema / properties / search_index
      Removed value: -{
      -  "default": -1,
      -  "title": "Search Index",
      -  "type": "integer"
      -}
    • removedInput schema / properties / session_id
      Removed value: -{
      -  "default": "",
      -  "title": "Session Id",
      -  "type": "string"
      -}
    • addedInput schema / required
      Added value: +[
      +  "request"
      +]
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "result": {
      -      "title": "Result",
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "title": "read_sessionOutput",
      -  "type": "object"
      -}New value: +null
  3. First observedv0.5.16

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotent/non-destructive, so the bar is lower; the description still adds genuine value by disclosing the redaction policy for local paths (requires include_local_paths plus a server setting) and that replay_search returns credential-free arguments. It omits return-shape and pagination-bound behavior, but the security disclosure is substantive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose in one sentence, then a tight bulleted action index, then a short paragraph of edge-case rules. The bullets partly restate schema discriminants, but for a 9-way union the index earns its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, so the description carries return-shape burden, and it never says what each action returns beyond a phrase. Most critically, it omits the schema's 'log' action, leaving an agent that reads only the description blind to one valid mode of a highly complex discriminated union.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% at the top level, so the description must compensate — it does for only a handful of fields (locator, artifact_file, offset/max_chars, include_local_paths). Many discriminants (event_limit, history_limit, query_filter, search_index, status, run_id, kind, tool) get no semantic gloss.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The lead sentence names a specific verb+resource ('Read session data') and the bulleted action list concretely enumerates the read modes (pmids, article, summary, artifacts, search runs, replay). However the enumeration is incomplete — the schema's 'log' action is never mentioned — and nothing distinguishes this from siblings like read_research_chronicle or fetch_article_details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is implied usage ('Each action accepts only its own fields') and a conditional instruction for artifact reads (choose artifact_id vs artifact_uri, page with artifact_file/offset/max_chars), but no explicit statement of when to call read_session versus unified_search, fetch_article_details, or read_research_chronicle.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.