MCP-eszköz
Kutatási gyűjtési előzmények olvasása
sosoapi_research_collection_history_queryKorlátozott UTC-kohorszmegfigyelések olvasása; az ismeretlen nem nulla. A részleges HN-minták nem alkalmasak lendületmérésre vagy előrejelzésre. agent:research szükséges.
Olvasás Markdown formátumbanProfilok és átviteli módok
Profilok: full · Átviteli módok: stdio, http
A core vagy full profillal szabályozhatod a kliens által látható eszközöket; ez nem változtat engedélyt. Helyi fájlfeltöltéshez stdio kell, HTTP-n nem elérhető. A SOSOAPI_OUTPUT_SCHEMAS=1 kimeneti sémákat ad a felderítéshez. Az eszközök e beállítással és nélküle is strukturált eredményt adnak.
Engedélyek és mellékhatások
A jelölések segítenek a kliensnek leírni az eszközt. Minden hívás továbbra is ellenőrzi a felhasználó hitelesítését, szerepkörét, erőforrás-hozzáférését és képességengedélyeit.
{
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": true
}- /research-api/collection-history/query: agent:research · aktuálisan engedélyezett összesített gyűjtési előzmény egy pontos forráskohorszhoz; a gyűjtési darabszám nem közzétételi volumen, piaci növekedés, lendület vagy előrejelzés
Bemeneti mezők
A kötelező jelölés a szülőobjektumon és a kiválasztott ágon belül érvényes. A kötelező gyermek nem teszi kötelezővé az opcionális szülőt. Az alábbi szabályok és mezőnevek a szerződésből származnak.
| Mező / ág | Típus / kötelező | Korlátok |
|---|---|---|
$ | objectA szülőn belül kötelező |
|
workspace_id | stringA szülőn belül kötelező |
|
project_id | stringA szülőn belül kötelező |
|
project_revision | integerA szülőn belül kötelező |
|
corpus_snapshot_id | stringA szülőn belül kötelező |
|
bucket | stringOpcionális / elem |
|
since | stringA szülőn belül kötelező |
|
until | stringA szülőn belül kötelező |
|
Teljes JSON Schema
{
"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"
}
}
}Strukturált kimenet
Ez a séma egy sikeres eszközeredmény structuredContent mezőjét írja le. Az MCP-válasz content mezőt is tartalmaz, és sikertelen hívásnál isError értéket állíthat be. Közzétételnél a bejegyzés végső eredményét olvasd el; ne tekintsd az elfogadott kérést vagy szöveges választ megerősítésnek. A kapcsolódó API-művelet ismerteti az engedélyeket és újrapróbálási szabályokat.
A kötelező jelölés a szülőobjektumon és a kiválasztott ágon belül érvényes. A kötelező gyermek nem teszi kötelezővé az opcionális szülőt. Az alábbi szabályok és mezőnevek a szerződésből származnak.
| Mező / ág | Típus / kötelező | Korlátok |
|---|---|---|
$ | objectA szülőn belül kötelező |
|
workspace_id | stringA szülőn belül kötelező |
|
project_id | stringA szülőn belül kötelező |
|
project_revision | integerA szülőn belül kötelező |
|
corpus_snapshot_id | stringA szülőn belül kötelező |
|
bucket | stringA szülőn belül kötelező |
|
since | stringA szülőn belül kötelező |
|
until | stringA szülőn belül kötelező |
|
generated_at | stringA szülőn belül kötelező |
|
status | stringA szülőn belül kötelező |
|
reason | string | nullA szülőn belül kötelező | — |
reasonanyOf 1 | stringA szülőn belül kötelező |
|
reasonanyOf 2 | nullA szülőn belül kötelező | — |
cohort | object | nullA szülőn belül kötelező | — |
cohortanyOf 1 | objectA szülőn belül kötelező |
|
cohort.sourceanyOf 1 | stringA szülőn belül kötelező |
|
cohort.query_revisionanyOf 1 | integerA szülőn belül kötelező |
|
cohort.generationanyOf 1 | integerA szülőn belül kötelező |
|
cohort.method_versionanyOf 1 | stringA szülőn belül kötelező |
|
cohort.selected_listening_refsanyOf 1 | integerA szülőn belül kötelező |
|
cohort.excluded_selected_itemsanyOf 1 | integerA szülőn belül kötelező |
|
cohort.scopeanyOf 1 | stringA szülőn belül kötelező |
|
cohortanyOf 2 | nullA szülőn belül kötelező | — |
method_version | stringA szülőn belül kötelező |
|
time_basis | stringA szülőn belül kötelező |
|
deduplication | stringA szülőn belül kötelező |
|
count_meaning | stringA szülőn belül kötelező |
|
momentum_eligible | booleanA szülőn belül kötelező |
|
forecast_eligible | booleanA szülőn belül kötelező |
|
qualification_reason | stringA szülőn belül kötelező |
|
observed_bins | integerA szülőn belül kötelező |
|
unknown_bins | integerA szülőn belül kötelező |
|
bins | arrayA szülőn belül kötelező |
|
bins[] | objectOpcionális / elem |
|
bins[].start | stringA szülőn belül kötelező |
|
bins[].end | stringA szülőn belül kötelező |
|
bins[].period_partial | booleanA szülőn belül kötelező | — |
bins[].state | stringA szülőn belül kötelező |
|
bins[].counts | object | nullA szülőn belül kötelező | — |
bins[].countsanyOf 1 | objectA szülőn belül kötelező |
|
bins[].counts.source_itemsanyOf 1 | integerA szülőn belül kötelező |
|
bins[].counts.matched_itemsanyOf 1 | integerA szülőn belül kötelező |
|
bins[].counts.removed_itemsanyOf 1 | integerA szülőn belül kötelező |
|
bins[].counts.unavailable_itemsanyOf 1 | integerA szülőn belül kötelező |
|
bins[].countsanyOf 2 | nullA szülőn belül kötelező | — |
bins[].runs | objectA szülőn belül kötelező |
|
bins[].runs.total | integerA szülőn belül kötelező |
|
bins[].runs.completed | integerA szülőn belül kötelező |
|
bins[].runs.successful | integerA szülőn belül kötelező |
|
bins[].runs.succeeded | integerA szülőn belül kötelező |
|
bins[].runs.partial | integerA szülőn belül kötelező |
|
bins[].runs.failed | integerA szülőn belül kötelező |
|
bins[].runs.cancelled | integerA szülőn belül kötelező |
|
bins[].runs.pending | integerA szülőn belül kötelező |
|
bins[].source_windows | object | nullA szülőn belül kötelező | — |
bins[].source_windowsanyOf 1 | objectA szülőn belül kötelező |
|
bins[].source_windows.sinceanyOf 1 | stringA szülőn belül kötelező |
|
bins[].source_windows.untilanyOf 1 | stringA szülőn belül kötelező |
|
bins[].source_windows.distinct_windowsanyOf 1 | integerA szülőn belül kötelező |
|
bins[].source_windowsanyOf 2 | nullA szülőn belül kötelező | — |
bins[].gaps | arrayA szülőn belül kötelező |
|
bins[].gaps[] | stringOpcionális / elem |
|
bins[].coverage | stringA szülőn belül kötelező |
|
Teljes JSON Schema
{
"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
}Példa eszközhívás
A példák sémákkal ellenőrzött képzeletbeli értékeket használnak. Az azonosítókat engedélyezettekre, a médiát kész tartalomelemekre, a dátumokat megerősített közzétételi időpontra cseréld. Írás beküldése előtt ellenőrizd a fiók jogosultságát. Ez az oldal nem küld API-kérést.
{
"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"
}
]
}