隐私偏好

必要功能

用于安全验证和网站基本功能。

始终启用

可选的使用分析

允许 PostHog 用量分析吗?可随时在页脚更改选择。

同时允许在此公开网站上录制会话回放

回放显示公开页面和交互,输入内容及私密内容会被遮蔽。App 回放需要另行选择。

需先开启分析;网站操作回放默认关闭。

浏览器分析选择不会开启账户分析。

仅在使用时加载搜索。在下方浏览所有类别。

MCP 工具

取消舆情监测收集执行

sosoapi_listening_runs_cancel

依 ID 和 mutation_id 取消收集执行;延迟的来源结果不能提交。需要 agent:research。

阅读 Markdown

配置与传输方式

配置: full · 传输方式: stdio、http

选择 core 或 full 以控制客户端显示的工具;这不会变更权限。本地文件上传需要 stdio,无法通过 HTTP 使用。设置 SOSOAPI_OUTPUT_SCHEMAS=1 可在探索结果加入输出schema。无论是否启用此设置,工具皆会返回结构化结果。

权限与副作用

注解帮助客户端描述工具。每次调用仍会检查用户身份验证、角色、资源访问和能力授权。

{
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}

输入字段

「必填」是指在其父对象及所选分支内必填。必填子字段不会使可选父对象变成必填。下列规则与字段名称均复制自契约。

输入字段
字段 / 分支类型 / 必填约束
$object在父对象中必填
  • additionalProperties: false
workspace_idstring在父对象中必填
  • format: "uuid"
mutation_idstring在父对象中必填
  • format: "uuid"
idstring在父对象中必填
  • format: "uuid"
完整 JSON Schema
{
  "type": "object",
  "properties": {
    "workspace_id": {
      "type": "string",
      "format": "uuid"
    },
    "mutation_id": {
      "type": "string",
      "format": "uuid"
    },
    "id": {
      "type": "string",
      "format": "uuid"
    }
  },
  "required": [
    "workspace_id",
    "mutation_id",
    "id"
  ],
  "additionalProperties": false
}

结构化输出

此 schema 描述成功工具结果中的 structuredContent。MCP 响应也包含 content,并可能在调用失败时设置 isError。对于发布,请读取帖子的最终结果,不要把获接受的请求或文字响应当作确认。链接的 API 操作说明了权限和重试规则。

「必填」是指在其父对象及所选分支内必填。必填子字段不会使可选父对象变成必填。下列规则与字段名称均复制自契约。

结构化输出
字段 / 分支类型 / 必填约束
$object在父对象中必填
  • additionalProperties: false
runobject在父对象中必填
  • additionalProperties: false
run.idstring在父对象中必填
  • format: "uuid"
run.workspace_idstring在父对象中必填
  • format: "uuid"
run.stream_idstring在父对象中必填
  • format: "uuid"
run.stream_revisioninteger在父对象中必填
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
run.query_revisioninteger在父对象中必填
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
run.generationinteger在父对象中必填
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
run.sourcestring在父对象中必填
  • const: "hacker_news"
run.statusstring在父对象中必填
  • enum: ["queued","running","partial","succeeded","deferred","cancelled","failed"]
run.reasonstring | null在父对象中必填—
run.reasonanyOf 1string在父对象中必填
  • enum: ["collection_paused","authorization_expired","authorization_revoked","stream_changed","stream_paused","stream_deleted","cancelled","workspace_budget","source_budget","run_budget","source_rate_limited","source_unavailable","source_invalid","execution_exhausted"]
run.reasonanyOf 2null在父对象中必填—
run.requested_atstring在父对象中必填
  • 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)))$"
run.completed_atstring | null在父对象中必填—
run.completed_atanyOf 1string在父对象中必填
  • 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)))$"
run.completed_atanyOf 2null在父对象中必填—
run.retry_afterstring | null在父对象中必填—
run.retry_afteranyOf 1string在父对象中必填
  • 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)))$"
run.retry_afteranyOf 2null在父对象中必填—
run.result_countinteger在父对象中必填
  • minimum: 0
  • maximum: 20
run.provider_getsinteger在父对象中必填
  • minimum: 0
  • maximum: 21
run.coveragestring在父对象中必填
  • const: "partial_indexed_sample"
run.exhaustiveboolean在父对象中必填
  • const: false
run.method_versionstring在父对象中必填
  • const: "hn-indexed-literal-sample/v1"
run.observation_countsobject在父对象中必填
  • additionalProperties: false
run.observation_counts.source_itemsinteger在父对象中必填
  • minimum: 0
  • maximum: 20
run.observation_counts.matched_itemsinteger在父对象中必填
  • minimum: 0
  • maximum: 20
run.observation_counts.removed_itemsinteger在父对象中必填
  • minimum: 0
  • maximum: 20
run.observation_counts.unavailable_itemsinteger在父对象中必填
  • minimum: 0
  • maximum: 20
run.window_sincestring在父对象中必填
  • 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)))$"
run.window_untilstring在父对象中必填
  • 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)))$"
run.pageinteger在父对象中必填
  • minimum: 0
  • maximum: 49
run.next_page_availableboolean在父对象中必填—
完整 JSON Schema
{
  "type": "object",
  "properties": {
    "run": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid"
        },
        "workspace_id": {
          "type": "string",
          "format": "uuid"
        },
        "stream_id": {
          "type": "string",
          "format": "uuid"
        },
        "stream_revision": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        "query_revision": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        "generation": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        "source": {
          "type": "string",
          "const": "hacker_news"
        },
        "status": {
          "type": "string",
          "enum": [
            "queued",
            "running",
            "partial",
            "succeeded",
            "deferred",
            "cancelled",
            "failed"
          ]
        },
        "reason": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "collection_paused",
                "authorization_expired",
                "authorization_revoked",
                "stream_changed",
                "stream_paused",
                "stream_deleted",
                "cancelled",
                "workspace_budget",
                "source_budget",
                "run_budget",
                "source_rate_limited",
                "source_unavailable",
                "source_invalid",
                "execution_exhausted"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "requested_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"
        },
        "completed_at": {
          "anyOf": [
            {
              "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"
            },
            {
              "type": "null"
            }
          ]
        },
        "retry_after": {
          "anyOf": [
            {
              "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"
            },
            {
              "type": "null"
            }
          ]
        },
        "result_count": {
          "type": "integer",
          "minimum": 0,
          "maximum": 20
        },
        "provider_gets": {
          "type": "integer",
          "minimum": 0,
          "maximum": 21
        },
        "coverage": {
          "type": "string",
          "const": "partial_indexed_sample"
        },
        "exhaustive": {
          "type": "boolean",
          "const": false
        },
        "method_version": {
          "type": "string",
          "const": "hn-indexed-literal-sample/v1"
        },
        "observation_counts": {
          "type": "object",
          "properties": {
            "source_items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 20
            },
            "matched_items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 20
            },
            "removed_items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 20
            },
            "unavailable_items": {
              "type": "integer",
              "minimum": 0,
              "maximum": 20
            }
          },
          "required": [
            "source_items",
            "matched_items",
            "removed_items",
            "unavailable_items"
          ],
          "additionalProperties": false
        },
        "window_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"
        },
        "window_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"
        },
        "page": {
          "type": "integer",
          "minimum": 0,
          "maximum": 49
        },
        "next_page_available": {
          "type": "boolean"
        }
      },
      "required": [
        "id",
        "workspace_id",
        "stream_id",
        "stream_revision",
        "query_revision",
        "generation",
        "source",
        "status",
        "reason",
        "requested_at",
        "completed_at",
        "retry_after",
        "result_count",
        "provider_gets",
        "coverage",
        "exhaustive",
        "method_version",
        "observation_counts",
        "window_since",
        "window_until",
        "page",
        "next_page_available"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "run"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

工具调用示例

这些示例使用已依schema检查的虚构值。请将 ID 替换为你有权使用的 ID、将媒体替换为已就绪素材,并将日期替换为已确认的发布时间。提交写入前,请检查账号资格。本页不会发送 API 请求。

{
  "name": "sosoapi_listening_runs_cancel",
  "arguments": {
    "workspace_id": "11111111-1111-4111-8111-111111111111",
    "mutation_id": "11111111-1111-4111-8111-111111111111",
    "id": "11111111-1111-4111-8111-111111111111"
  }
}

structuredContent

{
  "run": {
    "id": "11111111-1111-4111-8111-111111111111",
    "workspace_id": "11111111-1111-4111-8111-111111111111",
    "stream_id": "11111111-1111-4111-8111-111111111111",
    "stream_revision": 1,
    "query_revision": 1,
    "generation": 1,
    "source": "hacker_news",
    "status": "queued",
    "reason": null,
    "requested_at": "2099-01-15T09:00:00Z",
    "completed_at": null,
    "retry_after": null,
    "result_count": 0,
    "provider_gets": 0,
    "coverage": "partial_indexed_sample",
    "exhaustive": false,
    "method_version": "hn-indexed-literal-sample/v1",
    "observation_counts": {
      "source_items": 0,
      "matched_items": 0,
      "removed_items": 0,
      "unavailable_items": 0
    },
    "window_since": "2099-01-15T09:00:00Z",
    "window_until": "2099-01-15T09:00:00Z",
    "page": 0,
    "next_page_available": false
  }
}
安装或连接 MCP