{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_3h3ec3ehkqrv","handle":"synoptic","url":"https://wellknown.network/agents/synoptic","links":{"self":"https://wellknown.network/agents/synoptic/record.json","html":"https://wellknown.network/agents/synoptic","markdown":"https://wellknown.network/agents/synoptic/record.md","api":"https://wellknown.network/api/v1/agents/synoptic","status":"https://wellknown.network/api/v1/agents/synoptic/status","claim":"https://wellknown.network/agents/synoptic/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/synoptic/claim.json","badge":"https://wellknown.network/agents/synoptic/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/synoptic/history","tools":"https://wellknown.network/api/v1/agents/synoptic/tools"},"ard":{"identifier":"urn:air:mcp.api.synoptic.com:server:synoptic","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Synoptic","summary":"Follow live feeds from Twitter/X, Telegram, press releases, SEC filings and more; publish your own.","description":"Follow live feeds from Twitter/X, Telegram, press releases, SEC filings and more; publish your own.","publisher":{"name":"com.synoptic","url":null},"homepage":"https://www.synoptic.com/","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.api.synoptic.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-17T02:57:28.005063Z","publishedAt":"2026-10-17T02:57:28.005063Z","registryName":"com.synoptic/synoptic"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"data.news","name":"News & Feeds","confidence":1,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":1,"provenance":"derived"},{"slug":"finance.markets","name":"Markets & Trading","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"content.social","name":"Social Media","confidence":0.882,"provenance":"derived"},{"slug":"data.apis","name":"API Access","confidence":0.583,"provenance":"derived"},{"slug":"dev.monitoring","name":"Monitoring & Observability","confidence":0.554,"provenance":"derived"}],"categories":["analytics","communication","content","data","dev","finance","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 5h ago.","lastOkAt":"2026-10-22T21:30:27.645Z","lastProbedAt":"2026-10-22T21:30:27.645Z","statusComputedAt":"2026-10-22T21:33:15.821Z","reliability30d":{"probes":16,"successRate":1,"p50Ms":96,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":16,"ok":16,"authBoundaryOk":0,"serviceOk":16,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-22T21:30:27.645Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":92,"error":null,"detail":{"tools":[{"name":"get_stream_posts","description":"Read one page of stored posts from an accessible Synoptic stream, newest first. Requires authentication and permission to read its posts; custom-target restrict"},{"name":"streams_all","description":"List one page of active public streams in the Synoptic catalog without signing in. Returns stored stream metadata, optionally filtered by minimum follower count"},{"name":"search","description":"Search the Synoptic stream catalog by keyword. Matches stream names, labels, descriptions, categories, and IDs; does not search post text or accounts on other s"},{"name":"get_stream","description":"Inspect a discovered Synoptic feed by ID before reading, configuring monitoring targets, or planning an API integration. Returns its description, publication st"},{"name":"fetch","description":"Read a Synoptic stream card by ID: title, description, and stream URL for citation. Public cards need no sign-in; private cards require a linked account with ac"},{"name":"follow_stream","description":"Sign in to follow a Synoptic stream when the user asks to follow that stream. Updates followed streams and follower count; may accept and consume an existing in"},{"name":"get_me","description":"Read the signed-in Synoptic profile, email address, onboarding status, and terminal access request status."},{"name":"get_user","description":"Read a public Synoptic profile by exact username. Use get_user_by_id for an ID such as a stream’s authorId, or get_me for the signed-in account. Unknown usernam"},{"name":"get_user_by_id","description":"Read a public Synoptic profile by user ID. Use get_user for a username, or get_me for the signed-in account. Unknown IDs return User not found."},{"name":"get_highlighted_authors","description":"List up to 50 public profiles of authors Synoptic features (isHighlighted), for discovery when no particular author is named. Not paginated. Use get_user or get"},{"name":"update_profile","description":"Update the signed-in user’s public Synoptic profile: display name, biography, avatar, or background image. Changes are visible to other users. Omitted fields st"},{"name":"generate_username_suggestions","description":"Generate and save five available username choices for the signed-in user. These replace previous suggestions and can be used with set_username."},{"name":"set_username","description":"Set the signed-in user’s public Synoptic username to a saved suggestion or their verified X handle. Generate suggestions first when needed."},{"name":"remove_x_handle","description":"Remove the verified X handle from the signed-in user’s public Synoptic profile. Does not modify the X account."},{"name":"get_followers","description":"List followers of a Synoptic username, or the signed-in user when username is omitted. Continue with nextToken. Use get_following_users for the authors a user f"},{"name":"get_following_users","description":"List authors followed by a Synoptic username, or by the signed-in user when username is omitted. Continue with nextToken. Lists users only: use streams_followin"},{"name":"is_following_user","description":"Check whether the signed-in user follows a given author. Checks only the signed-in user; use get_following_users to list a user’s follows."},{"name":"follow_user","description":"Follow an author as the signed-in user. May notify the author, including by email or push according to their settings. Returns success=false when already follow"},{"name":"unfollow_user","description":"Stop following an author as the signed-in user. Returns success=false when no follow exists or the operation fails. Use unfollow_stream to unfollow a stream."},{"name":"get_notification_settings","description":"Read the signed-in user’s notification channel switches and per-event preferences. Shows the four groups update_notification_preferences replaces and the switch"},{"name":"update_notification_preferences","description":"Replace notification channel preferences for mentions, new followers, subscribed-author posts, and system events. Read current settings first; provide all four "},{"name":"set_notification_channel","description":"Turn the in-app or email channel on or off for the whole signed-in account, not per device. While a channel is off, none of the account’s notifications are deli"},{"name":"get_notifications","description":"Read the signed-in user’s paginated in-app notifications. Set read=false for unread notifications; omit read for both. Reading this list does not mark notificat"},{"name":"mark_notification_read","description":"Mark one of the signed-in user’s notifications as read. IDs that are not the signed-in user’s notifications are rejected. Use mark_all_notifications_read for al"},{"name":"mark_all_notifications_read","description":"Mark every unread in-app notification in the signed-in account as read. Use mark_notification_read for one notification."},{"name":"request_terminal_access","description":"Join the waitlist for early access to the Synoptic trading terminal (beta) for the signed-in account. Sets terminalAccessRequested, which get_me reports; repeat"},{"name":"streams_following","description":"List streams the signed-in account follows, with optional metadata filters and pagination. Use streams_created for streams you own, streams_all or search for th"},{"name":"streams_created","description":"List streams the signed-in account owns, including unpublished DRAFT streams, with optional filters and pagination. Use it to find IDs for create_stream_post, u"},{"name":"unfollow_stream","description":"Unfollow a stream for the signed-in account. Does not cancel a paid subscription or restore consumed invitations. Use unfollow_user for authors."},{"name":"search_stream_posts","description":"Search full post text within one accessible stream, newest first. Supports ISO date bounds; custom-target restrictions apply. Continue with nextOffset; this dif"},{"name":"get_post","description":"Read an existing stream post by ID. Public stream posts do not require following; private stream posts require individual-post access. Custom-target restriction"},{"name":"create_stream_post","description":"Add a text post to a stream owned by the signed-in user. A new post may notify followers; timestamps are assigned by the platform. Use publish_stream to take a "},{"name":"create_stream","description":"Create a free draft publishing stream owned by the signed-in user for their research, news, or other updates. Supply a plain-text description and add a first po"},{"name":"update_stream","description":"Update owned stream metadata. Omitted fields retain current values. A supplied description replaces its formatting with plain text. Does not change visibility, "},{"name":"publish_stream","description":"Publish an owned draft stream, setting its state to ACTIVE. May notify users; the returned state is authoritative. Publishing can’t be undone through MCP. Use c"},{"name":"delete_stream","description":"Delete an owned free stream. Unfollows and notifies its followers, removes it from collections, API key publish permissions and source routes, and cannot be und"},{"name":"get_stream_custom_targets","description":"Read configured custom-target values for an accessible stream, such as the selected accounts, channels, repositories, or tracking criteria supported by that fee"},{"name":"set_stream_custom_targets","description":"Replace the signed-in user’s selected targets on a Synoptic custom-target stream and return the saved list. Targets, such as accounts, channels, repositories, o"},{"name":"patch_stream_custom_targets","description":"Add or remove targets in the signed-in user’s selection on a Synoptic custom-target stream, keeping other targets, and return the resulting list. Targets, such "},{"name":"list_stream_decks","description":"List the signed-in user’s stream decks in their saved display order."},{"name":"create_stream_deck","description":"Create an empty stream deck, a dashboard of collection columns, for the signed-in user and return its ID. Add columns with create_collection. Each account suppo"},{"name":"update_stream_deck","description":"Rename an existing stream deck owned by the signed-in user; nothing else changes. Use reorder_stream_decks to move it or delete_stream_deck to remove it."},{"name":"delete_stream_deck","description":"Delete a stream deck owned by the signed-in user and every custom collection in that deck. The last remaining deck cannot be deleted. This does not delete the o"},{"name":"reorder_stream_decks","description":"Replace the signed-in user’s stream deck display order. Include every existing deck ID exactly once."},{"name":"list_collections","description":"List the signed-in user’s custom collections in a stream deck, in display order. Use get_collection for source streams and target selections."},{"name":"get_collection","description":"Read a custom collection owned by the signed-in user, including its keyword filters, AI filter ID, source streams, and selected custom targets. Returns the full"},{"name":"create_collection","description":"Create a collection in the signed-in user’s stream deck from existing Synoptic streams and return collection metadata. Automatically follows eligible selected s"},{"name":"update_collection","description":"Replace a custom collection’s name, source list, filters, and highlights. Read get_collection first and preserve desired settings: omitted filters, highlights a"},{"name":"delete_collection","description":"Delete a custom collection owned by the signed-in user, including its saved versions and source configuration. Original stream posts and follows remain. Use del"},{"name":"reorder_collections","description":"Replace a stream deck’s collection display order. Include every existing collection ID in that deck exactly once."},{"name":"set_collection_column_width","description":"Set how wide a custom collection’s column appears in the signed-in user’s stream deck in the Synoptic app. Display only: sources, filters and posts are unchange"},{"name":"get_collection_posts","description":"Read up to 50 stored posts from a collection owned by the signed-in user, optionally filtered by matched crypto or prediction markets. Rechecks current stream a"},{"name":"list_ai_filters","description":"List the signed-in user’s saved AI filter definitions. Does not run or evaluate filters."},{"name":"get_ai_filter","description":"Read one saved AI filter definition owned by the signed-in user. Does not evaluate the filter."},{"name":"create_ai_filter","description":"Save a named AI filter prompt for the signed-in user without evaluating it. Attach the returned id through filters.ai in create_collection, or in update_collect"},{"name":"update_ai_filter","description":"Replace the name and prompt of an AI filter owned by the signed-in user. Future posts in collections using this filter use the updated prompt. This operation do"},{"name":"delete_ai_filter","description":"Delete an AI filter owned by the signed-in user and detach it from collections using it. Those collections stop applying that AI filter."},{"name":"list_terminal_tabs","description":"List the signed-in user’s terminal tabs in display order, with their saved layout configuration as JSON strings."},{"name":"create_terminal_tab","description":"Create a terminal tab for the signed-in user using a saved layout JSON object serialized as a string. Prefer copying an existing tab configuration from list_ter"},{"name":"update_terminal_tab","description":"Rename a terminal tab or replace its entire saved layout configuration. Omitted fields retain their previous values. Read list_terminal_tabs before replacing a "},{"name":"delete_terminal_tab","description":"Delete a terminal tab owned by the signed-in user and its saved layout. The platform prevents deleting the last tab. Use update_terminal_tab to change a layout "},{"name":"reorder_terminal_tabs","description":"Replace the signed-in user’s terminal tab display order. Include every existing tab ID exactly once."},{"name":"list_stream_packages","description":"Browse the catalog of stream packages (bundles of streams sold as one subscription) with available prices, most-subscribed first. Requires a linked account, unl"},{"name":"list_my_stream_packages","description":"List stream packages CREATED or SUBSCRIBED by the signed-in user, including available prices. Use list_stream_packages to browse all packages and get_stream_pac"},{"name":"get_stream_package","description":"Read a stream package, its available prices, and included stream cards the signed-in user may view. Non-owners see active included streams only. Does not return"},{"name":"list_stream_invites","description":"List pending stream invitations addressed to the signed-in account. Includes accessible stream cards and preserves pagination. Does not accept or dismiss invita"},{"name":"get_stream_subscription","description":"Read the signed-in user’s direct paid subscription status for a stream, including price and scheduled cancellation. A null subscription does not rule out access"},{"name":"get_stream_package_subscription","description":"Read the signed-in user’s paid subscription status for a stream package, including price and scheduled cancellation. Returns null when no subscription is found."},{"name":"request_stream","description":"Submit a stream request to Synoptic support on behalf of the signed-in user. Describe the source or website, desired content and use case. Returns a confirmed s"},{"name":"request_feature","description":"Submit a feature request to Synoptic support on behalf of the signed-in user. Describe the problem, proposed behavior and use case. Returns a confirmed support "}],"toolCount":70,"toolsHash":"0b34128b19ac2c8eca25e9fb5abce69eec4d00cffa70fcf8200c7194244b15d5","serverName":"synoptic","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T14:26:35.305Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":164,"error":null,"detail":{"tools":[{"name":"get_stream_posts","description":"Read one page of stored posts from an accessible Synoptic stream, newest first. Requires authentication and permission to read its posts; custom-target restrict"},{"name":"streams_all","description":"List one page of active public streams in the Synoptic catalog without signing in. Returns stored stream metadata, optionally filtered by minimum follower count"},{"name":"search","description":"Search the Synoptic stream catalog by keyword. Matches stream names, labels, descriptions, categories, and IDs; does not search post text or accounts on other s"},{"name":"get_stream","description":"Inspect a discovered Synoptic feed by ID before reading, configuring monitoring targets, or planning an API integration. Returns its description, publication st"},{"name":"fetch","description":"Read a Synoptic stream card by ID: title, description, and stream URL for citation. Public cards need no sign-in; private cards require a linked account with ac"},{"name":"follow_stream","description":"Sign in to follow a Synoptic stream when the user asks to follow that stream. Updates followed streams and follower count; may accept and consume an existing in"},{"name":"get_me","description":"Read the signed-in Synoptic profile, email address, onboarding status, and terminal access request status."},{"name":"get_user","description":"Read a public Synoptic profile by exact username. Use get_user_by_id for an ID such as a stream’s authorId, or get_me for the signed-in account. Unknown usernam"},{"name":"get_user_by_id","description":"Read a public Synoptic profile by user ID. Use get_user for a username, or get_me for the signed-in account. Unknown IDs return User not found."},{"name":"get_highlighted_authors","description":"List up to 50 public profiles of authors Synoptic features (isHighlighted), for discovery when no particular author is named. Not paginated. Use get_user or get"},{"name":"update_profile","description":"Update the signed-in user’s public Synoptic profile: display name, biography, avatar, or background image. Changes are visible to other users. Omitted fields st"},{"name":"generate_username_suggestions","description":"Generate and save five available username choices for the signed-in user. These replace previous suggestions and can be used with set_username."},{"name":"set_username","description":"Set the signed-in user’s public Synoptic username to a saved suggestion or their verified X handle. Generate suggestions first when needed."},{"name":"remove_x_handle","description":"Remove the verified X handle from the signed-in user’s public Synoptic profile. Does not modify the X account."},{"name":"get_followers","description":"List followers of a Synoptic username, or the signed-in user when username is omitted. Continue with nextToken. Use get_following_users for the authors a user f"},{"name":"get_following_users","description":"List authors followed by a Synoptic username, or by the signed-in user when username is omitted. Continue with nextToken. Lists users only: use streams_followin"},{"name":"is_following_user","description":"Check whether the signed-in user follows a given author. Checks only the signed-in user; use get_following_users to list a user’s follows."},{"name":"follow_user","description":"Follow an author as the signed-in user. May notify the author, including by email or push according to their settings. Returns success=false when already follow"},{"name":"unfollow_user","description":"Stop following an author as the signed-in user. Returns success=false when no follow exists or the operation fails. Use unfollow_stream to unfollow a stream."},{"name":"get_notification_settings","description":"Read the signed-in user’s notification channel switches and per-event preferences. Shows the four groups update_notification_preferences replaces and the switch"},{"name":"update_notification_preferences","description":"Replace notification channel preferences for mentions, new followers, subscribed-author posts, and system events. Read current settings first; provide all four "},{"name":"set_notification_channel","description":"Turn the in-app or email channel on or off for the whole signed-in account, not per device. While a channel is off, none of the account’s notifications are deli"},{"name":"get_notifications","description":"Read the signed-in user’s paginated in-app notifications. Set read=false for unread notifications; omit read for both. Reading this list does not mark notificat"},{"name":"mark_notification_read","description":"Mark one of the signed-in user’s notifications as read. IDs that are not the signed-in user’s notifications are rejected. Use mark_all_notifications_read for al"},{"name":"mark_all_notifications_read","description":"Mark every unread in-app notification in the signed-in account as read. Use mark_notification_read for one notification."},{"name":"request_terminal_access","description":"Join the waitlist for early access to the Synoptic trading terminal (beta) for the signed-in account. Sets terminalAccessRequested, which get_me reports; repeat"},{"name":"streams_following","description":"List streams the signed-in account follows, with optional metadata filters and pagination. Use streams_created for streams you own, streams_all or search for th"},{"name":"streams_created","description":"List streams the signed-in account owns, including unpublished DRAFT streams, with optional filters and pagination. Use it to find IDs for create_stream_post, u"},{"name":"unfollow_stream","description":"Unfollow a stream for the signed-in account. Does not cancel a paid subscription or restore consumed invitations. Use unfollow_user for authors."},{"name":"search_stream_posts","description":"Search full post text within one accessible stream, newest first. Supports ISO date bounds; custom-target restrictions apply. Continue with nextOffset; this dif"},{"name":"get_post","description":"Read an existing stream post by ID. Public stream posts do not require following; private stream posts require individual-post access. Custom-target restriction"},{"name":"create_stream_post","description":"Add a text post to a stream owned by the signed-in user. A new post may notify followers; timestamps are assigned by the platform. Use publish_stream to take a "},{"name":"create_stream","description":"Create a free draft publishing stream owned by the signed-in user for their research, news, or other updates. Supply a plain-text description and add a first po"},{"name":"update_stream","description":"Update owned stream metadata. Omitted fields retain current values. A supplied description replaces its formatting with plain text. Does not change visibility, "},{"name":"publish_stream","description":"Publish an owned draft stream, setting its state to ACTIVE. May notify users; the returned state is authoritative. Publishing can’t be undone through MCP. Use c"},{"name":"delete_stream","description":"Delete an owned free stream. Unfollows and notifies its followers, removes it from collections, API key publish permissions and source routes, and cannot be und"},{"name":"get_stream_custom_targets","description":"Read configured custom-target values for an accessible stream, such as the selected accounts, channels, repositories, or tracking criteria supported by that fee"},{"name":"set_stream_custom_targets","description":"Replace the signed-in user’s selected targets on a Synoptic custom-target stream and return the saved list. Targets, such as accounts, channels, repositories, o"},{"name":"patch_stream_custom_targets","description":"Add or remove targets in the signed-in user’s selection on a Synoptic custom-target stream, keeping other targets, and return the resulting list. Targets, such "},{"name":"list_stream_decks","description":"List the signed-in user’s stream decks in their saved display order."},{"name":"create_stream_deck","description":"Create an empty stream deck, a dashboard of collection columns, for the signed-in user and return its ID. Add columns with create_collection. Each account suppo"},{"name":"update_stream_deck","description":"Rename an existing stream deck owned by the signed-in user; nothing else changes. Use reorder_stream_decks to move it or delete_stream_deck to remove it."},{"name":"delete_stream_deck","description":"Delete a stream deck owned by the signed-in user and every custom collection in that deck. The last remaining deck cannot be deleted. This does not delete the o"},{"name":"reorder_stream_decks","description":"Replace the signed-in user’s stream deck display order. Include every existing deck ID exactly once."},{"name":"list_collections","description":"List the signed-in user’s custom collections in a stream deck, in display order. Use get_collection for source streams and target selections."},{"name":"get_collection","description":"Read a custom collection owned by the signed-in user, including its keyword filters, AI filter ID, source streams, and selected custom targets. Returns the full"},{"name":"create_collection","description":"Create a collection in the signed-in user’s stream deck from existing Synoptic streams and return collection metadata. Automatically follows eligible selected s"},{"name":"update_collection","description":"Replace a custom collection’s name, source list, filters, and highlights. Read get_collection first and preserve desired settings: omitted filters, highlights a"},{"name":"delete_collection","description":"Delete a custom collection owned by the signed-in user, including its saved versions and source configuration. Original stream posts and follows remain. Use del"},{"name":"reorder_collections","description":"Replace a stream deck’s collection display order. Include every existing collection ID in that deck exactly once."},{"name":"set_collection_column_width","description":"Set how wide a custom collection’s column appears in the signed-in user’s stream deck in the Synoptic app. Display only: sources, filters and posts are unchange"},{"name":"get_collection_posts","description":"Read up to 50 stored posts from a collection owned by the signed-in user, optionally filtered by matched crypto or prediction markets. Rechecks current stream a"},{"name":"list_ai_filters","description":"List the signed-in user’s saved AI filter definitions. Does not run or evaluate filters."},{"name":"get_ai_filter","description":"Read one saved AI filter definition owned by the signed-in user. Does not evaluate the filter."},{"name":"create_ai_filter","description":"Save a named AI filter prompt for the signed-in user without evaluating it. Attach the returned id through filters.ai in create_collection, or in update_collect"},{"name":"update_ai_filter","description":"Replace the name and prompt of an AI filter owned by the signed-in user. Future posts in collections using this filter use the updated prompt. This operation do"},{"name":"delete_ai_filter","description":"Delete an AI filter owned by the signed-in user and detach it from collections using it. Those collections stop applying that AI filter."},{"name":"list_terminal_tabs","description":"List the signed-in user’s terminal tabs in display order, with their saved layout configuration as JSON strings."},{"name":"create_terminal_tab","description":"Create a terminal tab for the signed-in user using a saved layout JSON object serialized as a string. Prefer copying an existing tab configuration from list_ter"},{"name":"update_terminal_tab","description":"Rename a terminal tab or replace its entire saved layout configuration. Omitted fields retain their previous values. Read list_terminal_tabs before replacing a "},{"name":"delete_terminal_tab","description":"Delete a terminal tab owned by the signed-in user and its saved layout. The platform prevents deleting the last tab. Use update_terminal_tab to change a layout "},{"name":"reorder_terminal_tabs","description":"Replace the signed-in user’s terminal tab display order. Include every existing tab ID exactly once."},{"name":"list_stream_packages","description":"Browse the catalog of stream packages (bundles of streams sold as one subscription) with available prices, most-subscribed first. Requires a linked account, unl"},{"name":"list_my_stream_packages","description":"List stream packages CREATED or SUBSCRIBED by the signed-in user, including available prices. Use list_stream_packages to browse all packages and get_stream_pac"},{"name":"get_stream_package","description":"Read a stream package, its available prices, and included stream cards the signed-in user may view. Non-owners see active included streams only. Does not return"},{"name":"list_stream_invites","description":"List pending stream invitations addressed to the signed-in account. Includes accessible stream cards and preserves pagination. Does not accept or dismiss invita"},{"name":"get_stream_subscription","description":"Read the signed-in user’s direct paid subscription status for a stream, including price and scheduled cancellation. A null subscription does not rule out access"},{"name":"get_stream_package_subscription","description":"Read the signed-in user’s paid subscription status for a stream package, including price and scheduled cancellation. Returns null when no subscription is found."},{"name":"request_stream","description":"Submit a stream request to Synoptic support on behalf of the signed-in user. Describe the source or website, desired content and use case. Returns a confirmed s"},{"name":"request_feature","description":"Submit a feature request to Synoptic support on behalf of the signed-in user. Describe the problem, proposed behavior and use case. Returns a confirmed support "}],"toolCount":70,"toolsHash":"0b34128b19ac2c8eca25e9fb5abce69eec4d00cffa70fcf8200c7194244b15d5","serverName":"synoptic","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T07:27:38.770Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":92,"error":null,"detail":{"tools":[{"name":"get_stream_posts","description":"Read one page of stored posts from an accessible Synoptic stream, newest first. Requires authentication and permission to read its posts; custom-target restrict"},{"name":"streams_all","description":"List one page of active public streams in the Synoptic catalog without signing in. Returns stored stream metadata, optionally filtered by minimum follower count"},{"name":"search","description":"Search the Synoptic stream catalog by keyword. Matches stream names, labels, descriptions, categories, and IDs; does not search post text or accounts on other s"},{"name":"get_stream","description":"Inspect a discovered Synoptic feed by ID before reading, configuring monitoring targets, or planning an API integration. Returns its description, publication st"},{"name":"fetch","description":"Read a Synoptic stream card by ID: title, description, and stream URL for citation. Public cards need no sign-in; private cards require a linked account with ac"},{"name":"follow_stream","description":"Sign in to follow a Synoptic stream when the user asks to follow that stream. Updates followed streams and follower count; may accept and consume an existing in"},{"name":"get_me","description":"Read the signed-in Synoptic profile, email address, onboarding status, and terminal access request status."},{"name":"get_user","description":"Read a public Synoptic profile by exact username. Use get_user_by_id for an ID such as a stream’s authorId, or get_me for the signed-in account. Unknown usernam"},{"name":"get_user_by_id","description":"Read a public Synoptic profile by user ID. Use get_user for a username, or get_me for the signed-in account. Unknown IDs return User not found."},{"name":"get_highlighted_authors","description":"List up to 50 public profiles of authors Synoptic features (isHighlighted), for discovery when no particular author is named. Not paginated. Use get_user or get"},{"name":"update_profile","description":"Update the signed-in user’s public Synoptic profile: display name, biography, avatar, or background image. Changes are visible to other users. Omitted fields st"},{"name":"generate_username_suggestions","description":"Generate and save five available username choices for the signed-in user. These replace previous suggestions and can be used with set_username."},{"name":"set_username","description":"Set the signed-in user’s public Synoptic username to a saved suggestion or their verified X handle. Generate suggestions first when needed."},{"name":"remove_x_handle","description":"Remove the verified X handle from the signed-in user’s public Synoptic profile. Does not modify the X account."},{"name":"get_followers","description":"List followers of a Synoptic username, or the signed-in user when username is omitted. Continue with nextToken. Use get_following_users for the authors a user f"},{"name":"get_following_users","description":"List authors followed by a Synoptic username, or by the signed-in user when username is omitted. Continue with nextToken. Lists users only: use streams_followin"},{"name":"is_following_user","description":"Check whether the signed-in user follows a given author. Checks only the signed-in user; use get_following_users to list a user’s follows."},{"name":"follow_user","description":"Follow an author as the signed-in user. May notify the author, including by email or push according to their settings. Returns success=false when already follow"},{"name":"unfollow_user","description":"Stop following an author as the signed-in user. Returns success=false when no follow exists or the operation fails. Use unfollow_stream to unfollow a stream."},{"name":"get_notification_settings","description":"Read the signed-in user’s notification channel switches and per-event preferences. Shows the four groups update_notification_preferences replaces and the switch"},{"name":"update_notification_preferences","description":"Replace notification channel preferences for mentions, new followers, subscribed-author posts, and system events. Read current settings first; provide all four "},{"name":"set_notification_channel","description":"Turn the in-app or email channel on or off for the whole signed-in account, not per device. While a channel is off, none of the account’s notifications are deli"},{"name":"get_notifications","description":"Read the signed-in user’s paginated in-app notifications. Set read=false for unread notifications; omit read for both. Reading this list does not mark notificat"},{"name":"mark_notification_read","description":"Mark one of the signed-in user’s notifications as read. IDs that are not the signed-in user’s notifications are rejected. Use mark_all_notifications_read for al"},{"name":"mark_all_notifications_read","description":"Mark every unread in-app notification in the signed-in account as read. Use mark_notification_read for one notification."},{"name":"request_terminal_access","description":"Join the waitlist for early access to the Synoptic trading terminal (beta) for the signed-in account. Sets terminalAccessRequested, which get_me reports; repeat"},{"name":"streams_following","description":"List streams the signed-in account follows, with optional metadata filters and pagination. Use streams_created for streams you own, streams_all or search for th"},{"name":"streams_created","description":"List streams the signed-in account owns, including unpublished DRAFT streams, with optional filters and pagination. Use it to find IDs for create_stream_post, u"},{"name":"unfollow_stream","description":"Unfollow a stream for the signed-in account. Does not cancel a paid subscription or restore consumed invitations. Use unfollow_user for authors."},{"name":"search_stream_posts","description":"Search full post text within one accessible stream, newest first. Supports ISO date bounds; custom-target restrictions apply. Continue with nextOffset; this dif"},{"name":"get_post","description":"Read an existing stream post by ID. Public stream posts do not require following; private stream posts require individual-post access. Custom-target restriction"},{"name":"create_stream_post","description":"Add a text post to a stream owned by the signed-in user. A new post may notify followers; timestamps are assigned by the platform. Use publish_stream to take a "},{"name":"create_stream","description":"Create a free draft publishing stream owned by the signed-in user for their research, news, or other updates. Supply a plain-text description and add a first po"},{"name":"update_stream","description":"Update owned stream metadata. Omitted fields retain current values. A supplied description replaces its formatting with plain text. Does not change visibility, "},{"name":"publish_stream","description":"Publish an owned draft stream, setting its state to ACTIVE. May notify users; the returned state is authoritative. Publishing can’t be undone through MCP. Use c"},{"name":"delete_stream","description":"Delete an owned free stream. Unfollows and notifies its followers, removes it from collections, API key publish permissions and source routes, and cannot be und"},{"name":"get_stream_custom_targets","description":"Read configured custom-target values for an accessible stream, such as the selected accounts, channels, repositories, or tracking criteria supported by that fee"},{"name":"set_stream_custom_targets","description":"Replace the signed-in user’s selected targets on a Synoptic custom-target stream and return the saved list. Targets, such as accounts, channels, repositories, o"},{"name":"patch_stream_custom_targets","description":"Add or remove targets in the signed-in user’s selection on a Synoptic custom-target stream, keeping other targets, and return the resulting list. Targets, such "},{"name":"list_stream_decks","description":"List the signed-in user’s stream decks in their saved display order."},{"name":"create_stream_deck","description":"Create an empty stream deck, a dashboard of collection columns, for the signed-in user and return its ID. Add columns with create_collection. Each account suppo"},{"name":"update_stream_deck","description":"Rename an existing stream deck owned by the signed-in user; nothing else changes. Use reorder_stream_decks to move it or delete_stream_deck to remove it."},{"name":"delete_stream_deck","description":"Delete a stream deck owned by the signed-in user and every custom collection in that deck. The last remaining deck cannot be deleted. This does not delete the o"},{"name":"reorder_stream_decks","description":"Replace the signed-in user’s stream deck display order. Include every existing deck ID exactly once."},{"name":"list_collections","description":"List the signed-in user’s custom collections in a stream deck, in display order. Use get_collection for source streams and target selections."},{"name":"get_collection","description":"Read a custom collection owned by the signed-in user, including its keyword filters, AI filter ID, source streams, and selected custom targets. Returns the full"},{"name":"create_collection","description":"Create a collection in the signed-in user’s stream deck from existing Synoptic streams and return collection metadata. Automatically follows eligible selected s"},{"name":"update_collection","description":"Replace a custom collection’s name, source list, filters, and highlights. Read get_collection first and preserve desired settings: omitted filters, highlights a"},{"name":"delete_collection","description":"Delete a custom collection owned by the signed-in user, including its saved versions and source configuration. Original stream posts and follows remain. Use del"},{"name":"reorder_collections","description":"Replace a stream deck’s collection display order. Include every existing collection ID in that deck exactly once."},{"name":"set_collection_column_width","description":"Set how wide a custom collection’s column appears in the signed-in user’s stream deck in the Synoptic app. Display only: sources, filters and posts are unchange"},{"name":"get_collection_posts","description":"Read up to 50 stored posts from a collection owned by the signed-in user, optionally filtered by matched crypto or prediction markets. Rechecks current stream a"},{"name":"list_ai_filters","description":"List the signed-in user’s saved AI filter definitions. Does not run or evaluate filters."},{"name":"get_ai_filter","description":"Read one saved AI filter definition owned by the signed-in user. Does not evaluate the filter."},{"name":"create_ai_filter","description":"Save a named AI filter prompt for the signed-in user without evaluating it. Attach the returned id through filters.ai in create_collection, or in update_collect"},{"name":"update_ai_filter","description":"Replace the name and prompt of an AI filter owned by the signed-in user. Future posts in collections using this filter use the updated prompt. This operation do"},{"name":"delete_ai_filter","description":"Delete an AI filter owned by the signed-in user and detach it from collections using it. Those collections stop applying that AI filter."},{"name":"list_terminal_tabs","description":"List the signed-in user’s terminal tabs in display order, with their saved layout configuration as JSON strings."},{"name":"create_terminal_tab","description":"Create a terminal tab for the signed-in user using a saved layout JSON object serialized as a string. Prefer copying an existing tab configuration from list_ter"},{"name":"update_terminal_tab","description":"Rename a terminal tab or replace its entire saved layout configuration. Omitted fields retain their previous values. Read list_terminal_tabs before replacing a "},{"name":"delete_terminal_tab","description":"Delete a terminal tab owned by the signed-in user and its saved layout. The platform prevents deleting the last tab. Use update_terminal_tab to change a layout "},{"name":"reorder_terminal_tabs","description":"Replace the signed-in user’s terminal tab display order. Include every existing tab ID exactly once."},{"name":"list_stream_packages","description":"Browse the catalog of stream packages (bundles of streams sold as one subscription) with available prices, most-subscribed first. Requires a linked account, unl"},{"name":"list_my_stream_packages","description":"List stream packages CREATED or SUBSCRIBED by the signed-in user, including available prices. Use list_stream_packages to browse all packages and get_stream_pac"},{"name":"get_stream_package","description":"Read a stream package, its available prices, and included stream cards the signed-in user may view. Non-owners see active included streams only. Does not return"},{"name":"list_stream_invites","description":"List pending stream invitations addressed to the signed-in account. Includes accessible stream cards and preserves pagination. Does not accept or dismiss invita"},{"name":"get_stream_subscription","description":"Read the signed-in user’s direct paid subscription status for a stream, including price and scheduled cancellation. A null subscription does not rule out access"},{"name":"get_stream_package_subscription","description":"Read the signed-in user’s paid subscription status for a stream package, including price and scheduled cancellation. Returns null when no subscription is found."},{"name":"request_stream","description":"Submit a stream request to Synoptic support on behalf of the signed-in user. Describe the source or website, desired content and use case. Returns a confirmed s"},{"name":"request_feature","description":"Submit a feature request to Synoptic support on behalf of the signed-in user. Describe the problem, proposed behavior and use case. Returns a confirmed support "}],"toolCount":70,"toolsHash":"0b34128b19ac2c8eca25e9fb5abce69eec4d00cffa70fcf8200c7194244b15d5","serverName":"synoptic","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T00:30:20.545Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":89,"error":null,"detail":{"tools":[{"name":"get_stream_posts","description":"Read one page of stored posts from an accessible Synoptic stream, newest first. Requires authentication and permission to read its posts; custom-target restrict"},{"name":"streams_all","description":"List one page of active public streams in the Synoptic catalog without signing in. Returns stored stream metadata, optionally filtered by minimum follower count"},{"name":"search","description":"Search the Synoptic stream catalog by keyword. Matches stream names, labels, descriptions, categories, and IDs; does not search post text or accounts on other s"},{"name":"get_stream","description":"Inspect a discovered Synoptic feed by ID before reading, configuring monitoring targets, or planning an API integration. Returns its description, publication st"},{"name":"fetch","description":"Read a Synoptic stream card by ID: title, description, and stream URL for citation. Public cards need no sign-in; private cards require a linked account with ac"},{"name":"follow_stream","description":"Sign in to follow a Synoptic stream when the user asks to follow that stream. Updates followed streams and follower count; may accept and consume an existing in"},{"name":"get_me","description":"Read the signed-in Synoptic profile, email address, onboarding status, and terminal access request status."},{"name":"get_user","description":"Read a public Synoptic profile by exact username. Use get_user_by_id for an ID such as a stream’s authorId, or get_me for the signed-in account. Unknown usernam"},{"name":"get_user_by_id","description":"Read a public Synoptic profile by user ID. Use get_user for a username, or get_me for the signed-in account. Unknown IDs return User not found."},{"name":"get_highlighted_authors","description":"List up to 50 public profiles of authors Synoptic features (isHighlighted), for discovery when no particular author is named. Not paginated. Use get_user or get"},{"name":"update_profile","description":"Update the signed-in user’s public Synoptic profile: display name, biography, avatar, or background image. Changes are visible to other users. Omitted fields st"},{"name":"generate_username_suggestions","description":"Generate and save five available username choices for the signed-in user. These replace previous suggestions and can be used with set_username."},{"name":"set_username","description":"Set the signed-in user’s public Synoptic username to a saved suggestion or their verified X handle. Generate suggestions first when needed."},{"name":"remove_x_handle","description":"Remove the verified X handle from the signed-in user’s public Synoptic profile. Does not modify the X account."},{"name":"get_followers","description":"List followers of a Synoptic username, or the signed-in user when username is omitted. Continue with nextToken. Use get_following_users for the authors a user f"},{"name":"get_following_users","description":"List authors followed by a Synoptic username, or by the signed-in user when username is omitted. Continue with nextToken. Lists users only: use streams_followin"},{"name":"is_following_user","description":"Check whether the signed-in user follows a given author. Checks only the signed-in user; use get_following_users to list a user’s follows."},{"name":"follow_user","description":"Follow an author as the signed-in user. May notify the author, including by email or push according to their settings. Returns success=false when already follow"},{"name":"unfollow_user","description":"Stop following an author as the signed-in user. Returns success=false when no follow exists or the operation fails. Use unfollow_stream to unfollow a stream."},{"name":"get_notification_settings","description":"Read the signed-in user’s notification channel switches and per-event preferences. Shows the four groups update_notification_preferences replaces and the switch"},{"name":"update_notification_preferences","description":"Replace notification channel preferences for mentions, new followers, subscribed-author posts, and system events. Read current settings first; provide all four "},{"name":"set_notification_channel","description":"Turn the in-app or email channel on or off for the whole signed-in account, not per device. While a channel is off, none of the account’s notifications are deli"},{"name":"get_notifications","description":"Read the signed-in user’s paginated in-app notifications. Set read=false for unread notifications; omit read for both. Reading this list does not mark notificat"},{"name":"mark_notification_read","description":"Mark one of the signed-in user’s notifications as read. IDs that are not the signed-in user’s notifications are rejected. Use mark_all_notifications_read for al"},{"name":"mark_all_notifications_read","description":"Mark every unread in-app notification in the signed-in account as read. Use mark_notification_read for one notification."},{"name":"request_terminal_access","description":"Join the waitlist for early access to the Synoptic trading terminal (beta) for the signed-in account. Sets terminalAccessRequested, which get_me reports; repeat"},{"name":"streams_following","description":"List streams the signed-in account follows, with optional metadata filters and pagination. Use streams_created for streams you own, streams_all or search for th"},{"name":"streams_created","description":"List streams the signed-in account owns, including unpublished DRAFT streams, with optional filters and pagination. Use it to find IDs for create_stream_post, u"},{"name":"unfollow_stream","description":"Unfollow a stream for the signed-in account. Does not cancel a paid subscription or restore consumed invitations. Use unfollow_user for authors."},{"name":"search_stream_posts","description":"Search full post text within one accessible stream, newest first. Supports ISO date bounds; custom-target restrictions apply. Continue with nextOffset; this dif"},{"name":"get_post","description":"Read an existing stream post by ID. Public stream posts do not require following; private stream posts require individual-post access. Custom-target restriction"},{"name":"create_stream_post","description":"Add a text post to a stream owned by the signed-in user. A new post may notify followers; timestamps are assigned by the platform. Use publish_stream to take a "},{"name":"create_stream","description":"Create a free draft publishing stream owned by the signed-in user for their research, news, or other updates. Supply a plain-text description and add a first po"},{"name":"update_stream","description":"Update owned stream metadata. Omitted fields retain current values. A supplied description replaces its formatting with plain text. Does not change visibility, "},{"name":"publish_stream","description":"Publish an owned draft stream, setting its state to ACTIVE. May notify users; the returned state is authoritative. Publishing can’t be undone through MCP. Use c"},{"name":"delete_stream","description":"Delete an owned free stream. Unfollows and notifies its followers, removes it from collections, API key publish permissions and source routes, and cannot be und"},{"name":"get_stream_custom_targets","description":"Read configured custom-target values for an accessible stream, such as the selected accounts, channels, repositories, or tracking criteria supported by that fee"},{"name":"set_stream_custom_targets","description":"Replace the signed-in user’s selected targets on a Synoptic custom-target stream and return the saved list. Targets, such as accounts, channels, repositories, o"},{"name":"patch_stream_custom_targets","description":"Add or remove targets in the signed-in user’s selection on a Synoptic custom-target stream, keeping other targets, and return the resulting list. Targets, such "},{"name":"list_stream_decks","description":"List the signed-in user’s stream decks in their saved display order."},{"name":"create_stream_deck","description":"Create an empty stream deck, a dashboard of collection columns, for the signed-in user and return its ID. Add columns with create_collection. Each account suppo"},{"name":"update_stream_deck","description":"Rename an existing stream deck owned by the signed-in user; nothing else changes. Use reorder_stream_decks to move it or delete_stream_deck to remove it."},{"name":"delete_stream_deck","description":"Delete a stream deck owned by the signed-in user and every custom collection in that deck. The last remaining deck cannot be deleted. This does not delete the o"},{"name":"reorder_stream_decks","description":"Replace the signed-in user’s stream deck display order. Include every existing deck ID exactly once."},{"name":"list_collections","description":"List the signed-in user’s custom collections in a stream deck, in display order. Use get_collection for source streams and target selections."},{"name":"get_collection","description":"Read a custom collection owned by the signed-in user, including its keyword filters, AI filter ID, source streams, and selected custom targets. Returns the full"},{"name":"create_collection","description":"Create a collection in the signed-in user’s stream deck from existing Synoptic streams and return collection metadata. Automatically follows eligible selected s"},{"name":"update_collection","description":"Replace a custom collection’s name, source list, filters, and highlights. Read get_collection first and preserve desired settings: omitted filters, highlights a"},{"name":"delete_collection","description":"Delete a custom collection owned by the signed-in user, including its saved versions and source configuration. Original stream posts and follows remain. Use del"},{"name":"reorder_collections","description":"Replace a stream deck’s collection display order. Include every existing collection ID in that deck exactly once."},{"name":"set_collection_column_width","description":"Set how wide a custom collection’s column appears in the signed-in user’s stream deck in the Synoptic app. Display only: sources, filters and posts are unchange"},{"name":"get_collection_posts","description":"Read up to 50 stored posts from a collection owned by the signed-in user, optionally filtered by matched crypto or prediction markets. Rechecks current stream a"},{"name":"list_ai_filters","description":"List the signed-in user’s saved AI filter definitions. Does not run or evaluate filters."},{"name":"get_ai_filter","description":"Read one saved AI filter definition owned by the signed-in user. Does not evaluate the filter."},{"name":"create_ai_filter","description":"Save a named AI filter prompt for the signed-in user without evaluating it. Attach the returned id through filters.ai in create_collection, or in update_collect"},{"name":"update_ai_filter","description":"Replace the name and prompt of an AI filter owned by the signed-in user. Future posts in collections using this filter use the updated prompt. This operation do"},{"name":"delete_ai_filter","description":"Delete an AI filter owned by the signed-in user and detach it from collections using it. Those collections stop applying that AI filter."},{"name":"list_terminal_tabs","description":"List the signed-in user’s terminal tabs in display order, with their saved layout configuration as JSON strings."},{"name":"create_terminal_tab","description":"Create a terminal tab for the signed-in user using a saved layout JSON object serialized as a string. Prefer copying an existing tab configuration from list_ter"},{"name":"update_terminal_tab","description":"Rename a terminal tab or replace its entire saved layout configuration. Omitted fields retain their previous values. Read list_terminal_tabs before replacing a "},{"name":"delete_terminal_tab","description":"Delete a terminal tab owned by the signed-in user and its saved layout. The platform prevents deleting the last tab. Use update_terminal_tab to change a layout "},{"name":"reorder_terminal_tabs","description":"Replace the signed-in user’s terminal tab display order. Include every existing tab ID exactly once."},{"name":"list_stream_packages","description":"Browse the catalog of stream packages (bundles of streams sold as one subscription) with available prices, most-subscribed first. Requires a linked account, unl"},{"name":"list_my_stream_packages","description":"List stream packages CREATED or SUBSCRIBED by the signed-in user, including available prices. Use list_stream_packages to browse all packages and get_stream_pac"},{"name":"get_stream_package","description":"Read a stream package, its available prices, and included stream cards the signed-in user may view. Non-owners see active included streams only. Does not return"},{"name":"list_stream_invites","description":"List pending stream invitations addressed to the signed-in account. Includes accessible stream cards and preserves pagination. Does not accept or dismiss invita"},{"name":"get_stream_subscription","description":"Read the signed-in user’s direct paid subscription status for a stream, including price and scheduled cancellation. A null subscription does not rule out access"},{"name":"get_stream_package_subscription","description":"Read the signed-in user’s paid subscription status for a stream package, including price and scheduled cancellation. Returns null when no subscription is found."},{"name":"request_stream","description":"Submit a stream request to Synoptic support on behalf of the signed-in user. Describe the source or website, desired content and use case. Returns a confirmed s"},{"name":"request_feature","description":"Submit a feature request to Synoptic support on behalf of the signed-in user. Describe the problem, proposed behavior and use case. Returns a confirmed support "}],"toolCount":70,"toolsHash":"0b34128b19ac2c8eca25e9fb5abce69eec4d00cffa70fcf8200c7194244b15d5","serverName":"synoptic","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T17:34:52.416Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":98,"error":null,"detail":{"tools":[{"name":"get_stream_posts","description":"Read one page of stored posts from an accessible Synoptic stream, newest first. Requires authentication and permission to read its posts; custom-target restrict"},{"name":"streams_all","description":"List one page of active public streams in the Synoptic catalog without signing in. Returns stored stream metadata, optionally filtered by minimum follower count"},{"name":"search","description":"Search the Synoptic stream catalog by keyword. Matches stream names, labels, descriptions, categories, and IDs; does not search post text or accounts on other s"},{"name":"get_stream","description":"Inspect a discovered Synoptic feed by ID before reading, configuring monitoring targets, or planning an API integration. Returns its description, publication st"},{"name":"fetch","description":"Read a Synoptic stream card by ID: title, description, and stream URL for citation. Public cards need no sign-in; private cards require a linked account with ac"},{"name":"follow_stream","description":"Sign in to follow a Synoptic stream when the user asks to follow that stream. Updates followed streams and follower count; may accept and consume an existing in"},{"name":"get_me","description":"Read the signed-in Synoptic profile, email address, onboarding status, and terminal access request status."},{"name":"get_user","description":"Read a public Synoptic profile by exact username. Use get_user_by_id for an ID such as a stream’s authorId, or get_me for the signed-in account. Unknown usernam"},{"name":"get_user_by_id","description":"Read a public Synoptic profile by user ID. Use get_user for a username, or get_me for the signed-in account. Unknown IDs return User not found."},{"name":"get_highlighted_authors","description":"List up to 50 public profiles of authors Synoptic features (isHighlighted), for discovery when no particular author is named. Not paginated. Use get_user or get"},{"name":"update_profile","description":"Update the signed-in user’s public Synoptic profile: display name, biography, avatar, or background image. Changes are visible to other users. Omitted fields st"},{"name":"generate_username_suggestions","description":"Generate and save five available username choices for the signed-in user. These replace previous suggestions and can be used with set_username."},{"name":"set_username","description":"Set the signed-in user’s public Synoptic username to a saved suggestion or their verified X handle. Generate suggestions first when needed."},{"name":"remove_x_handle","description":"Remove the verified X handle from the signed-in user’s public Synoptic profile. Does not modify the X account."},{"name":"get_followers","description":"List followers of a Synoptic username, or the signed-in user when username is omitted. Continue with nextToken. Use get_following_users for the authors a user f"},{"name":"get_following_users","description":"List authors followed by a Synoptic username, or by the signed-in user when username is omitted. Continue with nextToken. Lists users only: use streams_followin"},{"name":"is_following_user","description":"Check whether the signed-in user follows a given author. Checks only the signed-in user; use get_following_users to list a user’s follows."},{"name":"follow_user","description":"Follow an author as the signed-in user. May notify the author, including by email or push according to their settings. Returns success=false when already follow"},{"name":"unfollow_user","description":"Stop following an author as the signed-in user. Returns success=false when no follow exists or the operation fails. Use unfollow_stream to unfollow a stream."},{"name":"get_notification_settings","description":"Read the signed-in user’s notification channel switches and per-event preferences. Shows the four groups update_notification_preferences replaces and the switch"},{"name":"update_notification_preferences","description":"Replace notification channel preferences for mentions, new followers, subscribed-author posts, and system events. Read current settings first; provide all four "},{"name":"set_notification_channel","description":"Turn the in-app or email channel on or off for the whole signed-in account, not per device. While a channel is off, none of the account’s notifications are deli"},{"name":"get_notifications","description":"Read the signed-in user’s paginated in-app notifications. Set read=false for unread notifications; omit read for both. Reading this list does not mark notificat"},{"name":"mark_notification_read","description":"Mark one of the signed-in user’s notifications as read. IDs that are not the signed-in user’s notifications are rejected. Use mark_all_notifications_read for al"},{"name":"mark_all_notifications_read","description":"Mark every unread in-app notification in the signed-in account as read. Use mark_notification_read for one notification."},{"name":"request_terminal_access","description":"Join the waitlist for early access to the Synoptic trading terminal (beta) for the signed-in account. Sets terminalAccessRequested, which get_me reports; repeat"},{"name":"streams_following","description":"List streams the signed-in account follows, with optional metadata filters and pagination. Use streams_created for streams you own, streams_all or search for th"},{"name":"streams_created","description":"List streams the signed-in account owns, including unpublished DRAFT streams, with optional filters and pagination. Use it to find IDs for create_stream_post, u"},{"name":"unfollow_stream","description":"Unfollow a stream for the signed-in account. Does not cancel a paid subscription or restore consumed invitations. Use unfollow_user for authors."},{"name":"search_stream_posts","description":"Search full post text within one accessible stream, newest first. Supports ISO date bounds; custom-target restrictions apply. Continue with nextOffset; this dif"},{"name":"get_post","description":"Read an existing stream post by ID. Public stream posts do not require following; private stream posts require individual-post access. Custom-target restriction"},{"name":"create_stream_post","description":"Add a text post to a stream owned by the signed-in user. A new post may notify followers; timestamps are assigned by the platform. Use publish_stream to take a "},{"name":"create_stream","description":"Create a free draft publishing stream owned by the signed-in user for their research, news, or other updates. Supply a plain-text description and add a first po"},{"name":"update_stream","description":"Update owned stream metadata. Omitted fields retain current values. A supplied description replaces its formatting with plain text. Does not change visibility, "},{"name":"publish_stream","description":"Publish an owned draft stream, setting its state to ACTIVE. May notify users; the returned state is authoritative. Publishing can’t be undone through MCP. Use c"},{"name":"delete_stream","description":"Delete an owned free stream. Unfollows and notifies its followers, removes it from collections, API key publish permissions and source routes, and cannot be und"},{"name":"get_stream_custom_targets","description":"Read configured custom-target values for an accessible stream, such as the selected accounts, channels, repositories, or tracking criteria supported by that fee"},{"name":"set_stream_custom_targets","description":"Replace the signed-in user’s selected targets on a Synoptic custom-target stream and return the saved list. Targets, such as accounts, channels, repositories, o"},{"name":"patch_stream_custom_targets","description":"Add or remove targets in the signed-in user’s selection on a Synoptic custom-target stream, keeping other targets, and return the resulting list. Targets, such "},{"name":"list_stream_decks","description":"List the signed-in user’s stream decks in their saved display order."},{"name":"create_stream_deck","description":"Create an empty stream deck, a dashboard of collection columns, for the signed-in user and return its ID. Add columns with create_collection. Each account suppo"},{"name":"update_stream_deck","description":"Rename an existing stream deck owned by the signed-in user; nothing else changes. Use reorder_stream_decks to move it or delete_stream_deck to remove it."},{"name":"delete_stream_deck","description":"Delete a stream deck owned by the signed-in user and every custom collection in that deck. The last remaining deck cannot be deleted. This does not delete the o"},{"name":"reorder_stream_decks","description":"Replace the signed-in user’s stream deck display order. Include every existing deck ID exactly once."},{"name":"list_collections","description":"List the signed-in user’s custom collections in a stream deck, in display order. Use get_collection for source streams and target selections."},{"name":"get_collection","description":"Read a custom collection owned by the signed-in user, including its keyword filters, AI filter ID, source streams, and selected custom targets. Returns the full"},{"name":"create_collection","description":"Create a collection in the signed-in user’s stream deck from existing Synoptic streams and return collection metadata. Automatically follows eligible selected s"},{"name":"update_collection","description":"Replace a custom collection’s name, source list, filters, and highlights. Read get_collection first and preserve desired settings: omitted filters, highlights a"},{"name":"delete_collection","description":"Delete a custom collection owned by the signed-in user, including its saved versions and source configuration. Original stream posts and follows remain. Use del"},{"name":"reorder_collections","description":"Replace a stream deck’s collection display order. Include every existing collection ID in that deck exactly once."},{"name":"set_collection_column_width","description":"Set how wide a custom collection’s column appears in the signed-in user’s stream deck in the Synoptic app. Display only: sources, filters and posts are unchange"},{"name":"get_collection_posts","description":"Read up to 50 stored posts from a collection owned by the signed-in user, optionally filtered by matched crypto or prediction markets. Rechecks current stream a"},{"name":"list_ai_filters","description":"List the signed-in user’s saved AI filter definitions. Does not run or evaluate filters."},{"name":"get_ai_filter","description":"Read one saved AI filter definition owned by the signed-in user. Does not evaluate the filter."},{"name":"create_ai_filter","description":"Save a named AI filter prompt for the signed-in user without evaluating it. Attach the returned id through filters.ai in create_collection, or in update_collect"},{"name":"update_ai_filter","description":"Replace the name and prompt of an AI filter owned by the signed-in user. Future posts in collections using this filter use the updated prompt. This operation do"},{"name":"delete_ai_filter","description":"Delete an AI filter owned by the signed-in user and detach it from collections using it. Those collections stop applying that AI filter."},{"name":"list_terminal_tabs","description":"List the signed-in user’s terminal tabs in display order, with their saved layout configuration as JSON strings."},{"name":"create_terminal_tab","description":"Create a terminal tab for the signed-in user using a saved layout JSON object serialized as a string. Prefer copying an existing tab configuration from list_ter"},{"name":"update_terminal_tab","description":"Rename a terminal tab or replace its entire saved layout configuration. Omitted fields retain their previous values. Read list_terminal_tabs before replacing a "},{"name":"delete_terminal_tab","description":"Delete a terminal tab owned by the signed-in user and its saved layout. The platform prevents deleting the last tab. Use update_terminal_tab to change a layout "},{"name":"reorder_terminal_tabs","description":"Replace the signed-in user’s terminal tab display order. Include every existing tab ID exactly once."},{"name":"list_stream_packages","description":"Browse the catalog of stream packages (bundles of streams sold as one subscription) with available prices, most-subscribed first. Requires a linked account, unl"},{"name":"list_my_stream_packages","description":"List stream packages CREATED or SUBSCRIBED by the signed-in user, including available prices. Use list_stream_packages to browse all packages and get_stream_pac"},{"name":"get_stream_package","description":"Read a stream package, its available prices, and included stream cards the signed-in user may view. Non-owners see active included streams only. Does not return"},{"name":"list_stream_invites","description":"List pending stream invitations addressed to the signed-in account. Includes accessible stream cards and preserves pagination. Does not accept or dismiss invita"},{"name":"get_stream_subscription","description":"Read the signed-in user’s direct paid subscription status for a stream, including price and scheduled cancellation. A null subscription does not rule out access"},{"name":"get_stream_package_subscription","description":"Read the signed-in user’s paid subscription status for a stream package, including price and scheduled cancellation. Returns null when no subscription is found."},{"name":"request_stream","description":"Submit a stream request to Synoptic support on behalf of the signed-in user. Describe the source or website, desired content and use case. Returns a confirmed s"},{"name":"request_feature","description":"Submit a feature request to Synoptic support on behalf of the signed-in user. Describe the problem, proposed behavior and use case. Returns a confirmed support "}],"toolCount":70,"toolsHash":"0b34128b19ac2c8eca25e9fb5abce69eec4d00cffa70fcf8200c7194244b15d5","serverName":"synoptic","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T06:26:58.694Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":98,"error":null,"detail":{"tools":[{"name":"get_stream_posts","description":"Read one page of stored posts from an accessible Synoptic stream, newest first. Requires authentication and permission to read its posts; custom-target restrict"},{"name":"streams_all","description":"List one page of active public streams in the Synoptic catalog without signing in. Returns stored stream metadata, optionally filtered by minimum follower count"},{"name":"search","description":"Search the Synoptic stream catalog by keyword. Matches stream names, labels, descriptions, categories, and IDs; does not search post text or accounts on other s"},{"name":"get_stream","description":"Inspect a discovered Synoptic feed by ID before reading, configuring monitoring targets, or planning an API integration. Returns its description, publication st"},{"name":"fetch","description":"Read a Synoptic stream card by ID: title, description, and stream URL for citation. Public cards need no sign-in; private cards require a linked account with ac"},{"name":"follow_stream","description":"Sign in to follow a Synoptic stream when the user asks to follow that stream. Updates followed streams and follower count; may accept and consume an existing in"},{"name":"get_me","description":"Read the signed-in Synoptic profile, email address, onboarding status, and terminal access request status."},{"name":"get_user","description":"Read a public Synoptic profile by exact username. Use get_user_by_id for an ID such as a stream’s authorId, or get_me for the signed-in account. Unknown usernam"},{"name":"get_user_by_id","description":"Read a public Synoptic profile by user ID. Use get_user for a username, or get_me for the signed-in account. Unknown IDs return User not found."},{"name":"get_highlighted_authors","description":"List up to 50 public profiles of authors Synoptic features (isHighlighted), for discovery when no particular author is named. Not paginated. Use get_user or get"},{"name":"update_profile","description":"Update the signed-in user’s public Synoptic profile: display name, biography, avatar, or background image. Changes are visible to other users. Omitted fields st"},{"name":"generate_username_suggestions","description":"Generate and save five available username choices for the signed-in user. These replace previous suggestions and can be used with set_username."},{"name":"set_username","description":"Set the signed-in user’s public Synoptic username to a saved suggestion or their verified X handle. Generate suggestions first when needed."},{"name":"remove_x_handle","description":"Remove the verified X handle from the signed-in user’s public Synoptic profile. Does not modify the X account."},{"name":"get_followers","description":"List followers of a Synoptic username, or the signed-in user when username is omitted. Continue with nextToken. Use get_following_users for the authors a user f"},{"name":"get_following_users","description":"List authors followed by a Synoptic username, or by the signed-in user when username is omitted. Continue with nextToken. Lists users only: use streams_followin"},{"name":"is_following_user","description":"Check whether the signed-in user follows a given author. Checks only the signed-in user; use get_following_users to list a user’s follows."},{"name":"follow_user","description":"Follow an author as the signed-in user. May notify the author, including by email or push according to their settings. Returns success=false when already follow"},{"name":"unfollow_user","description":"Stop following an author as the signed-in user. Returns success=false when no follow exists or the operation fails. Use unfollow_stream to unfollow a stream."},{"name":"get_notification_settings","description":"Read the signed-in user’s notification channel switches and per-event preferences. Shows the four groups update_notification_preferences replaces and the switch"},{"name":"update_notification_preferences","description":"Replace notification channel preferences for mentions, new followers, subscribed-author posts, and system events. Read current settings first; provide all four "},{"name":"set_notification_channel","description":"Turn the in-app or email channel on or off for the whole signed-in account, not per device. While a channel is off, none of the account’s notifications are deli"},{"name":"get_notifications","description":"Read the signed-in user’s paginated in-app notifications. Set read=false for unread notifications; omit read for both. Reading this list does not mark notificat"},{"name":"mark_notification_read","description":"Mark one of the signed-in user’s notifications as read. IDs that are not the signed-in user’s notifications are rejected. Use mark_all_notifications_read for al"},{"name":"mark_all_notifications_read","description":"Mark every unread in-app notification in the signed-in account as read. Use mark_notification_read for one notification."},{"name":"request_terminal_access","description":"Join the waitlist for early access to the Synoptic trading terminal (beta) for the signed-in account. Sets terminalAccessRequested, which get_me reports; repeat"},{"name":"streams_following","description":"List streams the signed-in account follows, with optional metadata filters and pagination. Use streams_created for streams you own, streams_all or search for th"},{"name":"streams_created","description":"List streams the signed-in account owns, including unpublished DRAFT streams, with optional filters and pagination. Use it to find IDs for create_stream_post, u"},{"name":"unfollow_stream","description":"Unfollow a stream for the signed-in account. Does not cancel a paid subscription or restore consumed invitations. Use unfollow_user for authors."},{"name":"search_stream_posts","description":"Search full post text within one accessible stream, newest first. Supports ISO date bounds; custom-target restrictions apply. Continue with nextOffset; this dif"},{"name":"get_post","description":"Read an existing stream post by ID. Public stream posts do not require following; private stream posts require individual-post access. Custom-target restriction"},{"name":"create_stream_post","description":"Add a text post to a stream owned by the signed-in user. A new post may notify followers; timestamps are assigned by the platform. Use publish_stream to take a "},{"name":"create_stream","description":"Create a free draft publishing stream owned by the signed-in user for their research, news, or other updates. Supply a plain-text description and add a first po"},{"name":"update_stream","description":"Update owned stream metadata. Omitted fields retain current values. A supplied description replaces its formatting with plain text. Does not change visibility, "},{"name":"publish_stream","description":"Publish an owned draft stream, setting its state to ACTIVE. May notify users; the returned state is authoritative. Publishing can’t be undone through MCP. Use c"},{"name":"delete_stream","description":"Delete an owned free stream. Unfollows and notifies its followers, removes it from collections, API key publish permissions and source routes, and cannot be und"},{"name":"get_stream_custom_targets","description":"Read configured custom-target values for an accessible stream, such as the selected accounts, channels, repositories, or tracking criteria supported by that fee"},{"name":"set_stream_custom_targets","description":"Replace the signed-in user’s selected targets on a Synoptic custom-target stream and return the saved list. Targets, such as accounts, channels, repositories, o"},{"name":"patch_stream_custom_targets","description":"Add or remove targets in the signed-in user’s selection on a Synoptic custom-target stream, keeping other targets, and return the resulting list. Targets, such "},{"name":"list_stream_decks","description":"List the signed-in user’s stream decks in their saved display order."},{"name":"create_stream_deck","description":"Create an empty stream deck, a dashboard of collection columns, for the signed-in user and return its ID. Add columns with create_collection. Each account suppo"},{"name":"update_stream_deck","description":"Rename an existing stream deck owned by the signed-in user; nothing else changes. Use reorder_stream_decks to move it or delete_stream_deck to remove it."},{"name":"delete_stream_deck","description":"Delete a stream deck owned by the signed-in user and every custom collection in that deck. The last remaining deck cannot be deleted. This does not delete the o"},{"name":"reorder_stream_decks","description":"Replace the signed-in user’s stream deck display order. Include every existing deck ID exactly once."},{"name":"list_collections","description":"List the signed-in user’s custom collections in a stream deck, in display order. Use get_collection for source streams and target selections."},{"name":"get_collection","description":"Read a custom collection owned by the signed-in user, including its keyword filters, AI filter ID, source streams, and selected custom targets. Returns the full"},{"name":"create_collection","description":"Create a collection in the signed-in user’s stream deck from existing Synoptic streams and return collection metadata. Automatically follows eligible selected s"},{"name":"update_collection","description":"Replace a custom collection’s name, source list, filters, and highlights. Read get_collection first and preserve desired settings: omitted filters, highlights a"},{"name":"delete_collection","description":"Delete a custom collection owned by the signed-in user, including its saved versions and source configuration. Original stream posts and follows remain. Use del"},{"name":"reorder_collections","description":"Replace a stream deck’s collection display order. Include every existing collection ID in that deck exactly once."},{"name":"set_collection_column_width","description":"Set how wide a custom collection’s column appears in the signed-in user’s stream deck in the Synoptic app. Display only: sources, filters and posts are unchange"},{"name":"get_collection_posts","description":"Read up to 50 stored posts from a collection owned by the signed-in user, optionally filtered by matched crypto or prediction markets. Rechecks current stream a"},{"name":"list_ai_filters","description":"List the signed-in user’s saved AI filter definitions. Does not run or evaluate filters."},{"name":"get_ai_filter","description":"Read one saved AI filter definition owned by the signed-in user. Does not evaluate the filter."},{"name":"create_ai_filter","description":"Save a named AI filter prompt for the signed-in user without evaluating it. Attach the returned id through filters.ai in create_collection, or in update_collect"},{"name":"update_ai_filter","description":"Replace the name and prompt of an AI filter owned by the signed-in user. Future posts in collections using this filter use the updated prompt. This operation do"},{"name":"delete_ai_filter","description":"Delete an AI filter owned by the signed-in user and detach it from collections using it. Those collections stop applying that AI filter."},{"name":"list_terminal_tabs","description":"List the signed-in user’s terminal tabs in display order, with their saved layout configuration as JSON strings."},{"name":"create_terminal_tab","description":"Create a terminal tab for the signed-in user using a saved layout JSON object serialized as a string. Prefer copying an existing tab configuration from list_ter"},{"name":"update_terminal_tab","description":"Rename a terminal tab or replace its entire saved layout configuration. Omitted fields retain their previous values. Read list_terminal_tabs before replacing a "},{"name":"delete_terminal_tab","description":"Delete a terminal tab owned by the signed-in user and its saved layout. The platform prevents deleting the last tab. Use update_terminal_tab to change a layout "},{"name":"reorder_terminal_tabs","description":"Replace the signed-in user’s terminal tab display order. Include every existing tab ID exactly once."},{"name":"list_stream_packages","description":"Browse the catalog of stream packages (bundles of streams sold as one subscription) with available prices, most-subscribed first. Requires a linked account, unl"},{"name":"list_my_stream_packages","description":"List stream packages CREATED or SUBSCRIBED by the signed-in user, including available prices. Use list_stream_packages to browse all packages and get_stream_pac"},{"name":"get_stream_package","description":"Read a stream package, its available prices, and included stream cards the signed-in user may view. Non-owners see active included streams only. Does not return"},{"name":"list_stream_invites","description":"List pending stream invitations addressed to the signed-in account. Includes accessible stream cards and preserves pagination. Does not accept or dismiss invita"},{"name":"get_stream_subscription","description":"Read the signed-in user’s direct paid subscription status for a stream, including price and scheduled cancellation. A null subscription does not rule out access"},{"name":"get_stream_package_subscription","description":"Read the signed-in user’s paid subscription status for a stream package, including price and scheduled cancellation. Returns null when no subscription is found."},{"name":"request_stream","description":"Submit a stream request to Synoptic support on behalf of the signed-in user. Describe the source or website, desired content and use case. Returns a confirmed s"},{"name":"request_feature","description":"Submit a feature request to Synoptic support on behalf of the signed-in user. Describe the problem, proposed behavior and use case. Returns a confirmed support "}],"toolCount":70,"toolsHash":"0b34128b19ac2c8eca25e9fb5abce69eec4d00cffa70fcf8200c7194244b15d5","serverName":"synoptic","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T23:24:57.614Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":93,"error":null,"detail":{"tools":[{"name":"get_stream_posts","description":"Read one page of stored posts from an accessible Synoptic stream, newest first. Requires authentication and permission to read its posts; custom-target restrict"},{"name":"streams_all","description":"List one page of active public streams in the Synoptic catalog without signing in. Returns stored stream metadata, optionally filtered by minimum follower count"},{"name":"search","description":"Search the Synoptic stream catalog by keyword. Matches stream names, labels, descriptions, categories, and IDs; does not search post text or accounts on other s"},{"name":"get_stream","description":"Inspect a discovered Synoptic feed by ID before reading, configuring monitoring targets, or planning an API integration. Returns its description, publication st"},{"name":"fetch","description":"Read a Synoptic stream card by ID: title, description, and stream URL for citation. Public cards need no sign-in; private cards require a linked account with ac"},{"name":"follow_stream","description":"Sign in to follow a Synoptic stream when the user asks to follow that stream. Updates followed streams and follower count; may accept and consume an existing in"},{"name":"get_me","description":"Read the signed-in Synoptic profile, email address, onboarding status, and terminal access request status."},{"name":"get_user","description":"Read a public Synoptic profile by exact username. Use get_user_by_id for an ID such as a stream’s authorId, or get_me for the signed-in account. Unknown usernam"},{"name":"get_user_by_id","description":"Read a public Synoptic profile by user ID. Use get_user for a username, or get_me for the signed-in account. Unknown IDs return User not found."},{"name":"get_highlighted_authors","description":"List up to 50 public profiles of authors Synoptic features (isHighlighted), for discovery when no particular author is named. Not paginated. Use get_user or get"},{"name":"update_profile","description":"Update the signed-in user’s public Synoptic profile: display name, biography, avatar, or background image. Changes are visible to other users. Omitted fields st"},{"name":"generate_username_suggestions","description":"Generate and save five available username choices for the signed-in user. These replace previous suggestions and can be used with set_username."},{"name":"set_username","description":"Set the signed-in user’s public Synoptic username to a saved suggestion or their verified X handle. Generate suggestions first when needed."},{"name":"remove_x_handle","description":"Remove the verified X handle from the signed-in user’s public Synoptic profile. Does not modify the X account."},{"name":"get_followers","description":"List followers of a Synoptic username, or the signed-in user when username is omitted. Continue with nextToken. Use get_following_users for the authors a user f"},{"name":"get_following_users","description":"List authors followed by a Synoptic username, or by the signed-in user when username is omitted. Continue with nextToken. Lists users only: use streams_followin"},{"name":"is_following_user","description":"Check whether the signed-in user follows a given author. Checks only the signed-in user; use get_following_users to list a user’s follows."},{"name":"follow_user","description":"Follow an author as the signed-in user. May notify the author, including by email or push according to their settings. Returns success=false when already follow"},{"name":"unfollow_user","description":"Stop following an author as the signed-in user. Returns success=false when no follow exists or the operation fails. Use unfollow_stream to unfollow a stream."},{"name":"get_notification_settings","description":"Read the signed-in user’s notification channel switches and per-event preferences. Shows the four groups update_notification_preferences replaces and the switch"},{"name":"update_notification_preferences","description":"Replace notification channel preferences for mentions, new followers, subscribed-author posts, and system events. Read current settings first; provide all four "},{"name":"set_notification_channel","description":"Turn the in-app or email channel on or off for the whole signed-in account, not per device. While a channel is off, none of the account’s notifications are deli"},{"name":"get_notifications","description":"Read the signed-in user’s paginated in-app notifications. Set read=false for unread notifications; omit read for both. Reading this list does not mark notificat"},{"name":"mark_notification_read","description":"Mark one of the signed-in user’s notifications as read. IDs that are not the signed-in user’s notifications are rejected. Use mark_all_notifications_read for al"},{"name":"mark_all_notifications_read","description":"Mark every unread in-app notification in the signed-in account as read. Use mark_notification_read for one notification."},{"name":"request_terminal_access","description":"Join the waitlist for early access to the Synoptic trading terminal (beta) for the signed-in account. Sets terminalAccessRequested, which get_me reports; repeat"},{"name":"streams_following","description":"List streams the signed-in account follows, with optional metadata filters and pagination. Use streams_created for streams you own, streams_all or search for th"},{"name":"streams_created","description":"List streams the signed-in account owns, including unpublished DRAFT streams, with optional filters and pagination. Use it to find IDs for create_stream_post, u"},{"name":"unfollow_stream","description":"Unfollow a stream for the signed-in account. Does not cancel a paid subscription or restore consumed invitations. Use unfollow_user for authors."},{"name":"search_stream_posts","description":"Search full post text within one accessible stream, newest first. Supports ISO date bounds; custom-target restrictions apply. Continue with nextOffset; this dif"},{"name":"get_post","description":"Read an existing stream post by ID. Public stream posts do not require following; private stream posts require individual-post access. Custom-target restriction"},{"name":"create_stream_post","description":"Add a text post to a stream owned by the signed-in user. A new post may notify followers; timestamps are assigned by the platform. Use publish_stream to take a "},{"name":"create_stream","description":"Create a free draft publishing stream owned by the signed-in user for their research, news, or other updates. Supply a plain-text description and add a first po"},{"name":"update_stream","description":"Update owned stream metadata. Omitted fields retain current values. A supplied description replaces its formatting with plain text. Does not change visibility, "},{"name":"publish_stream","description":"Publish an owned draft stream, setting its state to ACTIVE. May notify users; the returned state is authoritative. Publishing can’t be undone through MCP. Use c"},{"name":"delete_stream","description":"Delete an owned free stream. Unfollows and notifies its followers, removes it from collections, API key publish permissions and source routes, and cannot be und"},{"name":"get_stream_custom_targets","description":"Read configured custom-target values for an accessible stream, such as the selected accounts, channels, repositories, or tracking criteria supported by that fee"},{"name":"set_stream_custom_targets","description":"Replace the signed-in user’s selected targets on a Synoptic custom-target stream and return the saved list. Targets, such as accounts, channels, repositories, o"},{"name":"patch_stream_custom_targets","description":"Add or remove targets in the signed-in user’s selection on a Synoptic custom-target stream, keeping other targets, and return the resulting list. Targets, such "},{"name":"list_stream_decks","description":"List the signed-in user’s stream decks in their saved display order."},{"name":"create_stream_deck","description":"Create an empty stream deck, a dashboard of collection columns, for the signed-in user and return its ID. Add columns with create_collection. Each account suppo"},{"name":"update_stream_deck","description":"Rename an existing stream deck owned by the signed-in user; nothing else changes. Use reorder_stream_decks to move it or delete_stream_deck to remove it."},{"name":"delete_stream_deck","description":"Delete a stream deck owned by the signed-in user and every custom collection in that deck. The last remaining deck cannot be deleted. This does not delete the o"},{"name":"reorder_stream_decks","description":"Replace the signed-in user’s stream deck display order. Include every existing deck ID exactly once."},{"name":"list_collections","description":"List the signed-in user’s custom collections in a stream deck, in display order. Use get_collection for source streams and target selections."},{"name":"get_collection","description":"Read a custom collection owned by the signed-in user, including its keyword filters, AI filter ID, source streams, and selected custom targets. Returns the full"},{"name":"create_collection","description":"Create a collection in the signed-in user’s stream deck from existing Synoptic streams and return collection metadata. Automatically follows eligible selected s"},{"name":"update_collection","description":"Replace a custom collection’s name, source list, filters, and highlights. Read get_collection first and preserve desired settings: omitted filters, highlights a"},{"name":"delete_collection","description":"Delete a custom collection owned by the signed-in user, including its saved versions and source configuration. Original stream posts and follows remain. Use del"},{"name":"reorder_collections","description":"Replace a stream deck’s collection display order. Include every existing collection ID in that deck exactly once."},{"name":"set_collection_column_width","description":"Set how wide a custom collection’s column appears in the signed-in user’s stream deck in the Synoptic app. Display only: sources, filters and posts are unchange"},{"name":"get_collection_posts","description":"Read up to 50 stored posts from a collection owned by the signed-in user, optionally filtered by matched crypto or prediction markets. Rechecks current stream a"},{"name":"list_ai_filters","description":"List the signed-in user’s saved AI filter definitions. Does not run or evaluate filters."},{"name":"get_ai_filter","description":"Read one saved AI filter definition owned by the signed-in user. Does not evaluate the filter."},{"name":"create_ai_filter","description":"Save a named AI filter prompt for the signed-in user without evaluating it. Attach the returned id through filters.ai in create_collection, or in update_collect"},{"name":"update_ai_filter","description":"Replace the name and prompt of an AI filter owned by the signed-in user. Future posts in collections using this filter use the updated prompt. This operation do"},{"name":"delete_ai_filter","description":"Delete an AI filter owned by the signed-in user and detach it from collections using it. Those collections stop applying that AI filter."},{"name":"list_terminal_tabs","description":"List the signed-in user’s terminal tabs in display order, with their saved layout configuration as JSON strings."},{"name":"create_terminal_tab","description":"Create a terminal tab for the signed-in user using a saved layout JSON object serialized as a string. Prefer copying an existing tab configuration from list_ter"},{"name":"update_terminal_tab","description":"Rename a terminal tab or replace its entire saved layout configuration. Omitted fields retain their previous values. Read list_terminal_tabs before replacing a "},{"name":"delete_terminal_tab","description":"Delete a terminal tab owned by the signed-in user and its saved layout. The platform prevents deleting the last tab. Use update_terminal_tab to change a layout "},{"name":"reorder_terminal_tabs","description":"Replace the signed-in user’s terminal tab display order. Include every existing tab ID exactly once."},{"name":"list_stream_packages","description":"Browse the catalog of stream packages (bundles of streams sold as one subscription) with available prices, most-subscribed first. Requires a linked account, unl"},{"name":"list_my_stream_packages","description":"List stream packages CREATED or SUBSCRIBED by the signed-in user, including available prices. Use list_stream_packages to browse all packages and get_stream_pac"},{"name":"get_stream_package","description":"Read a stream package, its available prices, and included stream cards the signed-in user may view. Non-owners see active included streams only. Does not return"},{"name":"list_stream_invites","description":"List pending stream invitations addressed to the signed-in account. Includes accessible stream cards and preserves pagination. Does not accept or dismiss invita"},{"name":"get_stream_subscription","description":"Read the signed-in user’s direct paid subscription status for a stream, including price and scheduled cancellation. A null subscription does not rule out access"},{"name":"get_stream_package_subscription","description":"Read the signed-in user’s paid subscription status for a stream package, including price and scheduled cancellation. Returns null when no subscription is found."},{"name":"request_stream","description":"Submit a stream request to Synoptic support on behalf of the signed-in user. Describe the source or website, desired content and use case. Returns a confirmed s"},{"name":"request_feature","description":"Submit a feature request to Synoptic support on behalf of the signed-in user. Describe the problem, proposed behavior and use case. Returns a confirmed support "}],"toolCount":70,"toolsHash":"0b34128b19ac2c8eca25e9fb5abce69eec4d00cffa70fcf8200c7194244b15d5","serverName":"synoptic","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T16:25:26.070Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":158,"error":null,"detail":{"tools":[{"name":"get_stream_posts","description":"Read one page of stored posts from an accessible Synoptic stream, newest first. Requires authentication and permission to read its posts; custom-target restrict"},{"name":"streams_all","description":"List one page of active public streams in the Synoptic catalog without signing in. Returns stored stream metadata, optionally filtered by minimum follower count"},{"name":"search","description":"Search the Synoptic stream catalog by keyword. Matches stream names, labels, descriptions, categories, and IDs; does not search post text or accounts on other s"},{"name":"get_stream","description":"Inspect a discovered Synoptic feed by ID before reading, configuring monitoring targets, or planning an API integration. Returns its description, publication st"},{"name":"fetch","description":"Read a Synoptic stream card by ID: title, description, and stream URL for citation. Public cards need no sign-in; private cards require a linked account with ac"},{"name":"follow_stream","description":"Sign in to follow a Synoptic stream when the user asks to follow that stream. Updates followed streams and follower count; may accept and consume an existing in"},{"name":"get_me","description":"Read the signed-in Synoptic profile, email address, onboarding status, and terminal access request status."},{"name":"get_user","description":"Read a public Synoptic profile by exact username. Use get_user_by_id for an ID such as a stream’s authorId, or get_me for the signed-in account. Unknown usernam"},{"name":"get_user_by_id","description":"Read a public Synoptic profile by user ID. Use get_user for a username, or get_me for the signed-in account. Unknown IDs return User not found."},{"name":"get_highlighted_authors","description":"List up to 50 public profiles of authors Synoptic features (isHighlighted), for discovery when no particular author is named. Not paginated. Use get_user or get"},{"name":"update_profile","description":"Update the signed-in user’s public Synoptic profile: display name, biography, avatar, or background image. Changes are visible to other users. Omitted fields st"},{"name":"generate_username_suggestions","description":"Generate and save five available username choices for the signed-in user. These replace previous suggestions and can be used with set_username."},{"name":"set_username","description":"Set the signed-in user’s public Synoptic username to a saved suggestion or their verified X handle. Generate suggestions first when needed."},{"name":"remove_x_handle","description":"Remove the verified X handle from the signed-in user’s public Synoptic profile. Does not modify the X account."},{"name":"get_followers","description":"List followers of a Synoptic username, or the signed-in user when username is omitted. Continue with nextToken. Use get_following_users for the authors a user f"},{"name":"get_following_users","description":"List authors followed by a Synoptic username, or by the signed-in user when username is omitted. Continue with nextToken. Lists users only: use streams_followin"},{"name":"is_following_user","description":"Check whether the signed-in user follows a given author. Checks only the signed-in user; use get_following_users to list a user’s follows."},{"name":"follow_user","description":"Follow an author as the signed-in user. May notify the author, including by email or push according to their settings. Returns success=false when already follow"},{"name":"unfollow_user","description":"Stop following an author as the signed-in user. Returns success=false when no follow exists or the operation fails. Use unfollow_stream to unfollow a stream."},{"name":"get_notification_settings","description":"Read the signed-in user’s notification channel switches and per-event preferences. Shows the four groups update_notification_preferences replaces and the switch"},{"name":"update_notification_preferences","description":"Replace notification channel preferences for mentions, new followers, subscribed-author posts, and system events. Read current settings first; provide all four "},{"name":"set_notification_channel","description":"Turn the in-app or email channel on or off for the whole signed-in account, not per device. While a channel is off, none of the account’s notifications are deli"},{"name":"get_notifications","description":"Read the signed-in user’s paginated in-app notifications. Set read=false for unread notifications; omit read for both. Reading this list does not mark notificat"},{"name":"mark_notification_read","description":"Mark one of the signed-in user’s notifications as read. IDs that are not the signed-in user’s notifications are rejected. Use mark_all_notifications_read for al"},{"name":"mark_all_notifications_read","description":"Mark every unread in-app notification in the signed-in account as read. Use mark_notification_read for one notification."},{"name":"request_terminal_access","description":"Join the waitlist for early access to the Synoptic trading terminal (beta) for the signed-in account. Sets terminalAccessRequested, which get_me reports; repeat"},{"name":"streams_following","description":"List streams the signed-in account follows, with optional metadata filters and pagination. Use streams_created for streams you own, streams_all or search for th"},{"name":"streams_created","description":"List streams the signed-in account owns, including unpublished DRAFT streams, with optional filters and pagination. Use it to find IDs for create_stream_post, u"},{"name":"unfollow_stream","description":"Unfollow a stream for the signed-in account. Does not cancel a paid subscription or restore consumed invitations. Use unfollow_user for authors."},{"name":"search_stream_posts","description":"Search full post text within one accessible stream, newest first. Supports ISO date bounds; custom-target restrictions apply. Continue with nextOffset; this dif"},{"name":"get_post","description":"Read an existing stream post by ID. Public stream posts do not require following; private stream posts require individual-post access. Custom-target restriction"},{"name":"create_stream_post","description":"Add a text post to a stream owned by the signed-in user. A new post may notify followers; timestamps are assigned by the platform. Use publish_stream to take a "},{"name":"create_stream","description":"Create a free draft publishing stream owned by the signed-in user for their research, news, or other updates. Supply a plain-text description and add a first po"},{"name":"update_stream","description":"Update owned stream metadata. Omitted fields retain current values. A supplied description replaces its formatting with plain text. Does not change visibility, "},{"name":"publish_stream","description":"Publish an owned draft stream, setting its state to ACTIVE. May notify users; the returned state is authoritative. Publishing can’t be undone through MCP. Use c"},{"name":"delete_stream","description":"Delete an owned free stream. Unfollows and notifies its followers, removes it from collections, API key publish permissions and source routes, and cannot be und"},{"name":"get_stream_custom_targets","description":"Read configured custom-target values for an accessible stream, such as the selected accounts, channels, repositories, or tracking criteria supported by that fee"},{"name":"set_stream_custom_targets","description":"Replace the signed-in user’s selected targets on a Synoptic custom-target stream and return the saved list. Targets, such as accounts, channels, repositories, o"},{"name":"patch_stream_custom_targets","description":"Add or remove targets in the signed-in user’s selection on a Synoptic custom-target stream, keeping other targets, and return the resulting list. Targets, such "},{"name":"list_stream_decks","description":"List the signed-in user’s stream decks in their saved display order."},{"name":"create_stream_deck","description":"Create an empty stream deck, a dashboard of collection columns, for the signed-in user and return its ID. Add columns with create_collection. Each account suppo"},{"name":"update_stream_deck","description":"Rename an existing stream deck owned by the signed-in user; nothing else changes. Use reorder_stream_decks to move it or delete_stream_deck to remove it."},{"name":"delete_stream_deck","description":"Delete a stream deck owned by the signed-in user and every custom collection in that deck. The last remaining deck cannot be deleted. This does not delete the o"},{"name":"reorder_stream_decks","description":"Replace the signed-in user’s stream deck display order. Include every existing deck ID exactly once."},{"name":"list_collections","description":"List the signed-in user’s custom collections in a stream deck, in display order. Use get_collection for source streams and target selections."},{"name":"get_collection","description":"Read a custom collection owned by the signed-in user, including its keyword filters, AI filter ID, source streams, and selected custom targets. Returns the full"},{"name":"create_collection","description":"Create a collection in the signed-in user’s stream deck from existing Synoptic streams and return collection metadata. Automatically follows eligible selected s"},{"name":"update_collection","description":"Replace a custom collection’s name, source list, filters, and highlights. Read get_collection first and preserve desired settings: omitted filters, highlights a"},{"name":"delete_collection","description":"Delete a custom collection owned by the signed-in user, including its saved versions and source configuration. Original stream posts and follows remain. Use del"},{"name":"reorder_collections","description":"Replace a stream deck’s collection display order. Include every existing collection ID in that deck exactly once."},{"name":"set_collection_column_width","description":"Set how wide a custom collection’s column appears in the signed-in user’s stream deck in the Synoptic app. Display only: sources, filters and posts are unchange"},{"name":"get_collection_posts","description":"Read up to 50 stored posts from a collection owned by the signed-in user, optionally filtered by matched crypto or prediction markets. Rechecks current stream a"},{"name":"list_ai_filters","description":"List the signed-in user’s saved AI filter definitions. Does not run or evaluate filters."},{"name":"get_ai_filter","description":"Read one saved AI filter definition owned by the signed-in user. Does not evaluate the filter."},{"name":"create_ai_filter","description":"Save a named AI filter prompt for the signed-in user without evaluating it. Attach the returned id through filters.ai in create_collection, or in update_collect"},{"name":"update_ai_filter","description":"Replace the name and prompt of an AI filter owned by the signed-in user. Future posts in collections using this filter use the updated prompt. This operation do"},{"name":"delete_ai_filter","description":"Delete an AI filter owned by the signed-in user and detach it from collections using it. Those collections stop applying that AI filter."},{"name":"list_terminal_tabs","description":"List the signed-in user’s terminal tabs in display order, with their saved layout configuration as JSON strings."},{"name":"create_terminal_tab","description":"Create a terminal tab for the signed-in user using a saved layout JSON object serialized as a string. Prefer copying an existing tab configuration from list_ter"},{"name":"update_terminal_tab","description":"Rename a terminal tab or replace its entire saved layout configuration. Omitted fields retain their previous values. Read list_terminal_tabs before replacing a "},{"name":"delete_terminal_tab","description":"Delete a terminal tab owned by the signed-in user and its saved layout. The platform prevents deleting the last tab. Use update_terminal_tab to change a layout "},{"name":"reorder_terminal_tabs","description":"Replace the signed-in user’s terminal tab display order. Include every existing tab ID exactly once."},{"name":"list_stream_packages","description":"Browse the catalog of stream packages (bundles of streams sold as one subscription) with available prices, most-subscribed first. Requires a linked account, unl"},{"name":"list_my_stream_packages","description":"List stream packages CREATED or SUBSCRIBED by the signed-in user, including available prices. Use list_stream_packages to browse all packages and get_stream_pac"},{"name":"get_stream_package","description":"Read a stream package, its available prices, and included stream cards the signed-in user may view. Non-owners see active included streams only. Does not return"},{"name":"list_stream_invites","description":"List pending stream invitations addressed to the signed-in account. Includes accessible stream cards and preserves pagination. Does not accept or dismiss invita"},{"name":"get_stream_subscription","description":"Read the signed-in user’s direct paid subscription status for a stream, including price and scheduled cancellation. A null subscription does not rule out access"},{"name":"get_stream_package_subscription","description":"Read the signed-in user’s paid subscription status for a stream package, including price and scheduled cancellation. Returns null when no subscription is found."},{"name":"request_stream","description":"Submit a stream request to Synoptic support on behalf of the signed-in user. Describe the source or website, desired content and use case. Returns a confirmed s"},{"name":"request_feature","description":"Submit a feature request to Synoptic support on behalf of the signed-in user. Describe the problem, proposed behavior and use case. Returns a confirmed support "}],"toolCount":70,"toolsHash":"d6dd5febf1b19d930da99102a6b0a77c4a5e9cc6c50b3d522069d52d81e9736f","serverName":"synoptic","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T09:25:08.715Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":92,"error":null,"detail":{"tools":[{"name":"get_stream_posts","description":"Read one page of stored posts from an accessible Synoptic stream, newest first. Requires authentication and permission to read its posts; custom-target restrict"},{"name":"streams_all","description":"List one page of active public streams in the Synoptic catalog without signing in. Returns stored stream metadata, optionally filtered by minimum follower count"},{"name":"search","description":"Search the Synoptic stream catalog by keyword. Matches stream names, labels, descriptions, categories, and IDs; does not search post text or accounts on other s"},{"name":"get_stream","description":"Inspect a discovered Synoptic feed by ID before reading, configuring monitoring targets, or planning an API integration. Returns its description, publication st"},{"name":"fetch","description":"Read a Synoptic stream card by ID: title, description, and stream URL for citation. Public cards need no sign-in; private cards require a linked account with ac"},{"name":"follow_stream","description":"Sign in to follow a Synoptic stream when the user asks to follow that stream. Updates followed streams and follower count; may accept and consume an existing in"},{"name":"get_me","description":"Read the signed-in Synoptic profile, email address, onboarding status, and terminal access request status."},{"name":"get_user","description":"Read a public Synoptic profile by exact username. Use get_user_by_id for an ID such as a stream’s authorId, or get_me for the signed-in account. Unknown usernam"},{"name":"get_user_by_id","description":"Read a public Synoptic profile by user ID. Use get_user for a username, or get_me for the signed-in account. Unknown IDs return User not found."},{"name":"get_highlighted_authors","description":"List up to 50 public profiles of authors Synoptic features (isHighlighted), for discovery when no particular author is named. Not paginated. Use get_user or get"},{"name":"update_profile","description":"Update the signed-in user’s public Synoptic profile: display name, biography, avatar, or background image. Changes are visible to other users. Omitted fields st"},{"name":"generate_username_suggestions","description":"Generate and save five available username choices for the signed-in user. These replace previous suggestions and can be used with set_username."},{"name":"set_username","description":"Set the signed-in user’s public Synoptic username to a saved suggestion or their verified X handle. Generate suggestions first when needed."},{"name":"remove_x_handle","description":"Remove the verified X handle from the signed-in user’s public Synoptic profile. Does not modify the X account."},{"name":"get_followers","description":"List followers of a Synoptic username, or the signed-in user when username is omitted. Continue with nextToken. Use get_following_users for the authors a user f"},{"name":"get_following_users","description":"List authors followed by a Synoptic username, or by the signed-in user when username is omitted. Continue with nextToken. Lists users only: use streams_followin"},{"name":"is_following_user","description":"Check whether the signed-in user follows a given author. Checks only the signed-in user; use get_following_users to list a user’s follows."},{"name":"follow_user","description":"Follow an author as the signed-in user. May notify the author, including by email or push according to their settings. Returns success=false when already follow"},{"name":"unfollow_user","description":"Stop following an author as the signed-in user. Returns success=false when no follow exists or the operation fails. Use unfollow_stream to unfollow a stream."},{"name":"get_notification_settings","description":"Read the signed-in user’s notification channel switches and per-event preferences. Shows the four groups update_notification_preferences replaces and the switch"},{"name":"update_notification_preferences","description":"Replace notification channel preferences for mentions, new followers, subscribed-author posts, and system events. Read current settings first; provide all four "},{"name":"set_notification_channel","description":"Turn the in-app or email channel on or off for the whole signed-in account, not per device. While a channel is off, none of the account’s notifications are deli"},{"name":"get_notifications","description":"Read the signed-in user’s paginated in-app notifications. Set read=false for unread notifications; omit read for both. Reading this list does not mark notificat"},{"name":"mark_notification_read","description":"Mark one of the signed-in user’s notifications as read. IDs that are not the signed-in user’s notifications are rejected. Use mark_all_notifications_read for al"},{"name":"mark_all_notifications_read","description":"Mark every unread in-app notification in the signed-in account as read. Use mark_notification_read for one notification."},{"name":"request_terminal_access","description":"Join the waitlist for early access to the Synoptic trading terminal (beta) for the signed-in account. Sets terminalAccessRequested, which get_me reports; repeat"},{"name":"streams_following","description":"List streams the signed-in account follows, with optional metadata filters and pagination. Use streams_created for streams you own, streams_all or search for th"},{"name":"streams_created","description":"List streams the signed-in account owns, including unpublished DRAFT streams, with optional filters and pagination. Use it to find IDs for create_stream_post, u"},{"name":"unfollow_stream","description":"Unfollow a stream for the signed-in account. Does not cancel a paid subscription or restore consumed invitations. Use unfollow_user for authors."},{"name":"search_stream_posts","description":"Search full post text within one accessible stream, newest first. Supports ISO date bounds; custom-target restrictions apply. Continue with nextOffset; this dif"},{"name":"get_post","description":"Read an existing stream post by ID. Public stream posts do not require following; private stream posts require individual-post access. Custom-target restriction"},{"name":"create_stream_post","description":"Add a text post to a stream owned by the signed-in user. A new post may notify followers; timestamps are assigned by the platform. Use publish_stream to take a "},{"name":"create_stream","description":"Create a free draft publishing stream owned by the signed-in user for their research, news, or other updates. Supply a plain-text description and add a first po"},{"name":"update_stream","description":"Update owned stream metadata. Omitted fields retain current values. A supplied description replaces its formatting with plain text. Does not change visibility, "},{"name":"publish_stream","description":"Publish an owned draft stream, setting its state to ACTIVE. May notify users; the returned state is authoritative. Publishing can’t be undone through MCP. Use c"},{"name":"delete_stream","description":"Delete an owned free stream. Unfollows and notifies its followers, removes it from collections, API key publish permissions and source routes, and cannot be und"},{"name":"get_stream_custom_targets","description":"Read configured custom-target values for an accessible stream, such as the selected accounts, channels, repositories, or tracking criteria supported by that fee"},{"name":"set_stream_custom_targets","description":"Replace the signed-in user’s selected targets on a Synoptic custom-target stream and return the saved list. Targets, such as accounts, channels, repositories, o"},{"name":"patch_stream_custom_targets","description":"Add or remove targets in the signed-in user’s selection on a Synoptic custom-target stream, keeping other targets, and return the resulting list. Targets, such "},{"name":"list_stream_decks","description":"List the signed-in user’s stream decks in their saved display order."},{"name":"create_stream_deck","description":"Create an empty stream deck, a dashboard of collection columns, for the signed-in user and return its ID. Add columns with create_collection. Each account suppo"},{"name":"update_stream_deck","description":"Rename an existing stream deck owned by the signed-in user; nothing else changes. Use reorder_stream_decks to move it or delete_stream_deck to remove it."},{"name":"delete_stream_deck","description":"Delete a stream deck owned by the signed-in user and every custom collection in that deck. The last remaining deck cannot be deleted. This does not delete the o"},{"name":"reorder_stream_decks","description":"Replace the signed-in user’s stream deck display order. Include every existing deck ID exactly once."},{"name":"list_collections","description":"List the signed-in user’s custom collections in a stream deck, in display order. Use get_collection for source streams and target selections."},{"name":"get_collection","description":"Read a custom collection owned by the signed-in user, including its keyword filters, AI filter ID, source streams, and selected custom targets. Returns the full"},{"name":"create_collection","description":"Create a collection in the signed-in user’s stream deck from existing Synoptic streams and return collection metadata. Automatically follows eligible selected s"},{"name":"update_collection","description":"Replace a custom collection’s name, source list, filters, and highlights. Read get_collection first and preserve desired settings: omitted filters, highlights a"},{"name":"delete_collection","description":"Delete a custom collection owned by the signed-in user, including its saved versions and source configuration. Original stream posts and follows remain. Use del"},{"name":"reorder_collections","description":"Replace a stream deck’s collection display order. Include every existing collection ID in that deck exactly once."},{"name":"set_collection_column_width","description":"Set how wide a custom collection’s column appears in the signed-in user’s stream deck in the Synoptic app. Display only: sources, filters and posts are unchange"},{"name":"get_collection_posts","description":"Read up to 50 stored posts from a collection owned by the signed-in user, optionally filtered by matched crypto or prediction markets. Rechecks current stream a"},{"name":"list_ai_filters","description":"List the signed-in user’s saved AI filter definitions. Does not run or evaluate filters."},{"name":"get_ai_filter","description":"Read one saved AI filter definition owned by the signed-in user. Does not evaluate the filter."},{"name":"create_ai_filter","description":"Save a named AI filter prompt for the signed-in user without evaluating it. Attach the returned id through filters.ai in create_collection, or in update_collect"},{"name":"update_ai_filter","description":"Replace the name and prompt of an AI filter owned by the signed-in user. Future posts in collections using this filter use the updated prompt. This operation do"},{"name":"delete_ai_filter","description":"Delete an AI filter owned by the signed-in user and detach it from collections using it. Those collections stop applying that AI filter."},{"name":"list_terminal_tabs","description":"List the signed-in user’s terminal tabs in display order, with their saved layout configuration as JSON strings."},{"name":"create_terminal_tab","description":"Create a terminal tab for the signed-in user using a saved layout JSON object serialized as a string. Prefer copying an existing tab configuration from list_ter"},{"name":"update_terminal_tab","description":"Rename a terminal tab or replace its entire saved layout configuration. Omitted fields retain their previous values. Read list_terminal_tabs before replacing a "},{"name":"delete_terminal_tab","description":"Delete a terminal tab owned by the signed-in user and its saved layout. The platform prevents deleting the last tab. Use update_terminal_tab to change a layout "},{"name":"reorder_terminal_tabs","description":"Replace the signed-in user’s terminal tab display order. Include every existing tab ID exactly once."},{"name":"list_stream_packages","description":"Browse the catalog of stream packages (bundles of streams sold as one subscription) with available prices, most-subscribed first. Requires a linked account, unl"},{"name":"list_my_stream_packages","description":"List stream packages CREATED or SUBSCRIBED by the signed-in user, including available prices. Use list_stream_packages to browse all packages and get_stream_pac"},{"name":"get_stream_package","description":"Read a stream package, its available prices, and included stream cards the signed-in user may view. Non-owners see active included streams only. Does not return"},{"name":"list_stream_invites","description":"List pending stream invitations addressed to the signed-in account. Includes accessible stream cards and preserves pagination. Does not accept or dismiss invita"},{"name":"get_stream_subscription","description":"Read the signed-in user’s direct paid subscription status for a stream, including price and scheduled cancellation. A null subscription does not rule out access"},{"name":"get_stream_package_subscription","description":"Read the signed-in user’s paid subscription status for a stream package, including price and scheduled cancellation. Returns null when no subscription is found."},{"name":"request_stream","description":"Submit a stream request to Synoptic support on behalf of the signed-in user. Describe the source or website, desired content and use case. Returns a confirmed s"},{"name":"request_feature","description":"Submit a feature request to Synoptic support on behalf of the signed-in user. Describe the problem, proposed behavior and use case. Returns a confirmed support "}],"toolCount":70,"toolsHash":"ae089f98286bf5acb5a2280fabfa61344a669c449a2a97745fa0448815bc75d8","serverName":"synoptic","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T02:32:42.188Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":93,"error":null,"detail":{"tools":[{"name":"get_stream_posts","description":"Read one page of stored posts from an accessible Synoptic stream, newest first. Requires authentication and permission to read its posts; custom-target restrict"},{"name":"streams_all","description":"List one page of active public streams in the Synoptic catalog without signing in. Returns stored stream metadata, optionally filtered by minimum follower count"},{"name":"search","description":"Search the Synoptic stream catalog by keyword. Matches stream names, labels, descriptions, categories, and IDs; does not search post text or accounts on other s"},{"name":"get_stream","description":"Inspect a discovered Synoptic feed by ID before reading, configuring monitoring targets, or planning an API integration. Returns its description, publication st"},{"name":"fetch","description":"Read a Synoptic stream card by ID: title, description, and stream URL for citation. Public cards need no sign-in; private cards require a linked account with ac"},{"name":"follow_stream","description":"Sign in to follow a Synoptic stream when the user asks to follow that stream. Updates followed streams and follower count; may accept and consume an existing in"},{"name":"get_me","description":"Read the signed-in Synoptic profile, email address, onboarding status, and terminal access request status."},{"name":"get_user","description":"Read a public Synoptic profile by exact username. Use get_user_by_id for an ID such as a stream’s authorId, or get_me for the signed-in account. Unknown usernam"},{"name":"get_user_by_id","description":"Read a public Synoptic profile by user ID. Use get_user for a username, or get_me for the signed-in account. Unknown IDs return User not found."},{"name":"get_highlighted_authors","description":"List up to 50 public profiles of authors Synoptic features (isHighlighted), for discovery when no particular author is named. Not paginated. Use get_user or get"},{"name":"update_profile","description":"Update the signed-in user’s public Synoptic profile: display name, biography, avatar, or background image. Changes are visible to other users. Omitted fields st"},{"name":"generate_username_suggestions","description":"Generate and save five available username choices for the signed-in user. These replace previous suggestions and can be used with set_username."},{"name":"set_username","description":"Set the signed-in user’s public Synoptic username to a saved suggestion or their verified X handle. Generate suggestions first when needed."},{"name":"remove_x_handle","description":"Remove the verified X handle from the signed-in user’s public Synoptic profile. Does not modify the X account."},{"name":"get_followers","description":"List followers of a Synoptic username, or the signed-in user when username is omitted. Continue with nextToken. Use get_following_users for the authors a user f"},{"name":"get_following_users","description":"List authors followed by a Synoptic username, or by the signed-in user when username is omitted. Continue with nextToken. Lists users only: use streams_followin"},{"name":"is_following_user","description":"Check whether the signed-in user follows a given author. Checks only the signed-in user; use get_following_users to list a user’s follows."},{"name":"follow_user","description":"Follow an author as the signed-in user. May notify the author, including by email or push according to their settings. Returns success=false when already follow"},{"name":"unfollow_user","description":"Stop following an author as the signed-in user. Returns success=false when no follow exists or the operation fails. Use unfollow_stream to unfollow a stream."},{"name":"get_notification_settings","description":"Read the signed-in user’s notification channel switches and per-event preferences. Shows the four groups update_notification_preferences replaces and the switch"},{"name":"update_notification_preferences","description":"Replace notification channel preferences for mentions, new followers, subscribed-author posts, and system events. Read current settings first; provide all four "},{"name":"set_notification_channel","description":"Turn the in-app or email channel on or off for the whole signed-in account, not per device. While a channel is off, none of the account’s notifications are deli"},{"name":"get_notifications","description":"Read the signed-in user’s paginated in-app notifications. Set read=false for unread notifications; omit read for both. Reading this list does not mark notificat"},{"name":"mark_notification_read","description":"Mark one of the signed-in user’s notifications as read. IDs that are not the signed-in user’s notifications are rejected. Use mark_all_notifications_read for al"},{"name":"mark_all_notifications_read","description":"Mark every unread in-app notification in the signed-in account as read. Use mark_notification_read for one notification."},{"name":"request_terminal_access","description":"Join the waitlist for early access to the Synoptic trading terminal (beta) for the signed-in account. Sets terminalAccessRequested, which get_me reports; repeat"},{"name":"streams_following","description":"List streams the signed-in account follows, with optional metadata filters and pagination. Use streams_created for streams you own, streams_all or search for th"},{"name":"streams_created","description":"List streams the signed-in account owns, including unpublished DRAFT streams, with optional filters and pagination. Use it to find IDs for create_stream_post, u"},{"name":"unfollow_stream","description":"Unfollow a stream for the signed-in account. Does not cancel a paid subscription or restore consumed invitations. Use unfollow_user for authors."},{"name":"search_stream_posts","description":"Search full post text within one accessible stream, newest first. Supports ISO date bounds; custom-target restrictions apply. Continue with nextOffset; this dif"},{"name":"get_post","description":"Read an existing stream post by ID. Public stream posts do not require following; private stream posts require individual-post access. Custom-target restriction"},{"name":"create_stream_post","description":"Add a text post to a stream owned by the signed-in user. A new post may notify followers; timestamps are assigned by the platform. Use publish_stream to take a "},{"name":"create_stream","description":"Create a free draft publishing stream owned by the signed-in user for their research, news, or other updates. Supply a plain-text description and add a first po"},{"name":"update_stream","description":"Update owned stream metadata. Omitted fields retain current values. A supplied description replaces its formatting with plain text. Does not change visibility, "},{"name":"publish_stream","description":"Publish an owned draft stream, setting its state to ACTIVE. May notify users; the returned state is authoritative. Publishing can’t be undone through MCP. Use c"},{"name":"delete_stream","description":"Delete an owned free stream. Unfollows and notifies its followers, removes it from collections, API key publish permissions and source routes, and cannot be und"},{"name":"get_stream_custom_targets","description":"Read configured custom-target values for an accessible stream, such as the selected accounts, channels, repositories, or tracking criteria supported by that fee"},{"name":"set_stream_custom_targets","description":"Replace the signed-in user’s selected targets on a Synoptic custom-target stream and return the saved list. Targets, such as accounts, channels, repositories, o"},{"name":"patch_stream_custom_targets","description":"Add or remove targets in the signed-in user’s selection on a Synoptic custom-target stream, keeping other targets, and return the resulting list. Targets, such "},{"name":"list_stream_decks","description":"List the signed-in user’s stream decks in their saved display order."},{"name":"create_stream_deck","description":"Create an empty stream deck, a dashboard of collection columns, for the signed-in user and return its ID. Add columns with create_collection. Each account suppo"},{"name":"update_stream_deck","description":"Rename an existing stream deck owned by the signed-in user; nothing else changes. Use reorder_stream_decks to move it or delete_stream_deck to remove it."},{"name":"delete_stream_deck","description":"Delete a stream deck owned by the signed-in user and every custom collection in that deck. The last remaining deck cannot be deleted. This does not delete the o"},{"name":"reorder_stream_decks","description":"Replace the signed-in user’s stream deck display order. Include every existing deck ID exactly once."},{"name":"list_collections","description":"List the signed-in user’s custom collections in a stream deck, in display order. Use get_collection for source streams and target selections."},{"name":"get_collection","description":"Read a custom collection owned by the signed-in user, including its keyword filters, AI filter ID, source streams, and selected custom targets. Returns the full"},{"name":"create_collection","description":"Create a collection in the signed-in user’s stream deck from existing Synoptic streams and return collection metadata. Automatically follows eligible selected s"},{"name":"update_collection","description":"Replace a custom collection’s name, source list, filters, and highlights. Read get_collection first and preserve desired settings: omitted filters, highlights a"},{"name":"delete_collection","description":"Delete a custom collection owned by the signed-in user, including its saved versions and source configuration. Original stream posts and follows remain. Use del"},{"name":"reorder_collections","description":"Replace a stream deck’s collection display order. Include every existing collection ID in that deck exactly once."},{"name":"set_collection_column_width","description":"Set how wide a custom collection’s column appears in the signed-in user’s stream deck in the Synoptic app. Display only: sources, filters and posts are unchange"},{"name":"get_collection_posts","description":"Read up to 50 stored posts from a collection owned by the signed-in user, optionally filtered by matched crypto or prediction markets. Rechecks current stream a"},{"name":"list_ai_filters","description":"List the signed-in user’s saved AI filter definitions. Does not run or evaluate filters."},{"name":"get_ai_filter","description":"Read one saved AI filter definition owned by the signed-in user. Does not evaluate the filter."},{"name":"create_ai_filter","description":"Save a named AI filter prompt for the signed-in user without evaluating it. Attach the returned id through filters.ai in create_collection, or in update_collect"},{"name":"update_ai_filter","description":"Replace the name and prompt of an AI filter owned by the signed-in user. Future posts in collections using this filter use the updated prompt. This operation do"},{"name":"delete_ai_filter","description":"Delete an AI filter owned by the signed-in user and detach it from collections using it. Those collections stop applying that AI filter."},{"name":"list_terminal_tabs","description":"List the signed-in user’s terminal tabs in display order, with their saved layout configuration as JSON strings."},{"name":"create_terminal_tab","description":"Create a terminal tab for the signed-in user using a saved layout JSON object serialized as a string. Prefer copying an existing tab configuration from list_ter"},{"name":"update_terminal_tab","description":"Rename a terminal tab or replace its entire saved layout configuration. Omitted fields retain their previous values. Read list_terminal_tabs before replacing a "},{"name":"delete_terminal_tab","description":"Delete a terminal tab owned by the signed-in user and its saved layout. The platform prevents deleting the last tab. Use update_terminal_tab to change a layout "},{"name":"reorder_terminal_tabs","description":"Replace the signed-in user’s terminal tab display order. Include every existing tab ID exactly once."},{"name":"list_stream_packages","description":"Browse the catalog of stream packages (bundles of streams sold as one subscription) with available prices, most-subscribed first. Requires a linked account, unl"},{"name":"list_my_stream_packages","description":"List stream packages CREATED or SUBSCRIBED by the signed-in user, including available prices. Use list_stream_packages to browse all packages and get_stream_pac"},{"name":"get_stream_package","description":"Read a stream package, its available prices, and included stream cards the signed-in user may view. Non-owners see active included streams only. Does not return"},{"name":"list_stream_invites","description":"List pending stream invitations addressed to the signed-in account. Includes accessible stream cards and preserves pagination. Does not accept or dismiss invita"},{"name":"get_stream_subscription","description":"Read the signed-in user’s direct paid subscription status for a stream, including price and scheduled cancellation. A null subscription does not rule out access"},{"name":"get_stream_package_subscription","description":"Read the signed-in user’s paid subscription status for a stream package, including price and scheduled cancellation. Returns null when no subscription is found."},{"name":"request_stream","description":"Submit a stream request to Synoptic support on behalf of the signed-in user. Describe the source or website, desired content and use case. Returns a confirmed s"},{"name":"request_feature","description":"Submit a feature request to Synoptic support on behalf of the signed-in user. Describe the problem, proposed behavior and use case. Returns a confirmed support "}],"toolCount":70,"toolsHash":"ae089f98286bf5acb5a2280fabfa61344a669c449a2a97745fa0448815bc75d8","serverName":"synoptic","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"get_stream_posts","description":"Read one page of stored posts from an accessible Synoptic stream, newest first. Requires authentication and permission to read its posts; custom-target restrict"},{"name":"streams_all","description":"List one page of active public streams in the Synoptic catalog without signing in. Returns stored stream metadata, optionally filtered by minimum follower count"},{"name":"search","description":"Search the Synoptic stream catalog by keyword. Matches stream names, labels, descriptions, categories, and IDs; does not search post text or accounts on other s"},{"name":"get_stream","description":"Inspect a discovered Synoptic feed by ID before reading, configuring monitoring targets, or planning an API integration. Returns its description, publication st"},{"name":"fetch","description":"Read a Synoptic stream card by ID: title, description, and stream URL for citation. Public cards need no sign-in; private cards require a linked account with ac"},{"name":"follow_stream","description":"Sign in to follow a Synoptic stream when the user asks to follow that stream. Updates followed streams and follower count; may accept and consume an existing in"},{"name":"get_me","description":"Read the signed-in Synoptic profile, email address, onboarding status, and terminal access request status."},{"name":"get_user","description":"Read a public Synoptic profile by exact username. Use get_user_by_id for an ID such as a stream’s authorId, or get_me for the signed-in account. Unknown usernam"},{"name":"get_user_by_id","description":"Read a public Synoptic profile by user ID. Use get_user for a username, or get_me for the signed-in account. Unknown IDs return User not found."},{"name":"get_highlighted_authors","description":"List up to 50 public profiles of authors Synoptic features (isHighlighted), for discovery when no particular author is named. Not paginated. Use get_user or get"},{"name":"update_profile","description":"Update the signed-in user’s public Synoptic profile: display name, biography, avatar, or background image. Changes are visible to other users. Omitted fields st"},{"name":"generate_username_suggestions","description":"Generate and save five available username choices for the signed-in user. These replace previous suggestions and can be used with set_username."},{"name":"set_username","description":"Set the signed-in user’s public Synoptic username to a saved suggestion or their verified X handle. Generate suggestions first when needed."},{"name":"remove_x_handle","description":"Remove the verified X handle from the signed-in user’s public Synoptic profile. Does not modify the X account."},{"name":"get_followers","description":"List followers of a Synoptic username, or the signed-in user when username is omitted. Continue with nextToken. Use get_following_users for the authors a user f"},{"name":"get_following_users","description":"List authors followed by a Synoptic username, or by the signed-in user when username is omitted. Continue with nextToken. Lists users only: use streams_followin"},{"name":"is_following_user","description":"Check whether the signed-in user follows a given author. Checks only the signed-in user; use get_following_users to list a user’s follows."},{"name":"follow_user","description":"Follow an author as the signed-in user. May notify the author, including by email or push according to their settings. Returns success=false when already follow"},{"name":"unfollow_user","description":"Stop following an author as the signed-in user. Returns success=false when no follow exists or the operation fails. Use unfollow_stream to unfollow a stream."},{"name":"get_notification_settings","description":"Read the signed-in user’s notification channel switches and per-event preferences. Shows the four groups update_notification_preferences replaces and the switch"},{"name":"update_notification_preferences","description":"Replace notification channel preferences for mentions, new followers, subscribed-author posts, and system events. Read current settings first; provide all four "},{"name":"set_notification_channel","description":"Turn the in-app or email channel on or off for the whole signed-in account, not per device. While a channel is off, none of the account’s notifications are deli"},{"name":"get_notifications","description":"Read the signed-in user’s paginated in-app notifications. Set read=false for unread notifications; omit read for both. Reading this list does not mark notificat"},{"name":"mark_notification_read","description":"Mark one of the signed-in user’s notifications as read. IDs that are not the signed-in user’s notifications are rejected. Use mark_all_notifications_read for al"},{"name":"mark_all_notifications_read","description":"Mark every unread in-app notification in the signed-in account as read. Use mark_notification_read for one notification."},{"name":"request_terminal_access","description":"Join the waitlist for early access to the Synoptic trading terminal (beta) for the signed-in account. Sets terminalAccessRequested, which get_me reports; repeat"},{"name":"streams_following","description":"List streams the signed-in account follows, with optional metadata filters and pagination. Use streams_created for streams you own, streams_all or search for th"},{"name":"streams_created","description":"List streams the signed-in account owns, including unpublished DRAFT streams, with optional filters and pagination. Use it to find IDs for create_stream_post, u"},{"name":"unfollow_stream","description":"Unfollow a stream for the signed-in account. Does not cancel a paid subscription or restore consumed invitations. Use unfollow_user for authors."},{"name":"search_stream_posts","description":"Search full post text within one accessible stream, newest first. Supports ISO date bounds; custom-target restrictions apply. Continue with nextOffset; this dif"},{"name":"get_post","description":"Read an existing stream post by ID. Public stream posts do not require following; private stream posts require individual-post access. Custom-target restriction"},{"name":"create_stream_post","description":"Add a text post to a stream owned by the signed-in user. A new post may notify followers; timestamps are assigned by the platform. Use publish_stream to take a "},{"name":"create_stream","description":"Create a free draft publishing stream owned by the signed-in user for their research, news, or other updates. Supply a plain-text description and add a first po"},{"name":"update_stream","description":"Update owned stream metadata. Omitted fields retain current values. A supplied description replaces its formatting with plain text. Does not change visibility, "},{"name":"publish_stream","description":"Publish an owned draft stream, setting its state to ACTIVE. May notify users; the returned state is authoritative. Publishing can’t be undone through MCP. Use c"},{"name":"delete_stream","description":"Delete an owned free stream. Unfollows and notifies its followers, removes it from collections, API key publish permissions and source routes, and cannot be und"},{"name":"get_stream_custom_targets","description":"Read configured custom-target values for an accessible stream, such as the selected accounts, channels, repositories, or tracking criteria supported by that fee"},{"name":"set_stream_custom_targets","description":"Replace the signed-in user’s selected targets on a Synoptic custom-target stream and return the saved list. Targets, such as accounts, channels, repositories, o"},{"name":"patch_stream_custom_targets","description":"Add or remove targets in the signed-in user’s selection on a Synoptic custom-target stream, keeping other targets, and return the resulting list. Targets, such "},{"name":"list_stream_decks","description":"List the signed-in user’s stream decks in their saved display order."},{"name":"create_stream_deck","description":"Create an empty stream deck, a dashboard of collection columns, for the signed-in user and return its ID. Add columns with create_collection. Each account suppo"},{"name":"update_stream_deck","description":"Rename an existing stream deck owned by the signed-in user; nothing else changes. Use reorder_stream_decks to move it or delete_stream_deck to remove it."},{"name":"delete_stream_deck","description":"Delete a stream deck owned by the signed-in user and every custom collection in that deck. The last remaining deck cannot be deleted. This does not delete the o"},{"name":"reorder_stream_decks","description":"Replace the signed-in user’s stream deck display order. Include every existing deck ID exactly once."},{"name":"list_collections","description":"List the signed-in user’s custom collections in a stream deck, in display order. Use get_collection for source streams and target selections."},{"name":"get_collection","description":"Read a custom collection owned by the signed-in user, including its keyword filters, AI filter ID, source streams, and selected custom targets. Returns the full"},{"name":"create_collection","description":"Create a collection in the signed-in user’s stream deck from existing Synoptic streams and return collection metadata. Automatically follows eligible selected s"},{"name":"update_collection","description":"Replace a custom collection’s name, source list, filters, and highlights. Read get_collection first and preserve desired settings: omitted filters, highlights a"},{"name":"delete_collection","description":"Delete a custom collection owned by the signed-in user, including its saved versions and source configuration. Original stream posts and follows remain. Use del"},{"name":"reorder_collections","description":"Replace a stream deck’s collection display order. Include every existing collection ID in that deck exactly once."},{"name":"set_collection_column_width","description":"Set how wide a custom collection’s column appears in the signed-in user’s stream deck in the Synoptic app. Display only: sources, filters and posts are unchange"},{"name":"get_collection_posts","description":"Read up to 50 stored posts from a collection owned by the signed-in user, optionally filtered by matched crypto or prediction markets. Rechecks current stream a"},{"name":"list_ai_filters","description":"List the signed-in user’s saved AI filter definitions. Does not run or evaluate filters."},{"name":"get_ai_filter","description":"Read one saved AI filter definition owned by the signed-in user. Does not evaluate the filter."},{"name":"create_ai_filter","description":"Save a named AI filter prompt for the signed-in user without evaluating it. Attach the returned id through filters.ai in create_collection, or in update_collect"},{"name":"update_ai_filter","description":"Replace the name and prompt of an AI filter owned by the signed-in user. Future posts in collections using this filter use the updated prompt. This operation do"},{"name":"delete_ai_filter","description":"Delete an AI filter owned by the signed-in user and detach it from collections using it. Those collections stop applying that AI filter."},{"name":"list_terminal_tabs","description":"List the signed-in user’s terminal tabs in display order, with their saved layout configuration as JSON strings."},{"name":"create_terminal_tab","description":"Create a terminal tab for the signed-in user using a saved layout JSON object serialized as a string. Prefer copying an existing tab configuration from list_ter"},{"name":"update_terminal_tab","description":"Rename a terminal tab or replace its entire saved layout configuration. Omitted fields retain their previous values. Read list_terminal_tabs before replacing a "},{"name":"delete_terminal_tab","description":"Delete a terminal tab owned by the signed-in user and its saved layout. The platform prevents deleting the last tab. Use update_terminal_tab to change a layout "},{"name":"reorder_terminal_tabs","description":"Replace the signed-in user’s terminal tab display order. Include every existing tab ID exactly once."},{"name":"list_stream_packages","description":"Browse the catalog of stream packages (bundles of streams sold as one subscription) with available prices, most-subscribed first. Requires a linked account, unl"},{"name":"list_my_stream_packages","description":"List stream packages CREATED or SUBSCRIBED by the signed-in user, including available prices. Use list_stream_packages to browse all packages and get_stream_pac"},{"name":"get_stream_package","description":"Read a stream package, its available prices, and included stream cards the signed-in user may view. Non-owners see active included streams only. Does not return"},{"name":"list_stream_invites","description":"List pending stream invitations addressed to the signed-in account. Includes accessible stream cards and preserves pagination. Does not accept or dismiss invita"},{"name":"get_stream_subscription","description":"Read the signed-in user’s direct paid subscription status for a stream, including price and scheduled cancellation. A null subscription does not rule out access"},{"name":"get_stream_package_subscription","description":"Read the signed-in user’s paid subscription status for a stream package, including price and scheduled cancellation. Returns null when no subscription is found."},{"name":"request_stream","description":"Submit a stream request to Synoptic support on behalf of the signed-in user. Describe the source or website, desired content and use case. Returns a confirmed s"},{"name":"request_feature","description":"Submit a feature request to Synoptic support on behalf of the signed-in user. Describe the problem, proposed behavior and use case. Returns a confirmed support "}],"package":null,"toolSurface":{"id":"ts_jmmt7yfwkg3p","endpointId":"ep_bczdmghwagzw","hash":"0b34128b19ac2c8eca25e9fb5abce69eec4d00cffa70fcf8200c7194244b15d5","toolCount":70,"serverName":"synoptic","serverVersion":"1.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-20T23:24:57.617Z","lastSeenAt":"2026-10-22T21:30:27.631Z","observations":7,"toolNames":["get_stream_posts","streams_all","search","get_stream","fetch","follow_stream","get_me","get_user","get_user_by_id","get_highlighted_authors","update_profile","generate_username_suggestions","set_username","remove_x_handle","get_followers","get_following_users","is_following_user","follow_user","unfollow_user","get_notification_settings","update_notification_preferences","set_notification_channel","get_notifications","mark_notification_read","mark_all_notifications_read","request_terminal_access","streams_following","streams_created","unfollow_stream","search_stream_posts","get_post","create_stream_post","create_stream","update_stream","publish_stream","delete_stream","get_stream_custom_targets","set_stream_custom_targets","patch_stream_custom_targets","list_stream_decks","create_stream_deck","update_stream_deck","delete_stream_deck","reorder_stream_decks","list_collections","get_collection","create_collection","update_collection","delete_collection","reorder_collections","set_collection_column_width","get_collection_posts","list_ai_filters","get_ai_filter","create_ai_filter","update_ai_filter","delete_ai_filter","list_terminal_tabs","create_terminal_tab","update_terminal_tab","delete_terminal_tab","reorder_terminal_tabs","list_stream_packages","list_my_stream_packages","get_stream_package","list_stream_invites","get_stream_subscription","get_stream_package_subscription","request_stream","request_feature"],"distinctSurfaces":4},"endpointFacts":[{"id":"ep_bczdmghwagzw","url":"https://mcp.api.synoptic.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-22T00:30:21.726Z","auth":{"observedAt":"2026-10-22T00:30:21.915Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://mcp.api.synoptic.com/.well-known/oauth-protected-resource/mcp","resource":"https://mcp.api.synoptic.com/mcp","authorizationServers":["https://mcp.api.synoptic.com"],"scopesSupported":["https://mcp.api.synoptic.com/mcp/streams.read","https://mcp.api.synoptic.com/mcp/streams.write","https://mcp.api.synoptic.com/mcp/posts.read","https://mcp.api.synoptic.com/mcp/posts.write","https://mcp.api.synoptic.com/mcp/authors.read","https://mcp.api.synoptic.com/mcp/following.read","https://mcp.api.synoptic.com/mcp/following.write","https://mcp.api.synoptic.com/mcp/workspace.read","https://mcp.api.synoptic.com/mcp/workspace.write","https://mcp.api.synoptic.com/mcp/profile.read","https://mcp.api.synoptic.com/mcp/profile.write","https://mcp.api.synoptic.com/mcp/notifications.read","https://mcp.api.synoptic.com/mcp/notifications.write","https://mcp.api.synoptic.com/mcp/subscriptions.read","https://mcp.api.synoptic.com/mcp/requests.write"]},"authorizationServer":{"url":"https://mcp.api.synoptic.com/.well-known/oauth-authorization-server","issuer":"https://mcp.api.synoptic.com","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":true},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":true,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-22T00:30:23.385Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"api.synoptic.com","issuer":{"commonName":"Amazon RSA 2048 M04","organization":"Amazon"},"validFrom":"2026-09-14T00:00:00.000Z","validTo":"2027-03-30T23:59:59.000Z","daysToExpiry":158,"sanCount":2,"fingerprint256":"BB:8D:3C:6B:F0:CE:3B:72:8D:32:5B:A3:E1:4D:4D:1D:78:B1:20:7D:F7:4D:E4:53:1B:8B:B1:AE:F5:15:E0:77"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.synoptic/synoptic","url":"https://registry.modelcontextprotocol.io/v0/servers/com.synoptic%2Fsynoptic","firstSeenAt":"2026-10-18T12:19:06.005Z","fetchedAt":"2026-10-22T02:22:42.708Z","normalizedAt":"2026-10-22T02:22:42.708Z"}]},"firstSeenAt":"2026-10-18T12:19:06.005Z","updatedAt":"2026-10-22T21:34:53.219Z"}