Préférences de confidentialité

Fonctions nécessaires

Nécessaires à la sécurité et aux fonctions de base du site.

Toujours activées

Statistiques d’utilisation facultatives

Autoriser les statistiques d’utilisation PostHog ? Modifiez votre choix à tout moment dans le pied de page.

Autoriser aussi l’enregistrement des sessions sur ce site public

L’enregistrement des sessions montre les pages publiques et les interactions, en masquant les champs de saisie et les contenus privés. L’enregistrement dans l’application fait l’objet d’un choix distinct.

Nécessite les analyses ; la relecture du site est désactivée par défaut.

Les analyses du navigateur n’activent pas celles du compte.

La recherche se charge uniquement lorsque vous l’utilisez. Parcourez toutes les catégories ci-dessous.

Outil MCP

Lire l’historique de collecte de recherche

sosoapi_research_collection_history_query

Lire des observations bornées de cohorte en UTC ; inconnu ne signifie pas zéro. Les échantillons HN partiels ne permettent pas d’évaluer une dynamique ou des prévisions. Exige agent:research.

Lire en Markdown

Profils et transports

Profils : full · Transports : stdio, http

Choisissez core ou full pour définir les outils visibles du client ; cela ne change pas ses autorisations. Le téléversement local nécessite stdio et n’est pas disponible sur HTTP. Définissez SOSOAPI_OUTPUT_SCHEMAS=1 pour inclure les schémas de sortie à la découverte. Les outils renvoient des résultats structurés avec ou sans ce réglage.

Autorisations et effets de bord

Les annotations aident les clients à décrire un outil. Chaque appel vérifie toujours l’authentification, le rôle, l’accès aux ressources et les capacités accordées de l’utilisateur.

{
  "readOnlyHint": true,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": true
}
  • /research-api/collection-history/query: agent:research · historique agrégé de collecte actuellement autorisé pour une cohorte exacte de sources ; les nombres collectés ne représentent ni un volume de publication, ni une croissance du marché, ni une dynamique, ni des prévisions

Champs d’entrée

Requis signifie requis dans l’objet parent et la branche sélectionnée. Un enfant requis ne rend pas obligatoire un parent facultatif. Les règles et noms de champs ci-dessous proviennent du contrat.

Champs d’entrée
Champ / brancheType / requisContraintes
$objectRequis dans le parent
  • additionalProperties: false
workspace_idstringRequis dans le parent
  • format: "uuid"
project_idstringRequis dans le parent
  • format: "uuid"
project_revisionintegerRequis dans le parent
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
corpus_snapshot_idstringRequis dans le parent
  • format: "uuid"
bucketstringFacultatif / élément
  • enum: ["hour","day"]
sincestringRequis dans le parent
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
untilstringRequis dans le parent
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
JSON Schema complet
{
  "type": "object",
  "properties": {
    "workspace_id": {
      "type": "string",
      "format": "uuid"
    },
    "project_id": {
      "type": "string",
      "format": "uuid"
    },
    "project_revision": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "corpus_snapshot_id": {
      "type": "string",
      "format": "uuid"
    },
    "bucket": {
      "type": "string",
      "enum": [
        "hour",
        "day"
      ]
    },
    "since": {
      "$ref": "#/$defs/s0"
    },
    "until": {
      "$ref": "#/$defs/s0"
    }
  },
  "required": [
    "workspace_id",
    "project_id",
    "project_revision",
    "corpus_snapshot_id",
    "since",
    "until"
  ],
  "additionalProperties": false,
  "$defs": {
    "s0": {
      "type": "string",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "format": "date-time"
    }
  }
}

Sortie structurée

Ce schéma décrit structuredContent dans un résultat d’outil réussi. La réponse MCP contient aussi content et peut définir isError en cas d’échec. Pour publier, lisez le résultat final de la publication plutôt que de considérer une requête acceptée ou une réponse texte comme une confirmation. L’opération API liée explique les autorisations et règles de nouvelle tentative.

Requis signifie requis dans l’objet parent et la branche sélectionnée. Un enfant requis ne rend pas obligatoire un parent facultatif. Les règles et noms de champs ci-dessous proviennent du contrat.

Sortie structurée
Champ / brancheType / requisContraintes
$objectRequis dans le parent
  • additionalProperties: false
workspace_idstringRequis dans le parent
  • format: "uuid"
project_idstringRequis dans le parent
  • format: "uuid"
project_revisionintegerRequis dans le parent
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
corpus_snapshot_idstringRequis dans le parent
  • format: "uuid"
bucketstringRequis dans le parent
  • enum: ["hour","day"]
sincestringRequis dans le parent
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
untilstringRequis dans le parent
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
generated_atstringRequis dans le parent
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
statusstringRequis dans le parent
  • enum: ["available","insufficient_history","not_applicable","incomparable"]
reasonstring | nullRequis dans le parent—
reasonanyOf 1stringRequis dans le parent
  • enum: ["no_listening_sources","mixed_sources","mixed_cohorts","mixed_methods","method_unavailable","unsupported_method","no_completed_observations","history_limit"]
reasonanyOf 2nullRequis dans le parent—
cohortobject | nullRequis dans le parent—
cohortanyOf 1objectRequis dans le parent
  • additionalProperties: false
cohort.sourceanyOf 1stringRequis dans le parent
  • const: "hacker_news"
cohort.query_revisionanyOf 1integerRequis dans le parent
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
cohort.generationanyOf 1integerRequis dans le parent
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
cohort.method_versionanyOf 1stringRequis dans le parent
  • minLength: 1
  • maxLength: 100
cohort.selected_listening_refsanyOf 1integerRequis dans le parent
  • minimum: 1
  • maximum: 500
cohort.excluded_selected_itemsanyOf 1integerRequis dans le parent
  • minimum: 0
  • maximum: 499
cohort.scopeanyOf 1stringRequis dans le parent
  • const: "selected_listening_stream_cohort"
cohortanyOf 2nullRequis dans le parent—
method_versionstringRequis dans le parent
  • const: "listening-collection-history/v1"
time_basisstringRequis dans le parent
  • const: "collection_completed_at_or_requested_at"
deduplicationstringRequis dans le parent
  • const: "latest_observation_per_source_per_bin"
count_meaningstringRequis dans le parent
  • const: "bounded_collection_observations"
momentum_eligiblebooleanRequis dans le parent
  • const: false
forecast_eligiblebooleanRequis dans le parent
  • const: false
qualification_reasonstringRequis dans le parent
  • enum: ["hn_partial_overlapping_sample_unqualified","no_qualified_cohort"]
observed_binsintegerRequis dans le parent
  • minimum: 0
  • maximum: 24
unknown_binsintegerRequis dans le parent
  • minimum: 0
  • maximum: 24
binsarrayRequis dans le parent
  • maxItems: 24
bins[]objectFacultatif / élément
  • additionalProperties: false
bins[].startstringRequis dans le parent
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
bins[].endstringRequis dans le parent
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
bins[].period_partialbooleanRequis dans le parent—
bins[].statestringRequis dans le parent
  • enum: ["observed","unknown"]
bins[].countsobject | nullRequis dans le parent—
bins[].countsanyOf 1objectRequis dans le parent
  • additionalProperties: false
bins[].counts.source_itemsanyOf 1integerRequis dans le parent
  • minimum: 0
  • maximum: 10240
bins[].counts.matched_itemsanyOf 1integerRequis dans le parent
  • minimum: 0
  • maximum: 10240
bins[].counts.removed_itemsanyOf 1integerRequis dans le parent
  • minimum: 0
  • maximum: 10240
bins[].counts.unavailable_itemsanyOf 1integerRequis dans le parent
  • minimum: 0
  • maximum: 10240
bins[].countsanyOf 2nullRequis dans le parent—
bins[].runsobjectRequis dans le parent
  • additionalProperties: false
bins[].runs.totalintegerRequis dans le parent
  • minimum: 0
  • maximum: 512
bins[].runs.completedintegerRequis dans le parent
  • minimum: 0
  • maximum: 512
bins[].runs.successfulintegerRequis dans le parent
  • minimum: 0
  • maximum: 512
bins[].runs.succeededintegerRequis dans le parent
  • minimum: 0
  • maximum: 512
bins[].runs.partialintegerRequis dans le parent
  • minimum: 0
  • maximum: 512
bins[].runs.failedintegerRequis dans le parent
  • minimum: 0
  • maximum: 512
bins[].runs.cancelledintegerRequis dans le parent
  • minimum: 0
  • maximum: 512
bins[].runs.pendingintegerRequis dans le parent
  • minimum: 0
  • maximum: 512
bins[].source_windowsobject | nullRequis dans le parent—
bins[].source_windowsanyOf 1objectRequis dans le parent
  • additionalProperties: false
bins[].source_windows.sinceanyOf 1stringRequis dans le parent
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
bins[].source_windows.untilanyOf 1stringRequis dans le parent
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
bins[].source_windows.distinct_windowsanyOf 1integerRequis dans le parent
  • minimum: 1
  • maximum: 512
bins[].source_windowsanyOf 2nullRequis dans le parent—
bins[].gapsarrayRequis dans le parent
  • maxItems: 5
bins[].gaps[]stringFacultatif / élément
  • enum: ["unobserved","incomplete_collection","failed_collection","cancelled_collection","partial_period"]
bins[].coveragestringRequis dans le parent
  • const: "partial_indexed_sample"
JSON Schema complet
{
  "type": "object",
  "properties": {
    "workspace_id": {
      "type": "string",
      "format": "uuid"
    },
    "project_id": {
      "type": "string",
      "format": "uuid"
    },
    "project_revision": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "corpus_snapshot_id": {
      "type": "string",
      "format": "uuid"
    },
    "bucket": {
      "type": "string",
      "enum": [
        "hour",
        "day"
      ]
    },
    "since": {
      "type": "string",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "format": "date-time"
    },
    "until": {
      "type": "string",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "format": "date-time"
    },
    "generated_at": {
      "type": "string",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
      "format": "date-time"
    },
    "status": {
      "type": "string",
      "enum": [
        "available",
        "insufficient_history",
        "not_applicable",
        "incomparable"
      ]
    },
    "reason": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "no_listening_sources",
            "mixed_sources",
            "mixed_cohorts",
            "mixed_methods",
            "method_unavailable",
            "unsupported_method",
            "no_completed_observations",
            "history_limit"
          ]
        },
        {
          "type": "null"
        }
      ]
    },
    "cohort": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "source": {
              "type": "string",
              "const": "hacker_news"
            },
            "query_revision": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            "generation": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            "method_version": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            },
            "selected_listening_refs": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500
            },
            "excluded_selected_items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 499
            },
            "scope": {
              "type": "string",
              "const": "selected_listening_stream_cohort"
            }
          },
          "required": [
            "source",
            "query_revision",
            "generation",
            "method_version",
            "selected_listening_refs",
            "excluded_selected_items",
            "scope"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "method_version": {
      "type": "string",
      "const": "listening-collection-history/v1"
    },
    "time_basis": {
      "type": "string",
      "const": "collection_completed_at_or_requested_at"
    },
    "deduplication": {
      "type": "string",
      "const": "latest_observation_per_source_per_bin"
    },
    "count_meaning": {
      "type": "string",
      "const": "bounded_collection_observations"
    },
    "momentum_eligible": {
      "type": "boolean",
      "const": false
    },
    "forecast_eligible": {
      "type": "boolean",
      "const": false
    },
    "qualification_reason": {
      "type": "string",
      "enum": [
        "hn_partial_overlapping_sample_unqualified",
        "no_qualified_cohort"
      ]
    },
    "observed_bins": {
      "type": "integer",
      "minimum": 0,
      "maximum": 24
    },
    "unknown_bins": {
      "type": "integer",
      "minimum": 0,
      "maximum": 24
    },
    "bins": {
      "maxItems": 24,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "format": "date-time"
          },
          "end": {
            "type": "string",
            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
            "format": "date-time"
          },
          "period_partial": {
            "type": "boolean"
          },
          "state": {
            "type": "string",
            "enum": [
              "observed",
              "unknown"
            ]
          },
          "counts": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "source_items": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 10240
                  },
                  "matched_items": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 10240
                  },
                  "removed_items": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 10240
                  },
                  "unavailable_items": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 10240
                  }
                },
                "required": [
                  "source_items",
                  "matched_items",
                  "removed_items",
                  "unavailable_items"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "runs": {
            "type": "object",
            "properties": {
              "total": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "completed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "successful": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "succeeded": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "partial": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "failed": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "cancelled": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              },
              "pending": {
                "type": "integer",
                "minimum": 0,
                "maximum": 512
              }
            },
            "required": [
              "total",
              "completed",
              "successful",
              "succeeded",
              "partial",
              "failed",
              "cancelled",
              "pending"
            ],
            "additionalProperties": false
          },
          "source_windows": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "since": {
                    "type": "string",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                    "format": "date-time"
                  },
                  "until": {
                    "type": "string",
                    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
                    "format": "date-time"
                  },
                  "distinct_windows": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 512
                  }
                },
                "required": [
                  "since",
                  "until",
                  "distinct_windows"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "gaps": {
            "maxItems": 5,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "unobserved",
                "incomplete_collection",
                "failed_collection",
                "cancelled_collection",
                "partial_period"
              ]
            }
          },
          "coverage": {
            "type": "string",
            "const": "partial_indexed_sample"
          }
        },
        "required": [
          "start",
          "end",
          "period_partial",
          "state",
          "counts",
          "runs",
          "source_windows",
          "gaps",
          "coverage"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "workspace_id",
    "project_id",
    "project_revision",
    "corpus_snapshot_id",
    "bucket",
    "since",
    "until",
    "generated_at",
    "status",
    "reason",
    "cohort",
    "method_version",
    "time_basis",
    "deduplication",
    "count_meaning",
    "momentum_eligible",
    "forecast_eligible",
    "qualification_reason",
    "observed_bins",
    "unknown_bins",
    "bins"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Exemple d’appel d’outil

Ces exemples utilisent des valeurs fictives vérifiées contre les schémas. Remplacez les identifiants par ceux que vous êtes autorisé à utiliser, les médias par des ressources prêtes et les dates par l’heure confirmée. Vérifiez l’éligibilité du compte avant toute écriture. Cette page n’envoie aucune requête API.

{
  "name": "sosoapi_research_collection_history_query",
  "arguments": {
    "workspace_id": "11111111-1111-4111-8111-111111111111",
    "project_id": "30000000-0000-4000-8000-000000000001",
    "project_revision": 1,
    "corpus_snapshot_id": "30000000-0000-4000-8000-000000000002",
    "bucket": "day",
    "since": "2026-11-01T00:00:00Z",
    "until": "2026-11-02T00:00:00Z"
  }
}

structuredContent

{
  "workspace_id": "11111111-1111-4111-8111-111111111111",
  "project_id": "30000000-0000-4000-8000-000000000001",
  "project_revision": 1,
  "corpus_snapshot_id": "30000000-0000-4000-8000-000000000002",
  "bucket": "day",
  "since": "2026-11-01T00:00:00Z",
  "until": "2026-11-02T00:00:00Z",
  "generated_at": "2026-11-03T00:00:00Z",
  "status": "insufficient_history",
  "reason": "no_completed_observations",
  "cohort": {
    "source": "hacker_news",
    "query_revision": 1,
    "generation": 1,
    "method_version": "hn-indexed-literal-sample/v1",
    "selected_listening_refs": 1,
    "excluded_selected_items": 0,
    "scope": "selected_listening_stream_cohort"
  },
  "method_version": "listening-collection-history/v1",
  "time_basis": "collection_completed_at_or_requested_at",
  "deduplication": "latest_observation_per_source_per_bin",
  "count_meaning": "bounded_collection_observations",
  "momentum_eligible": false,
  "forecast_eligible": false,
  "qualification_reason": "hn_partial_overlapping_sample_unqualified",
  "observed_bins": 0,
  "unknown_bins": 1,
  "bins": [
    {
      "start": "2026-11-01T00:00:00Z",
      "end": "2026-11-02T00:00:00Z",
      "period_partial": false,
      "state": "unknown",
      "counts": null,
      "runs": {
        "total": 0,
        "completed": 0,
        "successful": 0,
        "succeeded": 0,
        "partial": 0,
        "failed": 0,
        "cancelled": 0,
        "pending": 0
      },
      "source_windows": null,
      "gaps": [
        "unobserved"
      ],
      "coverage": "partial_indexed_sample"
    }
  ]
}
Installer ou connecter MCP