此 MCP 可以做什么
Reads public sources and manages a library of feeds, notes, highlights, files, and page monitors.
工具
输入模式
{'type': 'object', 'required': ['ids'], 'properties': {'ids': {'type': 'array', 'items': {'type': 'string', 'pattern': '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', 'description': 'UUID that identifies the resource; pass it back exactly as smry returned it.'}, 'maxItems': 100, 'minItems': 1}, 'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 32}, 'maxItems': 12}, 'status': {'anyOf': [{'type': 'string', 'const': 'inbox'}, {'type': 'string', 'const': 'later'}, {'type': 'string', 'const': 'archive'}]}, 'starred': {'type': 'boolean'}, 'mark_read': {'type': 'boolean'}, 'content_kind': {'anyOf': [{'type': 'string', 'const': 'article'}, {'type': 'string', 'const': 'website'}, {'type': 'string', 'const': 'book'}, {'type': 'string', 'const': 'email'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'social_post'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'podcast_episode'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'unknown'}]}, 'read_progress': {'anyOf': [{'type': 'integer', 'maximum': 99, 'minimum': 1}, {'type': 'null'}]}}, 'minProperties': 2, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['items', 'updated', 'missing'], 'properties': {'items': {'type': 'array', 'items': {'allOf': [{'type': 'object', 'required': ['id', 'url', 'originalUrl', 'title', 'domain', 'contentKind', 'classification', 'captureMethod', 'format', 'mimeType', 'fileName', 'asset', 'externalId', 'status', 'starred', 'tags', 'savedAt', 'updatedAt', 'lastReadAt', 'readProgress', 'articleStatus'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'asset': {'anyOf': [{'type': 'object', 'required': ['itemId', 'fileName', 'mimeType', 'size', 'checksum', 'updatedAt', 'resourceUri', 'downloadUrl'], 'properties': {'size': {'type': 'number'}, 'itemId': {'type': 'string', 'pattern': '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', 'description': 'UUID that identifies the resource; pass it back exactly as smry returned it.'}, 'checksum': {'type': 'string'}, 'fileName': {'type': 'string'}, 'mimeType': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'downloadUrl': {'type': 'string'}, 'resourceUri': {'type': 'string'}}, 'x-smry-component': 'LibraryAsset', 'additionalProperties': {}}, {'type': 'null'}]}, 'title': {'type': 'string'}, 'domain': {'type': 'string'}, 'format': {'anyOf': [{'type': 'string', 'const': 'html'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'epub'}, {'type': 'string', 'const': 'markdown'}, {'type': 'string', 'const': 'plain_text'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'spreadsheet'}, {'type': 'string', 'const': 'presentation'}, {'type': 'string', 'const': 'audio'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'unknown'}]}, 'status': {'type': 'string'}, 'savedAt': {'type': 'string'}, 'starred': {'type': 'boolean'}, 'fileName': {'type': ['string', 'null']}, 'metadata': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}, 'mimeType': {'type': ['string', 'null']}, 'updatedAt': {'type': 'string'}, 'externalId': {'type': ['string', 'null']}, 'lastReadAt': {'type': ['string', 'null']}, 'contentKind': {'anyOf': [{'type': 'string', 'const': 'article'}, {'type': 'string', 'const': 'website'}, {'type': 'string', 'const': 'book'}, {'type': 'string', 'const': 'email'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'social_post'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'podcast_episode'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'unknown'}]}, 'originalUrl': {'type': ['string', 'null']}, 'readProgress': {'type': ['number', 'null']}, 'articleStatus': {'type': 'string'}, 'captureMethod': {'anyOf': [{'type': 'string', 'const': 'reader'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'upload'}, {'type': 'string', 'const': 'rss'}, {'type': 'string', 'const': 'email_inbox'}, {'type': 'string', 'const': 'api'}, {'type': 'string', 'const': 'import'}]}, 'classification': {'type': 'object', 'required': ['method', 'confidence', 'version', 'updatedAt'], 'properties': {'method': {'anyOf': [{'type': 'string', 'const': 'user'}, {'type': 'string', 'const': 'source_adapter'}, {'type': 'string', 'const': 'mime'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'url'}, {'type': 'string', 'const': 'metadata'}, {'type': 'string', 'const': 'legacy'}, {'type': 'string', 'const': 'fallback'}]}, 'version': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'confidence': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': {}}}, 'x-smry-component': 'LibraryItem', 'additionalProperties': {}}, {'type': 'object', 'properties': {'article': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'additionalProperties': False}]}}, 'missing': {'type': 'number'}, 'updated': {'type': 'number'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name', 'target'], 'properties': {'name': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 50, 'minLength': 1}, 'maxItems': 18}, 'target': {'anyOf': [{'type': 'object', 'required': ['type', 'url'], 'properties': {'url': {'type': 'string', 'maxLength': 2048, 'minLength': 8, 'description': 'A public http(s) URL.'}, 'type': {'type': 'string', 'const': 'page'}, 'instructions': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'normalize_whitespace': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'url'], 'properties': {'url': {'type': 'string', 'maxLength': 2048, 'minLength': 8, 'description': 'A public http(s) URL.'}, 'type': {'type': 'string', 'const': 'sitemap'}, 'exclude': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 50}, 'include': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 50}, 'max_urls': {'type': 'integer', 'maximum': 10000, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'url', 'instructions'], 'properties': {'url': {'type': 'string', 'maxLength': 2048, 'minLength': 8, 'description': 'A public http(s) URL.'}, 'type': {'type': 'string', 'const': 'extract'}, 'instructions': {'type': 'string', 'maxLength': 2000, 'minLength': 1}}, 'additionalProperties': False}], 'description': '"page" watches one URL, "sitemap" watches URL additions/removals, "extract" watches for meaningful site-wide changes per your instructions.'}, 'schedule': {'anyOf': [{'type': 'object', 'required': ['type', 'frequency', 'unit'], 'properties': {'type': {'type': 'string', 'const': 'interval'}, 'unit': {'type': 'string', 'const': 'minutes'}, 'frequency': {'type': 'integer', 'maximum': 43200, 'minimum': 60}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'frequency', 'unit'], 'properties': {'type': {'type': 'string', 'const': 'interval'}, 'unit': {'type': 'string', 'const': 'hours'}, 'frequency': {'type': 'integer', 'maximum': 720, 'minimum': 1}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type', 'frequency', 'unit'], 'properties': {'type': {'type': 'string', 'const': 'interval'}, 'unit': {'type': 'string', 'const': 'days'}, 'frequency': {'type': 'integer', 'maximum': 30, 'minimum': 1}}, 'additionalProperties': False}], 'description': 'Default: daily. Shortest interval: 60 minutes.'}, 'collection': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 100, 'minLength': 1}], 'description': 'Collection id or name. A new name is created. Omit for Unsorted.'}, 'change_detection': {'anyOf': [{'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'exact'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'const': 'semantic'}, 'confidence_threshold': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['monitor', 'subscription', 'limits'], 'properties': {'limits': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}, 'monitor': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}, 'subscription': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'query': {'type': 'string', 'maxLength': 400, 'minLength': 2}, 'locale': {'type': 'string', 'maxLength': 10, 'minLength': 2}, 'collection': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 100, 'minLength': 1}], 'description': 'Collection id or name. A new name is created. Omit for Unsorted.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['object', 'input_type', 'collection', 'followed', 'outcomes'], 'properties': {'object': {'type': 'string', 'const': 'feed_follow'}, 'followed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'outcomes': {'type': 'array', 'items': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}}, 'collection': {'type': 'string'}, 'input_type': {'type': 'string', 'const': 'query/news'}}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'mode': {'anyOf': [{'type': 'string', 'const': 'feeds'}, {'type': 'string', 'const': 'site'}], 'description': '"feeds" searches by topic; "site" discovers what a specific URL publishes.'}, 'query': {'type': 'string', 'maxLength': 2048, 'minLength': 2}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['results'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}}}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['urls'], 'properties': {'urls': {'type': 'array', 'items': {'type': 'string', 'maxLength': 2048, 'minLength': 8}, 'maxItems': 20, 'minItems': 1}, 'collection': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 100, 'minLength': 1}], 'description': 'Collection id or name. A new name is created. Omit for Unsorted.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['object', 'collection', 'followed', 'outcomes'], 'properties': {'object': {'type': 'string', 'const': 'feed_follow'}, 'followed': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'outcomes': {'type': 'array', 'items': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}}, 'collection': {'type': 'string'}}, 'additionalProperties': {}}
输入模式
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 4096}, 'cursor': {'type': 'integer', 'minimum': 1}, 'max_tokens': {'type': 'integer', 'maximum': 25000, 'minimum': 100}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['source_url', 'reader_url', 'title', 'author', 'publisher', 'published_at', 'language', 'extraction_source', 'content_quality', 'cache_hit', 'responded_at', 'total_blocks', 'total_tokens', 'text', 'from_anchor', 'to_anchor', 'tokens_returned', 'next_cursor', 'outline'], 'properties': {'text': {'type': 'string'}, 'title': {'type': 'string'}, 'author': {'type': ['string', 'null']}, 'outline': {'type': 'array', 'items': {'type': 'object', 'required': ['anchor', 'text'], 'properties': {'text': {'type': 'string'}, 'anchor': {'type': 'number'}}, 'additionalProperties': False}}, 'language': {'type': ['string', 'null']}, 'cache_hit': {'type': 'boolean'}, 'publisher': {'type': ['string', 'null']}, 'to_anchor': {'type': ['number', 'null']}, 'reader_url': {'type': 'string'}, 'source_url': {'type': 'string'}, 'from_anchor': {'type': ['number', 'null']}, 'next_cursor': {'type': ['number', 'null']}, 'published_at': {'type': ['string', 'null']}, 'responded_at': {'type': 'string'}, 'total_blocks': {'type': 'number'}, 'total_tokens': {'type': 'number'}, 'content_quality': {'type': ['string', 'null']}, 'tokens_returned': {'type': 'number'}, 'extraction_source': {'type': 'string'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1}, 'where': {'type': 'object', 'properties': {'match': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Case-insensitive text match over title and summary. "a OR b" matches either.'}, 'source': {'type': 'object', 'properties': {'exclude': {'type': 'array', 'items': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 500, 'minLength': 1}], 'description': 'A source id (from any v2 response) or its title. Reads also accept a fragment that matches exactly one title.'}, 'maxItems': 100, 'minItems': 1}, 'include': {'type': 'array', 'items': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 500, 'minLength': 1}], 'description': 'A source id (from any v2 response) or its title. Reads also accept a fragment that matches exactly one title.'}, 'maxItems': 100, 'minItems': 1}}, 'additionalProperties': False}, 'unread': {'type': 'boolean', 'description': 'true = only unread entries, false = only read entries.'}, 'collection': {'type': 'array', 'items': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 100, 'minLength': 1}], 'description': 'A collection id or its exact name.'}, 'maxItems': 20, 'minItems': 1}, 'classification': {'type': 'object', 'required': ['decision'], 'properties': {'decision': {'anyOf': [{'type': 'string', 'const': 'include'}, {'type': 'string', 'const': 'exclude'}]}, 'assessment': {'anyOf': [{'type': 'string', 'const': 'relevant'}, {'type': 'string', 'const': 'irrelevant'}, {'type': 'string', 'const': 'uncertain'}]}}, 'description': "The Collection filter's binary delivery decision and optional underlying assessment. Requires exactly one Collection.", 'additionalProperties': False}, 'published_after': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When the source published the entry (entries with no publish date are excluded; use top-level since to include them). Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}, 'discovered_after': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When smry first saw the entry. Backfill makes old posts look new here, so use it for diffs, not for "what\'s new". Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}, 'published_before': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}, 'discovered_before': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}}, 'description': 'Entry selection predicate: fields AND together; omit a field to not filter on it. Source queries/mutations accept only collection and source; use query having for source-health filters.', 'additionalProperties': False}, 'cursor': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Caller-managed progress: "latest" to start, then the next_cursor you stored.'}, 'fields': {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'const': 'id'}, {'type': 'string', 'const': 'source'}, {'type': 'string', 'const': 'source_id'}, {'type': 'string', 'const': 'collection'}, {'type': 'string', 'const': 'title'}, {'type': 'string', 'const': 'url'}, {'type': 'string', 'const': 'summary'}, {'type': 'string', 'const': 'author'}, {'type': 'string', 'const': 'image_url'}, {'type': 'string', 'const': 'published_at'}, {'type': 'string', 'const': 'discovered_at'}, {'type': 'string', 'const': 'unread'}, {'type': 'string', 'const': 'classification'}, {'type': 'string', 'const': 'feedback'}]}, 'description': 'Project event entries to these fields; ["id"] is the cheapest diff. id is always included.'}, 'consumer_id': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': "smry-managed progress: poll this consumer's saved predicate. Omit cursor and where."}, 'attention_limit': {'type': 'integer', 'maximum': 500, 'minimum': 0, 'description': 'Sources listed per attention bucket (default 5; the *_count fields always carry the full tally). Pass up to 500 for the exhaustive roster, 0 for counts only.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['object', 'events', 'has_more', 'next_cursor', 'checkpoint', 'attention'], 'properties': {'events': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'entry'], 'properties': {'type': {'anyOf': [{'type': 'string', 'const': 'entry.discovered'}, {'type': 'string', 'const': 'entry.classified'}], 'description': 'entry.discovered: smry saw this entry for the first time. entry.classified: a Collection filter reached a decision about an entry you already have.'}, 'entry': {'type': 'object', 'description': "The entry, projected to the requested `fields`. `id` is always present. entry.classified events also carry the filter's decision, assessment, reason, and filter_revision.", 'patternProperties': {'^(.*)$': {}}}}, 'description': 'A single change event.', 'additionalProperties': {}}}, 'object': {'type': 'string', 'const': 'feed_changes'}, 'has_more': {'type': 'boolean'}, 'attention': {'type': 'object', 'required': ['stalled', 'stalled_count', 'erroring', 'erroring_count', 'never_produced', 'never_produced_count'], 'properties': {'stalled': {'type': 'array', 'items': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}}, 'erroring': {'type': 'array', 'items': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}}, 'stalled_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'erroring_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'never_produced': {'type': 'array', 'items': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}}, 'never_produced_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'description': 'Source health, capped to five per bucket (stalled: longest silent first; erroring and never_produced: alphabetical); the *_count fields carry the full tally. Query select:"sources" with having for the complete list.', 'additionalProperties': {}}, 'checkpoint': {'type': 'object', 'required': ['owner', 'consumer_id', 'ack_required'], 'properties': {'owner': {'anyOf': [{'type': 'string', 'const': 'caller'}, {'type': 'string', 'const': 'smry'}]}, 'consumer_id': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'ack_required': {'type': 'boolean', 'description': 'True only for managed delivery; acknowledge next_cursor after processing every event, including an empty batch.'}}, 'additionalProperties': {}}, 'next_cursor': {'type': 'string'}}, 'additionalProperties': {}}
输入模式
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', 'description': 'UUID that identifies the resource; pass it back exactly as smry returned it.'}, 'include_data': {'type': 'boolean'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['asset'], 'properties': {'asset': {'type': 'object', 'required': ['itemId', 'fileName', 'mimeType', 'size', 'checksum', 'updatedAt', 'resourceUri', 'downloadUrl'], 'properties': {'size': {'type': 'number'}, 'itemId': {'type': 'string'}, 'checksum': {'type': 'string'}, 'fileName': {'type': 'string'}, 'mimeType': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'downloadUrl': {'type': 'string'}, 'resourceUri': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'maximum': 250, 'minimum': 1, 'multipleOf': 1, 'description': 'Maximum changes to return in this page, from 1 to 250. Defaults to 100.'}, 'cursor': {'type': 'string', 'maxLength': 500, 'description': "Pass a previous response's nextCursor verbatim, or latest to start at the current head; never construct one."}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['changes', 'nextCursor', 'hasMore'], 'properties': {'changes': {'type': 'array', 'items': {'type': 'object', 'required': ['cursor', 'operation', 'itemId', 'changedAt', 'item'], 'properties': {'item': {'allOf': [{'type': 'object', 'required': ['id', 'url', 'originalUrl', 'title', 'domain', 'contentKind', 'classification', 'captureMethod', 'format', 'mimeType', 'fileName', 'asset', 'externalId', 'status', 'starred', 'tags', 'savedAt', 'updatedAt', 'lastReadAt', 'readProgress', 'articleStatus'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'asset': {'anyOf': [{'type': 'object', 'required': ['itemId', 'fileName', 'mimeType', 'size', 'checksum', 'updatedAt', 'resourceUri', 'downloadUrl'], 'properties': {'size': {'type': 'number'}, 'itemId': {'type': 'string', 'pattern': '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', 'description': 'UUID that identifies the resource; pass it back exactly as smry returned it.'}, 'checksum': {'type': 'string'}, 'fileName': {'type': 'string'}, 'mimeType': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'downloadUrl': {'type': 'string'}, 'resourceUri': {'type': 'string'}}, 'x-smry-component': 'LibraryAsset', 'additionalProperties': {}}, {'type': 'null'}]}, 'title': {'type': 'string'}, 'domain': {'type': 'string'}, 'format': {'anyOf': [{'type': 'string', 'const': 'html'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'epub'}, {'type': 'string', 'const': 'markdown'}, {'type': 'string', 'const': 'plain_text'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'spreadsheet'}, {'type': 'string', 'const': 'presentation'}, {'type': 'string', 'const': 'audio'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'unknown'}]}, 'status': {'type': 'string'}, 'savedAt': {'type': 'string'}, 'starred': {'type': 'boolean'}, 'fileName': {'type': ['string', 'null']}, 'metadata': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}, 'mimeType': {'type': ['string', 'null']}, 'updatedAt': {'type': 'string'}, 'externalId': {'type': ['string', 'null']}, 'lastReadAt': {'type': ['string', 'null']}, 'contentKind': {'anyOf': [{'type': 'string', 'const': 'article'}, {'type': 'string', 'const': 'website'}, {'type': 'string', 'const': 'book'}, {'type': 'string', 'const': 'email'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'social_post'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'podcast_episode'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'unknown'}]}, 'originalUrl': {'type': ['string', 'null']}, 'readProgress': {'type': ['number', 'null']}, 'articleStatus': {'type': 'string'}, 'captureMethod': {'anyOf': [{'type': 'string', 'const': 'reader'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'upload'}, {'type': 'string', 'const': 'rss'}, {'type': 'string', 'const': 'email_inbox'}, {'type': 'string', 'const': 'api'}, {'type': 'string', 'const': 'import'}]}, 'classification': {'type': 'object', 'required': ['method', 'confidence', 'version', 'updatedAt'], 'properties': {'method': {'anyOf': [{'type': 'string', 'const': 'user'}, {'type': 'string', 'const': 'source_adapter'}, {'type': 'string', 'const': 'mime'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'url'}, {'type': 'string', 'const': 'metadata'}, {'type': 'string', 'const': 'legacy'}, {'type': 'string', 'const': 'fallback'}]}, 'version': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'confidence': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': {}}}, 'x-smry-component': 'LibraryItem', 'additionalProperties': {}}, {'type': 'object', 'properties': {'article': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'additionalProperties': False}]}, 'cursor': {'type': 'string'}, 'itemId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'changedAt': {'type': 'string'}, 'operation': {'enum': ['upsert', 'delete'], 'type': 'string'}}, 'additionalProperties': False}}, 'hasMore': {'type': 'boolean'}, 'nextCursor': {'type': 'string'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['ref'], 'properties': {'ref': {'type': 'string', 'maxLength': 1000, 'minLength': 3}, 'content_max_characters': {'type': 'number', 'maximum': 12000, 'minimum': 500, 'multipleOf': 1, 'description': 'Maximum characters of object text to return, from 500 to 12000. Defaults to 12000.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['ref', 'type', 'object'], 'properties': {'ref': {'type': 'string'}, 'type': {'enum': ['item', 'note', 'highlight'], 'type': 'string'}, 'object': {}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', 'description': 'UUID that identifies the resource; pass it back exactly as smry returned it.'}, 'cursor': {'type': 'integer', 'minimum': 0}, 'max_tokens': {'type': 'integer', 'maximum': 25000, 'minimum': 100}, 'include_content': {'type': 'boolean', 'default': True, 'description': "Include the item's stored article text. Defaults to true."}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['item'], 'properties': {'item': {'allOf': [{'type': 'object', 'required': ['id', 'url', 'originalUrl', 'title', 'domain', 'contentKind', 'classification', 'captureMethod', 'format', 'mimeType', 'fileName', 'asset', 'externalId', 'status', 'starred', 'tags', 'savedAt', 'updatedAt', 'lastReadAt', 'readProgress', 'articleStatus'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'asset': {'anyOf': [{'type': 'object', 'required': ['itemId', 'fileName', 'mimeType', 'size', 'checksum', 'updatedAt', 'resourceUri', 'downloadUrl'], 'properties': {'size': {'type': 'number'}, 'itemId': {'type': 'string', 'pattern': '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', 'description': 'UUID that identifies the resource; pass it back exactly as smry returned it.'}, 'checksum': {'type': 'string'}, 'fileName': {'type': 'string'}, 'mimeType': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'downloadUrl': {'type': 'string'}, 'resourceUri': {'type': 'string'}}, 'x-smry-component': 'LibraryAsset', 'additionalProperties': {}}, {'type': 'null'}]}, 'title': {'type': 'string'}, 'domain': {'type': 'string'}, 'format': {'anyOf': [{'type': 'string', 'const': 'html'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'epub'}, {'type': 'string', 'const': 'markdown'}, {'type': 'string', 'const': 'plain_text'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'spreadsheet'}, {'type': 'string', 'const': 'presentation'}, {'type': 'string', 'const': 'audio'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'unknown'}]}, 'status': {'type': 'string'}, 'savedAt': {'type': 'string'}, 'starred': {'type': 'boolean'}, 'fileName': {'type': ['string', 'null']}, 'metadata': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}, 'mimeType': {'type': ['string', 'null']}, 'updatedAt': {'type': 'string'}, 'externalId': {'type': ['string', 'null']}, 'lastReadAt': {'type': ['string', 'null']}, 'contentKind': {'anyOf': [{'type': 'string', 'const': 'article'}, {'type': 'string', 'const': 'website'}, {'type': 'string', 'const': 'book'}, {'type': 'string', 'const': 'email'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'social_post'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'podcast_episode'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'unknown'}]}, 'originalUrl': {'type': ['string', 'null']}, 'readProgress': {'type': ['number', 'null']}, 'articleStatus': {'type': 'string'}, 'captureMethod': {'anyOf': [{'type': 'string', 'const': 'reader'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'upload'}, {'type': 'string', 'const': 'rss'}, {'type': 'string', 'const': 'email_inbox'}, {'type': 'string', 'const': 'api'}, {'type': 'string', 'const': 'import'}]}, 'classification': {'type': 'object', 'required': ['method', 'confidence', 'version', 'updatedAt'], 'properties': {'method': {'anyOf': [{'type': 'string', 'const': 'user'}, {'type': 'string', 'const': 'source_adapter'}, {'type': 'string', 'const': 'mime'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'url'}, {'type': 'string', 'const': 'metadata'}, {'type': 'string', 'const': 'legacy'}, {'type': 'string', 'const': 'fallback'}]}, 'version': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'confidence': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': {}}}, 'x-smry-component': 'LibraryItem', 'additionalProperties': {}}, {'type': 'object', 'properties': {'article': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'properties': {'tag': {'type': 'string', 'maxLength': 32, 'minLength': 1, 'description': 'Return only items carrying this tag, matching without regard to case or surrounding spaces.'}, 'view': {'anyOf': [{'type': 'string', 'const': 'all'}, {'type': 'string', 'const': 'history'}], 'description': 'Set history for reading history, the only way to read it; defaults to all saved items.'}, 'limit': {'type': 'number', 'maximum': 100, 'minimum': 1, 'multipleOf': 1, 'description': 'Maximum items to return, from 1 to 100. Defaults to 50, and is capped at 20 with includeContent.'}, 'query': {'type': 'string', 'maxLength': 500, 'description': 'Full-text search over saved titles and text; omit to list without searching.'}, 'cursor': {'type': 'string', 'maxLength': 500, 'description': "Opaque page token: pass the previous response's nextCursor verbatim and never construct one."}, 'format': {'anyOf': [{'type': 'string', 'const': 'html'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'epub'}, {'type': 'string', 'const': 'markdown'}, {'type': 'string', 'const': 'plain_text'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'spreadsheet'}, {'type': 'string', 'const': 'presentation'}, {'type': 'string', 'const': 'audio'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'unknown'}], 'description': 'Return only items stored in this format, such as html, pdf, or epub.'}, 'status': {'anyOf': [{'type': 'string', 'const': 'inbox'}, {'type': 'string', 'const': 'later'}, {'type': 'string', 'const': 'archive'}], 'description': 'Return only items in this triage status: inbox, later, or archive.'}, 'starred': {'type': 'boolean', 'description': 'Set true for starred items only, or false for unstarred items only.'}, 'external_id': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': 'Return only the item saved under this external id from your own system.'}, 'saved_after': {'type': 'string', 'maxLength': 80, 'description': 'Items saved after this time: "7d", "36h", "now", or an ISO date. Use for "saved this week".'}, 'content_kind': {'anyOf': [{'type': 'string', 'const': 'article'}, {'type': 'string', 'const': 'website'}, {'type': 'string', 'const': 'book'}, {'type': 'string', 'const': 'email'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'social_post'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'podcast_episode'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'unknown'}], 'description': 'Return only items of this content kind, such as article, pdf, or video.'}, 'updated_after': {'type': 'string', 'maxLength': 80, 'description': 'Items whose record changed after this time (status, tags, read progress, or a save): "7d", "36h", "now", or an ISO date. For "saved this week" use savedAfter.'}, 'capture_method': {'anyOf': [{'type': 'string', 'const': 'reader'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'upload'}, {'type': 'string', 'const': 'rss'}, {'type': 'string', 'const': 'email_inbox'}, {'type': 'string', 'const': 'api'}, {'type': 'string', 'const': 'import'}], 'description': 'Return only items captured this way, such as reader, extension, upload, or api.'}, 'include_counts': {'type': 'boolean'}, 'include_content': {'type': 'boolean', 'description': "Include each item's stored article text. Defaults to false."}, 'include_metadata': {'type': 'boolean', 'description': 'Include the free-form metadata object saved through the API. Everything else is always returned.'}, 'content_max_characters': {'type': 'number', 'maximum': 12000, 'minimum': 500, 'multipleOf': 1, 'description': 'Maximum characters of text per item when includeContent is set, from 500 to 12000. Defaults to 4000.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['items', 'nextCursor'], 'properties': {'items': {'type': 'array', 'items': {'allOf': [{'type': 'object', 'required': ['id', 'url', 'originalUrl', 'title', 'domain', 'contentKind', 'classification', 'captureMethod', 'format', 'mimeType', 'fileName', 'asset', 'externalId', 'status', 'starred', 'tags', 'savedAt', 'updatedAt', 'lastReadAt', 'readProgress', 'articleStatus'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'asset': {'anyOf': [{'type': 'object', 'required': ['itemId', 'fileName', 'mimeType', 'size', 'checksum', 'updatedAt', 'resourceUri', 'downloadUrl'], 'properties': {'size': {'type': 'number'}, 'itemId': {'type': 'string', 'pattern': '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', 'description': 'UUID that identifies the resource; pass it back exactly as smry returned it.'}, 'checksum': {'type': 'string'}, 'fileName': {'type': 'string'}, 'mimeType': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'downloadUrl': {'type': 'string'}, 'resourceUri': {'type': 'string'}}, 'x-smry-component': 'LibraryAsset', 'additionalProperties': {}}, {'type': 'null'}]}, 'title': {'type': 'string'}, 'domain': {'type': 'string'}, 'format': {'anyOf': [{'type': 'string', 'const': 'html'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'epub'}, {'type': 'string', 'const': 'markdown'}, {'type': 'string', 'const': 'plain_text'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'spreadsheet'}, {'type': 'string', 'const': 'presentation'}, {'type': 'string', 'const': 'audio'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'unknown'}]}, 'status': {'type': 'string'}, 'savedAt': {'type': 'string'}, 'starred': {'type': 'boolean'}, 'fileName': {'type': ['string', 'null']}, 'metadata': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}, 'mimeType': {'type': ['string', 'null']}, 'updatedAt': {'type': 'string'}, 'externalId': {'type': ['string', 'null']}, 'lastReadAt': {'type': ['string', 'null']}, 'contentKind': {'anyOf': [{'type': 'string', 'const': 'article'}, {'type': 'string', 'const': 'website'}, {'type': 'string', 'const': 'book'}, {'type': 'string', 'const': 'email'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'social_post'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'podcast_episode'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'unknown'}]}, 'originalUrl': {'type': ['string', 'null']}, 'readProgress': {'type': ['number', 'null']}, 'articleStatus': {'type': 'string'}, 'captureMethod': {'anyOf': [{'type': 'string', 'const': 'reader'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'upload'}, {'type': 'string', 'const': 'rss'}, {'type': 'string', 'const': 'email_inbox'}, {'type': 'string', 'const': 'api'}, {'type': 'string', 'const': 'import'}]}, 'classification': {'type': 'object', 'required': ['method', 'confidence', 'version', 'updatedAt'], 'properties': {'method': {'anyOf': [{'type': 'string', 'const': 'user'}, {'type': 'string', 'const': 'source_adapter'}, {'type': 'string', 'const': 'mime'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'url'}, {'type': 'string', 'const': 'metadata'}, {'type': 'string', 'const': 'legacy'}, {'type': 'string', 'const': 'fallback'}]}, 'version': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'confidence': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': {}}}, 'x-smry-component': 'LibraryItem', 'additionalProperties': {}}, {'type': 'object', 'properties': {'article': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'additionalProperties': False}]}}, 'counts': {'type': 'object', 'required': ['total', 'statuses', 'contentKinds'], 'properties': {'total': {'type': 'number'}, 'statuses': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}, 'contentKinds': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}}, 'additionalProperties': False}, 'nextCursor': {'type': ['string', 'null']}, 'approximate': {'type': 'boolean'}, 'matchedTerms': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'properties': {'limit': {'type': 'number', 'maximum': 100, 'minimum': 1, 'multipleOf': 1, 'description': 'Maximum objects to return in this page, from 1 to 100. Defaults to 50.'}, 'query': {'type': 'string', 'maxLength': 500, 'description': 'Full-text search across saved items, notes, and highlights; omit to list the whole corpus.'}, 'types': {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'const': 'item'}, {'type': 'string', 'const': 'note'}, {'type': 'string', 'const': 'highlight'}]}, 'maxItems': 3, 'minItems': 1}, 'cursor': {'type': 'string', 'maxLength': 1000, 'description': "Opaque page token: pass the previous response's nextCursor verbatim and never construct one."}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['objects', 'nextCursor', 'total', 'partial'], 'properties': {'total': {'type': 'number'}, 'objects': {'type': 'array', 'items': {'type': 'object', 'required': ['ref', 'type', 'title', 'snippet', 'sourceUrl', 'updatedAt', 'mimeType', 'hasAsset', 'score'], 'properties': {'ref': {'type': 'string'}, 'type': {'enum': ['item', 'note', 'highlight'], 'type': 'string'}, 'score': {'type': 'number'}, 'title': {'type': 'string'}, 'snippet': {'type': 'string'}, 'hasAsset': {'type': 'boolean'}, 'mimeType': {'type': ['string', 'null']}, 'sourceUrl': {'type': ['string', 'null']}, 'updatedAt': {'type': 'string'}}, 'additionalProperties': False}}, 'partial': {'type': 'boolean'}, 'nextCursor': {'type': ['string', 'null']}, 'approximate': {'type': 'boolean'}, 'matchedTerms': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'id': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'name': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'action': {'enum': ['list', 'create', 'update', 'delete'], 'type': 'string', 'description': '"list": List Collections and their managed-feed filters · "create": Create a Collection · "update": Rename a Collection or replace its input membership · "delete": Delete a Collection'}, 'source_ids': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'maxItems': 1000}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'id': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'where': {'type': 'object', 'properties': {'match': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Case-insensitive text match over title and summary. "a OR b" matches either.'}, 'source': {'type': 'object', 'properties': {'exclude': {'type': 'array', 'items': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 500, 'minLength': 1}], 'description': 'A source id (from any v2 response) or its title. Reads also accept a fragment that matches exactly one title.'}, 'maxItems': 100, 'minItems': 1}, 'include': {'type': 'array', 'items': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 500, 'minLength': 1}], 'description': 'A source id (from any v2 response) or its title. Reads also accept a fragment that matches exactly one title.'}, 'maxItems': 100, 'minItems': 1}}, 'additionalProperties': False}, 'unread': {'type': 'boolean', 'description': 'true = only unread entries, false = only read entries.'}, 'collection': {'type': 'array', 'items': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 100, 'minLength': 1}], 'description': 'A collection id or its exact name.'}, 'maxItems': 20, 'minItems': 1}, 'classification': {'type': 'object', 'required': ['decision'], 'properties': {'decision': {'anyOf': [{'type': 'string', 'const': 'include'}, {'type': 'string', 'const': 'exclude'}]}, 'assessment': {'anyOf': [{'type': 'string', 'const': 'relevant'}, {'type': 'string', 'const': 'irrelevant'}, {'type': 'string', 'const': 'uncertain'}]}}, 'description': "The Collection filter's binary delivery decision and optional underlying assessment. Requires exactly one Collection.", 'additionalProperties': False}, 'published_after': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When the source published the entry (entries with no publish date are excluded; use top-level since to include them). Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}, 'discovered_after': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When smry first saw the entry. Backfill makes old posts look new here, so use it for diffs, not for "what\'s new". Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}, 'published_before': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}, 'discovered_before': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}}, 'description': 'Entry selection predicate: fields AND together; omit a field to not filter on it. Source queries/mutations accept only collection and source; use query having for source-health filters.', 'additionalProperties': False}, 'action': {'enum': ['create', 'list', 'ack', 'delete'], 'type': 'string', 'description': '"create": Create a managed feed consumer · "list": List managed consumers with pending counts · "ack": Acknowledge a managed consumer batch · "delete": Delete a managed feed consumer'}, 'cursor': {'type': 'string', 'maxLength': 500, 'minLength': 1}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['action'], 'properties': {'action': {'enum': ['preview', 'apply'], 'type': 'string', 'description': '"preview": Preview a Collection filter without changing the feed · "apply": Apply a previously previewed Collection filter'}, 'filter': {'anyOf': [{'type': 'object', 'required': ['prompt', 'whenUncertain'], 'properties': {'prompt': {'type': 'string', 'maxLength': 700, 'minLength': 1}, 'whenUncertain': {'anyOf': [{'type': 'string', 'const': 'include'}, {'type': 'string', 'const': 'exclude'}]}}, 'additionalProperties': False}, {'type': 'object', 'required': ['prompt', 'uncertaintyPolicy'], 'properties': {'prompt': {'type': 'string', 'maxLength': 700, 'minLength': 1}, 'uncertaintyPolicy': {'anyOf': [{'type': 'string', 'const': 'include_for_review'}, {'type': 'string', 'const': 'exclude'}]}}, 'description': 'Deprecated for one SDK release. include_for_review normalizes to whenUncertain:include; no review queue is created.', 'additionalProperties': False}, {'type': 'null'}]}, 'collection': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}, 'previewToken': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'expectedRevision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['op'], 'properties': {'op': {'anyOf': [{'type': 'string', 'const': 'sources.unfollow'}, {'type': 'string', 'const': 'sources.move'}, {'type': 'string', 'const': 'sources.rename'}, {'type': 'string', 'const': 'entries.mark_read'}, {'type': 'string', 'const': 'entries.mark_unread'}, {'type': 'string', 'const': 'collections.create'}, {'type': 'string', 'const': 'collections.rename'}, {'type': 'string', 'const': 'collections.delete'}], 'description': 'sources.* use where.source or where.collection, never entry filters. entries.* use the full where predicate. collections.rename/delete select one where.collection; collections.create uses set.name.'}, 'set': {'type': 'object', 'properties': {'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Required for collections.create and collections.rename: the collection name.'}, 'title': {'type': 'string', 'maxLength': 300, 'minLength': 1, 'description': 'Required for sources.rename: the new source title.'}, 'collection': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'minLength': 1}], 'description': 'Required for sources.move: destination collection id or name.'}}, 'additionalProperties': False}, 'where': {'type': 'object', 'properties': {'match': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Case-insensitive text match over title and summary. "a OR b" matches either.'}, 'source': {'type': 'object', 'properties': {'exclude': {'type': 'array', 'items': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 500, 'minLength': 1}], 'description': 'A source id (from any v2 response) or its title. Reads also accept a fragment that matches exactly one title.'}, 'maxItems': 100, 'minItems': 1}, 'include': {'type': 'array', 'items': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 500, 'minLength': 1}], 'description': 'A source id (from any v2 response) or its title. Reads also accept a fragment that matches exactly one title.'}, 'maxItems': 100, 'minItems': 1}}, 'additionalProperties': False}, 'unread': {'type': 'boolean', 'description': 'true = only unread entries, false = only read entries.'}, 'collection': {'type': 'array', 'items': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 100, 'minLength': 1}], 'description': 'A collection id or its exact name.'}, 'maxItems': 20, 'minItems': 1}, 'classification': {'type': 'object', 'required': ['decision'], 'properties': {'decision': {'anyOf': [{'type': 'string', 'const': 'include'}, {'type': 'string', 'const': 'exclude'}]}, 'assessment': {'anyOf': [{'type': 'string', 'const': 'relevant'}, {'type': 'string', 'const': 'irrelevant'}, {'type': 'string', 'const': 'uncertain'}]}}, 'description': "The Collection filter's binary delivery decision and optional underlying assessment. Requires exactly one Collection.", 'additionalProperties': False}, 'published_after': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When the source published the entry (entries with no publish date are excluded; use top-level since to include them). Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}, 'discovered_after': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When smry first saw the entry. Backfill makes old posts look new here, so use it for diffs, not for "what\'s new". Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}, 'published_before': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}, 'discovered_before': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}}, 'description': 'Entry selection predicate: fields AND together; omit a field to not filter on it. Source queries/mutations accept only collection and source; use query having for source-health filters.', 'additionalProperties': False}, 'dry_run': {'type': 'boolean', 'description': 'Default true: preview affected records and return a commit_token. Explicit false applies immediately; prefer preview then commit_token for agent workflows.'}, 'commit_token': {'type': 'string', 'maxLength': 100, 'description': 'From a dry run. Single-use and idempotent: resending after a network failure replays the recorded outcome.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': {}}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['pages'], 'properties': {'pages': {'type': 'array', 'items': {'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'live': {'type': 'boolean'}, 'start': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'context': {'type': 'string', 'maxLength': 2000, 'minLength': 1}}}, 'maxItems': 4, 'minItems': 1}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['pages', 'failures', 'budgetReached'], 'properties': {'pages': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'failures': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'budgetReached': {'type': 'boolean'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Default 20, maximum 100; page further with next_cursor.'}, 'since': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'The "what\'s new" shorthand: entries published after this time (falling back to discovery time when the feed gives none), newest published first. {"since":"1d"} is the whole catch-up call. Entries only.'}, 'where': {'type': 'object', 'properties': {'match': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Case-insensitive text match over title and summary. "a OR b" matches either.'}, 'source': {'type': 'object', 'properties': {'exclude': {'type': 'array', 'items': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 500, 'minLength': 1}], 'description': 'A source id (from any v2 response) or its title. Reads also accept a fragment that matches exactly one title.'}, 'maxItems': 100, 'minItems': 1}, 'include': {'type': 'array', 'items': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 500, 'minLength': 1}], 'description': 'A source id (from any v2 response) or its title. Reads also accept a fragment that matches exactly one title.'}, 'maxItems': 100, 'minItems': 1}}, 'additionalProperties': False}, 'unread': {'type': 'boolean', 'description': 'true = only unread entries, false = only read entries.'}, 'collection': {'type': 'array', 'items': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}, {'type': 'string', 'maxLength': 100, 'minLength': 1}], 'description': 'A collection id or its exact name.'}, 'maxItems': 20, 'minItems': 1}, 'classification': {'type': 'object', 'required': ['decision'], 'properties': {'decision': {'anyOf': [{'type': 'string', 'const': 'include'}, {'type': 'string', 'const': 'exclude'}]}, 'assessment': {'anyOf': [{'type': 'string', 'const': 'relevant'}, {'type': 'string', 'const': 'irrelevant'}, {'type': 'string', 'const': 'uncertain'}]}}, 'description': "The Collection filter's binary delivery decision and optional underlying assessment. Requires exactly one Collection.", 'additionalProperties': False}, 'published_after': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When the source published the entry (entries with no publish date are excluded; use top-level since to include them). Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}, 'discovered_after': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'When smry first saw the entry. Backfill makes old posts look new here, so use it for diffs, not for "what\'s new". Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}, 'published_before': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}, 'discovered_before': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Relative window ("7d", "36h", "45m", "2w"), "now", or ISO date.'}}, 'description': 'Entry selection predicate: fields AND together; omit a field to not filter on it. Source queries/mutations accept only collection and source; use query having for source-health filters.', 'additionalProperties': False}, 'cursor': {'type': 'string', 'maxLength': 500, 'description': 'Only a next_cursor from a previous response; omit on the first call.'}, 'fields': {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'const': 'id'}, {'type': 'string', 'const': 'source'}, {'type': 'string', 'const': 'source_id'}, {'type': 'string', 'const': 'collection'}, {'type': 'string', 'const': 'title'}, {'type': 'string', 'const': 'url'}, {'type': 'string', 'const': 'summary'}, {'type': 'string', 'const': 'author'}, {'type': 'string', 'const': 'image_url'}, {'type': 'string', 'const': 'published_at'}, {'type': 'string', 'const': 'discovered_at'}, {'type': 'string', 'const': 'unread'}, {'type': 'string', 'const': 'classification'}, {'type': 'string', 'const': 'feedback'}]}, 'maxItems': 14, 'description': 'Project only these entry fields. ["id"] is the cheap diff shape. Summary is opt-in.'}, 'format': {'anyOf': [{'type': 'string', 'const': 'json'}, {'type': 'string', 'const': 'compact'}], 'description': '"compact" returns token-lean text lines (#entry_id [source · s<source_id> · collection] date title / url) in `text`; entries is then an empty array and fields is ignored.'}, 'having': {'type': 'object', 'properties': {'count': {'type': 'object', 'properties': {'gte': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'lte': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': {}}, 'unread': {'type': 'object', 'properties': {'gte': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'lte': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': {}}, 'silent_days': {'type': 'object', 'properties': {'gte': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'lte': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': {}}}, 'description': 'Filter groups/sources on derived values.', 'additionalProperties': {}}, 'select': {'anyOf': [{'type': 'string', 'const': 'entries'}, {'type': 'string', 'const': 'sources'}, {'type': 'string', 'const': 'aggregate'}], 'description': '"entries" = rows · "sources" = per-source health (where.collection/source only; use having for health filters; stalled = nothing published in 14 days and nothing delivered in 7, quiet = nothing delivered in 7) · "aggregate" = counts. Default "entries".'}, 'compare': {'type': 'object', 'required': ['window', 'baseline'], 'properties': {'window': {'type': 'string', 'maxLength': 64}, 'baseline': {'type': 'string', 'maxLength': 64}}, 'description': 'Trend detection for aggregates: counts inside the window vs the prior baseline, e.g. {"window":"7d","baseline":"28d"}.', 'additionalProperties': {}}, 'group_by': {'anyOf': [{'type': 'string', 'const': 'source'}, {'type': 'string', 'const': 'collection'}, {'type': 'string', 'const': 'day'}]}, 'order_by': {'anyOf': [{'type': 'string', 'const': '-discovered_at'}, {'type': 'string', 'const': 'discovered_at'}, {'type': 'string', 'const': '-published_at'}, {'type': 'string', 'const': 'published_at'}], 'description': 'Default -discovered_at: newest arrivals first, so backfilled items never hide.'}, 'per_source_limit': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Fair sample: at most this many entries per source across the result set, before pagination. Omit for an exhaustive stream. omitted.by_per_source_limit reports articles outside this sample.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['object', 'select'], 'properties': {'object': {'type': 'string', 'const': 'feed_query'}, 'select': {'type': 'string'}, 'classification_coverage': {'type': 'object', 'required': ['collection_id', 'filter_revision', 'status', 'total', 'classified', 'pending', 'degraded'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'status': {'anyOf': [{'type': 'string', 'const': 'pending'}, {'type': 'string', 'const': 'complete'}, {'type': 'string', 'const': 'degraded'}]}, 'pending': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'degraded': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'classified': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'collection_id': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'filter_revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'description': "Coverage before the classification decision and pagination. Pending articles are not excluded; retry the query after classification catches up. Degraded assessments used the filter's uncertainty policy.", 'additionalProperties': {}}}, 'description': 'entries: {total, returned, omitted:{by_limit}, next_cursor, entries[] | text} · sources: {total, returned, omitted:{by_having,by_limit}, next_cursor, sources[]} · aggregate: {group_by, total_entries, groups[]}. Filtered queries include classification_coverage. Source fetch_status and last_fetched_at describe fetching; legacy health describes publisher activity, so stalled does not mean fetching failed.', 'additionalProperties': {}}
输入模式
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', 'description': 'UUID that identifies the resource; pass it back exactly as smry returned it.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['ok', 'id'], 'properties': {'id': {'type': 'string'}, 'ok': {'type': 'boolean'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 4096}, 'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 32}, 'maxItems': 12}, 'status': {'anyOf': [{'type': 'string', 'const': 'inbox'}, {'type': 'string', 'const': 'later'}, {'type': 'string', 'const': 'archive'}]}, 'starred': {'type': 'boolean'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['item', 'extraction', 'alreadySaved'], 'properties': {'item': {'allOf': [{'type': 'object', 'required': ['id', 'url', 'originalUrl', 'title', 'domain', 'contentKind', 'classification', 'captureMethod', 'format', 'mimeType', 'fileName', 'asset', 'externalId', 'status', 'starred', 'tags', 'savedAt', 'updatedAt', 'lastReadAt', 'readProgress', 'articleStatus'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'asset': {'anyOf': [{'type': 'object', 'required': ['itemId', 'fileName', 'mimeType', 'size', 'checksum', 'updatedAt', 'resourceUri', 'downloadUrl'], 'properties': {'size': {'type': 'number'}, 'itemId': {'type': 'string', 'pattern': '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', 'description': 'UUID that identifies the resource; pass it back exactly as smry returned it.'}, 'checksum': {'type': 'string'}, 'fileName': {'type': 'string'}, 'mimeType': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'downloadUrl': {'type': 'string'}, 'resourceUri': {'type': 'string'}}, 'x-smry-component': 'LibraryAsset', 'additionalProperties': {}}, {'type': 'null'}]}, 'title': {'type': 'string'}, 'domain': {'type': 'string'}, 'format': {'anyOf': [{'type': 'string', 'const': 'html'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'epub'}, {'type': 'string', 'const': 'markdown'}, {'type': 'string', 'const': 'plain_text'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'spreadsheet'}, {'type': 'string', 'const': 'presentation'}, {'type': 'string', 'const': 'audio'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'unknown'}]}, 'status': {'type': 'string'}, 'savedAt': {'type': 'string'}, 'starred': {'type': 'boolean'}, 'fileName': {'type': ['string', 'null']}, 'metadata': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}, 'mimeType': {'type': ['string', 'null']}, 'updatedAt': {'type': 'string'}, 'externalId': {'type': ['string', 'null']}, 'lastReadAt': {'type': ['string', 'null']}, 'contentKind': {'anyOf': [{'type': 'string', 'const': 'article'}, {'type': 'string', 'const': 'website'}, {'type': 'string', 'const': 'book'}, {'type': 'string', 'const': 'email'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'social_post'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'podcast_episode'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'unknown'}]}, 'originalUrl': {'type': ['string', 'null']}, 'readProgress': {'type': ['number', 'null']}, 'articleStatus': {'type': 'string'}, 'captureMethod': {'anyOf': [{'type': 'string', 'const': 'reader'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'upload'}, {'type': 'string', 'const': 'rss'}, {'type': 'string', 'const': 'email_inbox'}, {'type': 'string', 'const': 'api'}, {'type': 'string', 'const': 'import'}]}, 'classification': {'type': 'object', 'required': ['method', 'confidence', 'version', 'updatedAt'], 'properties': {'method': {'anyOf': [{'type': 'string', 'const': 'user'}, {'type': 'string', 'const': 'source_adapter'}, {'type': 'string', 'const': 'mime'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'url'}, {'type': 'string', 'const': 'metadata'}, {'type': 'string', 'const': 'legacy'}, {'type': 'string', 'const': 'fallback'}]}, 'version': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'confidence': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': {}}}, 'x-smry-component': 'LibraryItem', 'additionalProperties': {}}, {'type': 'object', 'properties': {'article': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'additionalProperties': False}]}, 'extraction': {'type': 'object', 'required': ['source', 'cacheHit', 'qualityStatus'], 'properties': {'source': {'type': 'string'}, 'cacheHit': {'type': 'boolean'}, 'qualityStatus': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'alreadySaved': {'type': 'boolean'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['title', 'content'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 4096}, 'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 32}, 'maxItems': 12}, 'title': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'author': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}]}, 'format': {'anyOf': [{'type': 'string', 'const': 'html'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'epub'}, {'type': 'string', 'const': 'markdown'}, {'type': 'string', 'const': 'plain_text'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'spreadsheet'}, {'type': 'string', 'const': 'presentation'}, {'type': 'string', 'const': 'audio'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'unknown'}]}, 'status': {'anyOf': [{'type': 'string', 'const': 'inbox'}, {'type': 'string', 'const': 'later'}, {'type': 'string', 'const': 'archive'}]}, 'content': {'type': 'string', 'maxLength': 2000000, 'minLength': 1}, 'starred': {'type': 'boolean'}, 'metadata': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}, 'file_name': {'anyOf': [{'type': 'string', 'maxLength': 500}, {'type': 'null'}]}, 'mime_type': {'anyOf': [{'type': 'string', 'maxLength': 255}, {'type': 'null'}]}, 'external_id': {'anyOf': [{'type': 'string', 'maxLength': 255}, {'type': 'null'}]}, 'content_kind': {'anyOf': [{'type': 'string', 'const': 'article'}, {'type': 'string', 'const': 'website'}, {'type': 'string', 'const': 'book'}, {'type': 'string', 'const': 'email'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'social_post'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'podcast_episode'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'unknown'}]}, 'published_at': {'anyOf': [{'type': 'string', 'maxLength': 80}, {'type': 'null'}]}, 'capture_method': {'anyOf': [{'type': 'string', 'const': 'reader'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'upload'}, {'type': 'string', 'const': 'rss'}, {'type': 'string', 'const': 'email_inbox'}, {'type': 'string', 'const': 'api'}, {'type': 'string', 'const': 'import'}]}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['item', 'alreadySaved'], 'properties': {'item': {'allOf': [{'type': 'object', 'required': ['id', 'url', 'originalUrl', 'title', 'domain', 'contentKind', 'classification', 'captureMethod', 'format', 'mimeType', 'fileName', 'asset', 'externalId', 'status', 'starred', 'tags', 'savedAt', 'updatedAt', 'lastReadAt', 'readProgress', 'articleStatus'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'asset': {'anyOf': [{'type': 'object', 'required': ['itemId', 'fileName', 'mimeType', 'size', 'checksum', 'updatedAt', 'resourceUri', 'downloadUrl'], 'properties': {'size': {'type': 'number'}, 'itemId': {'type': 'string', 'pattern': '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', 'description': 'UUID that identifies the resource; pass it back exactly as smry returned it.'}, 'checksum': {'type': 'string'}, 'fileName': {'type': 'string'}, 'mimeType': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'downloadUrl': {'type': 'string'}, 'resourceUri': {'type': 'string'}}, 'x-smry-component': 'LibraryAsset', 'additionalProperties': {}}, {'type': 'null'}]}, 'title': {'type': 'string'}, 'domain': {'type': 'string'}, 'format': {'anyOf': [{'type': 'string', 'const': 'html'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'epub'}, {'type': 'string', 'const': 'markdown'}, {'type': 'string', 'const': 'plain_text'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'spreadsheet'}, {'type': 'string', 'const': 'presentation'}, {'type': 'string', 'const': 'audio'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'unknown'}]}, 'status': {'type': 'string'}, 'savedAt': {'type': 'string'}, 'starred': {'type': 'boolean'}, 'fileName': {'type': ['string', 'null']}, 'metadata': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}, 'mimeType': {'type': ['string', 'null']}, 'updatedAt': {'type': 'string'}, 'externalId': {'type': ['string', 'null']}, 'lastReadAt': {'type': ['string', 'null']}, 'contentKind': {'anyOf': [{'type': 'string', 'const': 'article'}, {'type': 'string', 'const': 'website'}, {'type': 'string', 'const': 'book'}, {'type': 'string', 'const': 'email'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'social_post'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'podcast_episode'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'unknown'}]}, 'originalUrl': {'type': ['string', 'null']}, 'readProgress': {'type': ['number', 'null']}, 'articleStatus': {'type': 'string'}, 'captureMethod': {'anyOf': [{'type': 'string', 'const': 'reader'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'upload'}, {'type': 'string', 'const': 'rss'}, {'type': 'string', 'const': 'email_inbox'}, {'type': 'string', 'const': 'api'}, {'type': 'string', 'const': 'import'}]}, 'classification': {'type': 'object', 'required': ['method', 'confidence', 'version', 'updatedAt'], 'properties': {'method': {'anyOf': [{'type': 'string', 'const': 'user'}, {'type': 'string', 'const': 'source_adapter'}, {'type': 'string', 'const': 'mime'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'url'}, {'type': 'string', 'const': 'metadata'}, {'type': 'string', 'const': 'legacy'}, {'type': 'string', 'const': 'fallback'}]}, 'version': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'confidence': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': {}}}, 'x-smry-component': 'LibraryItem', 'additionalProperties': {}}, {'type': 'object', 'properties': {'article': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'additionalProperties': False}]}, 'alreadySaved': {'type': 'boolean'}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['url', 'query'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 4096}, 'query': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'cursor': {'type': 'integer', 'minimum': 0}, 'max_tokens': {'type': 'integer', 'maximum': 25000, 'minimum': 100}, 'max_passages': {'type': 'integer', 'maximum': 25, 'minimum': 1}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['source_url', 'reader_url', 'title', 'author', 'publisher', 'published_at', 'language', 'extraction_source', 'content_quality', 'cache_hit', 'responded_at', 'total_blocks', 'total_tokens', 'query', 'matched_blocks', 'tokens_returned', 'next_cursor', 'passages'], 'properties': {'query': {'type': 'string'}, 'title': {'type': 'string'}, 'author': {'type': ['string', 'null']}, 'language': {'type': ['string', 'null']}, 'passages': {'type': 'array', 'items': {'type': 'object', 'required': ['anchor', 'section', 'rank', 'score', 'tokens', 'text'], 'properties': {'rank': {'type': 'number'}, 'text': {'type': 'string'}, 'score': {'type': 'number'}, 'anchor': {'type': 'number'}, 'tokens': {'type': 'number'}, 'section': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'cache_hit': {'type': 'boolean'}, 'publisher': {'type': ['string', 'null']}, 'reader_url': {'type': 'string'}, 'source_url': {'type': 'string'}, 'next_cursor': {'type': ['number', 'null']}, 'published_at': {'type': ['string', 'null']}, 'responded_at': {'type': 'string'}, 'total_blocks': {'type': 'number'}, 'total_tokens': {'type': 'number'}, 'matched_blocks': {'type': 'number'}, 'content_quality': {'type': ['string', 'null']}, 'tokens_returned': {'type': 'number'}, 'extraction_source': {'type': 'string'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'mode': {'enum': ['all', 'websites', 'feeds', 'podcasts', 'reddit', 'youtube', 'url'], 'type': 'string', 'description': 'Discover source type. "feeds" is a compatibility alias for "websites". Use "url" when query is a site or feed URL. Default: all.'}, 'sort': {'enum': ['best', 'popular'], 'type': 'string', 'description': 'Rank by best match or popularity. Default: best.'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Maximum results. Defaults match the Discover page.'}, 'query': {'type': 'string', 'maxLength': 2048, 'description': 'Topic, publication, community, channel, podcast, or site URL. Omit to browse suggested sources.'}, 'language': {'enum': ['en', 'pt', 'de', 'zh', 'es', 'nl'], 'type': 'string', 'description': 'Source language. Default: English (en).'}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query', 'mode', 'language', 'sort', 'total', 'returned', 'omitted', 'results', 'partial'], 'properties': {'mode': {'enum': ['all', 'websites', 'podcasts', 'reddit', 'youtube', 'url'], 'type': 'string'}, 'sort': {'enum': ['best', 'popular'], 'type': 'string'}, 'query': {'type': 'string'}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'omitted': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'partial': {'type': 'boolean'}, 'results': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'warning': {'type': 'string'}, 'language': {'enum': ['en', 'pt', 'de', 'zh', 'es', 'nl'], 'type': 'string'}, 'returned': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}
输入模式
{'type': 'object', 'required': ['id', 'query'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', 'description': 'UUID that identifies the resource; pass it back exactly as smry returned it.'}, 'query': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'cursor': {'type': 'integer', 'minimum': 0}, 'max_tokens': {'type': 'integer', 'maximum': 25000, 'minimum': 100}, 'max_passages': {'type': 'integer', 'maximum': 25, 'minimum': 1}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'title', 'content_kind', 'query', 'total_blocks', 'total_tokens', 'matched_blocks', 'tokens_returned', 'next_cursor', 'passages'], 'properties': {'id': {'type': 'string'}, 'query': {'type': 'string'}, 'title': {'type': 'string'}, 'passages': {'type': 'array', 'items': {'type': 'object', 'required': ['anchor', 'section', 'rank', 'score', 'tokens', 'text'], 'properties': {'rank': {'type': 'number'}, 'text': {'type': 'string'}, 'score': {'type': 'number'}, 'anchor': {'type': 'number'}, 'tokens': {'type': 'number'}, 'section': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'next_cursor': {'type': ['number', 'null']}, 'content_kind': {'anyOf': [{'type': 'string', 'const': 'article'}, {'type': 'string', 'const': 'website'}, {'type': 'string', 'const': 'book'}, {'type': 'string', 'const': 'email'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'social_post'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'podcast_episode'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'unknown'}]}, 'total_blocks': {'type': 'number'}, 'total_tokens': {'type': 'number'}, 'matched_blocks': {'type': 'number'}, 'tokens_returned': {'type': 'number'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['queries'], 'properties': {'queries': {'type': 'array', 'items': {'type': 'object', 'required': ['query'], 'properties': {'site': {'type': 'string', 'maxLength': 255, 'minLength': 1}, 'query': {'type': 'string', 'maxLength': 500, 'minLength': 2}, 'publishedAfter': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'publishedBefore': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}}}, 'maxItems': 4, 'minItems': 1}, 'max_results': {'type': 'integer', 'maximum': 8, 'minimum': 1}}}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['searches', 'failures', 'budgetReached'], 'properties': {'failures': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'searches': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'budgetReached': {'type': 'boolean'}}, 'additionalProperties': False}
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['entryId', 'value'], 'properties': {'value': {'anyOf': [{'type': 'string', 'const': 'more_like_this'}, {'type': 'string', 'const': 'less_like_this'}, {'type': 'null'}]}, 'entryId': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['object', 'entryId', 'value', 'filterChanged'], 'properties': {'value': {'anyOf': [{'type': 'string', 'const': 'more_like_this'}, {'type': 'string', 'const': 'less_like_this'}, {'type': 'null'}]}, 'object': {'type': 'string', 'const': 'feed_feedback'}, 'entryId': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'filterChanged': {'type': 'boolean', 'const': False}}, 'additionalProperties': {}}
输入模式
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', 'description': 'UUID that identifies the resource; pass it back exactly as smry returned it.'}, 'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 32}, 'maxItems': 12}, 'status': {'anyOf': [{'type': 'string', 'const': 'inbox'}, {'type': 'string', 'const': 'later'}, {'type': 'string', 'const': 'archive'}]}, 'starred': {'type': 'boolean'}, 'mark_read': {'type': 'boolean'}, 'content_kind': {'anyOf': [{'type': 'string', 'const': 'article'}, {'type': 'string', 'const': 'website'}, {'type': 'string', 'const': 'book'}, {'type': 'string', 'const': 'email'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'social_post'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'podcast_episode'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'unknown'}]}, 'read_progress': {'anyOf': [{'type': 'integer', 'maximum': 99, 'minimum': 1}, {'type': 'null'}]}}, 'minProperties': 2, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['item'], 'properties': {'item': {'allOf': [{'type': 'object', 'required': ['id', 'url', 'originalUrl', 'title', 'domain', 'contentKind', 'classification', 'captureMethod', 'format', 'mimeType', 'fileName', 'asset', 'externalId', 'status', 'starred', 'tags', 'savedAt', 'updatedAt', 'lastReadAt', 'readProgress', 'articleStatus'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'tags': {'type': 'array', 'items': {'type': 'string'}}, 'asset': {'anyOf': [{'type': 'object', 'required': ['itemId', 'fileName', 'mimeType', 'size', 'checksum', 'updatedAt', 'resourceUri', 'downloadUrl'], 'properties': {'size': {'type': 'number'}, 'itemId': {'type': 'string', 'pattern': '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$', 'description': 'UUID that identifies the resource; pass it back exactly as smry returned it.'}, 'checksum': {'type': 'string'}, 'fileName': {'type': 'string'}, 'mimeType': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'downloadUrl': {'type': 'string'}, 'resourceUri': {'type': 'string'}}, 'x-smry-component': 'LibraryAsset', 'additionalProperties': {}}, {'type': 'null'}]}, 'title': {'type': 'string'}, 'domain': {'type': 'string'}, 'format': {'anyOf': [{'type': 'string', 'const': 'html'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'epub'}, {'type': 'string', 'const': 'markdown'}, {'type': 'string', 'const': 'plain_text'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'spreadsheet'}, {'type': 'string', 'const': 'presentation'}, {'type': 'string', 'const': 'audio'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'unknown'}]}, 'status': {'type': 'string'}, 'savedAt': {'type': 'string'}, 'starred': {'type': 'boolean'}, 'fileName': {'type': ['string', 'null']}, 'metadata': {'type': 'object', 'patternProperties': {'^(.*)$': {}}}, 'mimeType': {'type': ['string', 'null']}, 'updatedAt': {'type': 'string'}, 'externalId': {'type': ['string', 'null']}, 'lastReadAt': {'type': ['string', 'null']}, 'contentKind': {'anyOf': [{'type': 'string', 'const': 'article'}, {'type': 'string', 'const': 'website'}, {'type': 'string', 'const': 'book'}, {'type': 'string', 'const': 'email'}, {'type': 'string', 'const': 'pdf'}, {'type': 'string', 'const': 'social_post'}, {'type': 'string', 'const': 'video'}, {'type': 'string', 'const': 'podcast_episode'}, {'type': 'string', 'const': 'document'}, {'type': 'string', 'const': 'unknown'}]}, 'originalUrl': {'type': ['string', 'null']}, 'readProgress': {'type': ['number', 'null']}, 'articleStatus': {'type': 'string'}, 'captureMethod': {'anyOf': [{'type': 'string', 'const': 'reader'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'upload'}, {'type': 'string', 'const': 'rss'}, {'type': 'string', 'const': 'email_inbox'}, {'type': 'string', 'const': 'api'}, {'type': 'string', 'const': 'import'}]}, 'classification': {'type': 'object', 'required': ['method', 'confidence', 'version', 'updatedAt'], 'properties': {'method': {'anyOf': [{'type': 'string', 'const': 'user'}, {'type': 'string', 'const': 'source_adapter'}, {'type': 'string', 'const': 'mime'}, {'type': 'string', 'const': 'extension'}, {'type': 'string', 'const': 'url'}, {'type': 'string', 'const': 'metadata'}, {'type': 'string', 'const': 'legacy'}, {'type': 'string', 'const': 'fallback'}]}, 'version': {'type': 'string'}, 'updatedAt': {'type': 'string'}, 'confidence': {'type': 'integer', 'maximum': 100, 'minimum': 0}}, 'additionalProperties': {}}}, 'x-smry-component': 'LibraryItem', 'additionalProperties': {}}, {'type': 'object', 'properties': {'article': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'additionalProperties': False}]}}, 'additionalProperties': False}
近期工具变更
类似的 MCP 服务器
concordance
Provides deterministic claim verification and audit receipts, along with Bible references, commentary, geography, indexed knowled…
canton-ccpedia
Searches and explains Canton Network and Daml documentation, governance proposals, forums, code examples, APIs, releases, and eco…
BNM Data Shop
Sells access to cached official reports, enforcement orders, regulatory documents, inspection records, and other public-source te…
api-evangelist
Provides API governance analysis, OpenAPI overlays and version diffs, security-sensitive field classification, code samples, matu…
OpenHelvetia Gateway
Provides sourced access to Swiss federal legislation and political data, including law metadata, versions, amendments, citations,…
website-search
Provides security article search and structured guidance, templates, frameworks, and review criteria for incident response, threa…
The Ainglish Project
Maintains a measured, auditable register of language constructs, proposals, evidence, adoption, contributors, protocols, and rati…
Torah Library
Provides searchable Jewish texts, commentaries, source sheets, dictionaries, manuscripts, calendars, learning schedules, parasha …