begin_widget_refresh
ChatGPTBegin one user-confirmed manual refresh before format research or paid provider work. Pass widgetId and the app's stable requestId. Any owned widget can be refreshed here, including widgets created or refreshed by Marble or another agent. Returns the current saved definition, canonical schema and one durable workshop. If already succeeded, stop. Retrieve data using authorized tools available in this conversation; saved Marble connection IDs do not require duplicating those source connections here or constrain which authorized tool retrieves the same data. If the required source is unavailable, explain the missing access and discard the draft rather than submitting invented or empty replacement data. Submit then save the same widget; only successful save completes refresh. Never replace its definition. On provider failure discard the draft and preserve the last good result. Actual host approval remains required.
cancel_data_operation
ChatGPTRequest cancellation of an existing data operation. Already dispatched work may incur cost.
create_board
ChatGPTCreate a new Marble parent board with one empty tab, initially named Untitled board. Generate containerId and initialTabId UUIDs once and reuse them on uncertain retries. Use rename_board to set the requested name. Does not create widgets or run providers.
dashboard_ui_mutate
ChatGPTdashboard_ui_read
ChatGPTdelete_board
ChatGPTDelete a Marble parent board and all its tabs and widgets, cancelling their active runs through the normal dashboard cleanup. This cannot restore the deleted board. First identify the board by name, explain the contents will be removed, and obtain explicit user confirmation. Read list_boards for the containerId and current version. The last remaining board cannot be deleted; stale versions fail. Does not delete the account.
discard_widget_draft
ChatGPTClose a draft while retaining the previously saved widget.
eventbrite_events
ChatGPTFind Eventbrite events by keyword, city, exact start and end date, category, format, price, or direct event URL. For requests such as this weekend or next weekend, calculate the requested calendar dates and pass both startDate and endDate in YYYY-MM-DD form. Separate distinct topics so keyword matching stays useful. Do not repeat a successful search with near-duplicate keywords solely to improve the result set. The Actor may finish the current results page and return slightly more than requested. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
facebook_events
ChatGPTFind public Facebook events with keyword searches, Facebook city URLs, organizer page URLs, or direct event URLs. Use exactly one of searchQueries, cityUrls, pageUrls, or eventUrls in each call. Use separate focused calls when the request needs different modes. For requests such as next weekend, calculate the requested calendar dates and pass startDate and endDate to the provider. Returned startAt and endAt values are UTC timestamps; interpret them in the relevant timezone when selecting and presenting events. Use no more than two calls in one widget run. Do not repeat a successful search with near-duplicate keywords solely to improve the result set. When the user does not request a result count, use maxItems 25. Use detailLevel full when descriptions, coordinates, hosts, response counts, and ticket links matter. Use list for a faster scan when names, dates, venues, and images are sufficient. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
get_active_widget
ChatGPTRead one explicit draft, its revision, preview, connections and result schema. Drafts are never globally active.
get_board
ChatGPTRead the current saved widgets in a Marble tab.
get_current_board
ChatGPTRead the board and tab last displayed in this Marble account, shared across sidebar dashboards and chats. Use this as the destination when the user says this board or does not name a board. Assumes one open board; last viewed wins. Returns currentBoard: null if none has been selected or it was deleted. Does not change selection.
get_data_operation
ChatGPTPoll the existing operation or read a page of its saved results. This never starts another provider run.
get_profile
ChatGPTIdentify your connected Marble account.
get_widget
ChatGPTRead a saved widget and its current data and record version.
get_widget_formats
ChatGPTGet canonical widget formats, or the full accepted result schema and guidance for one format. Always read the schema before submitting data.
google_maps_scraper
ChatGPTFind businesses, ratings, addresses, and contact details from Google Maps. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
instagram_hashtag_posts
ChatGPTRead the posts or Reels feed for exact Instagram hashtags. There is no date filter; inspect timestamps. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
instagram_hashtag_stats
ChatGPTGet popularity statistics and related tags for exact Instagram hashtags, with optional latest or top post samples. maxItems counts hashtags, not samples. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
instagram_keyword_posts
ChatGPTFind Instagram posts or Reels that match keyword phrases. There is no date filter and results are not guaranteed to be recent; inspect timestamps. For events, publication time is not the event date; read captions for dates and places. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
instagram_profile_content
ChatGPTRead Instagram profile details, posts, comments, mentions or stories, or the posts at specific Instagram URLs, places or hashtag pages. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
instagram_reels
ChatGPTRead Reels from known Instagram profiles or Reel URLs, with optional transcripts, video download links and share counts. Paid extras are off unless requested. Transcripts cover spoken audio only. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
instagram_search
ChatGPTFind Instagram hashtags, accounts or places matching a query, or popular Reels for a topic. Popular feeds may not exist for specific phrases. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
linkedin_company_employees
ChatGPTList employees of known LinkedIn companies, optionally filtered by title, location, seniority and other LinkedIn filters. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
linkedin_profile_details
ChatGPTRead full public details for known LinkedIn profiles. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
linkedin_profile_posts
ChatGPTRead recent posts from known LinkedIn profiles or company pages. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
linkedin_search_companies
ChatGPTFind LinkedIn company pages by keyword, location, industry and size. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
linkedin_search_people
ChatGPTFind LinkedIn profiles by keyword, title, location, company, school, seniority and other LinkedIn filters. For owners or founders, use currentJobTitles with seniorityLevelIds ["320"]. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
linkedin_search_posts
ChatGPTSearch public LinkedIn posts by keyword. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
list_boards
ChatGPTList your Marble boards and tabs.
list_connections
ChatGPTRead the data sources this account can use in widgets: Marble's built-in public data sources, which need no user account, and web search. Each built-in lists the tools that collect its data.
open_chat_dashboard
ChatGPTOpen your Marble boards in this conversation. Do not call during a widget build: its existing inline widget can expand to the full dashboard.
open_dashboard
ChatGPTOpen your Marble boards and widgets. Use ChatGPT to create or edit widgets in the same account.
open_widget_draft
ChatGPTCreate a widget draft in a tab, or edit an existing widget at its current record version. No model or provider work occurs. Give an idempotency key for retries. Name the data sources in sources: [{name, domain?}]. Marble uses name as the source label and domain to look up the source logo shown on sample previews and saved widgets. Choose the named source's public website domain so the logo represents its content. If the domain is unknown or no logo is available, Marble shows a generic source icon; omit unknown domains rather than guessing. Name the platform, publication or service whose content or account data the widget displays, and use its matching public website domain, not an MCP endpoint or a URL. For Instagram posts use name Instagram and domain instagram.com; for Reddit posts use name Reddit and domain reddit.com. When a provider such as Apify or Composio retrieves that content, keep the provider/tool requirements in the widget instructions and label the content platform. Use a provider as the display source only when its own data is the subject, such as Apify run usage. Omit domain when unknown. These fields only label the widget; they do not connect accounts or restrict tools. Use any available authorized ChatGPT app or Marble data tool. Keep required account/workspace identifiers in the widget instructions. connectionIds is optional legacy Marble connection selection; omit it for new ChatGPT widgets. No list_connections call is required.
pinterest_scraper
ChatGPTSearch Pinterest pins, boards, profiles, and videos for visual content research. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
reddit_front_page_posts
ChatGPTRead posts from Reddit's front page (r/all). Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
reddit_search_posts
ChatGPTSearch Reddit posts, optionally within one subreddit. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
reddit_subreddit_posts
ChatGPTRead posts from a subreddit. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
reddit_user_posts
ChatGPTRead posts by a Reddit user. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
rename_board
ChatGPTRename a Marble parent board, preserving its picture, tabs, widgets. Read list_boards for the parent containerId and current version; do not pass a tab ID. A stale version returns a conflict.
replace_active_widget
ChatGPTReplace the complete draft at its current revision. A changed draft needs a new submitted preview before saving. Name the data sources in sources: [{name, domain?}]. Marble uses name as the source label and domain to look up the source logo shown on sample previews and saved widgets. Choose the named source's public website domain so the logo represents its content. If the domain is unknown or no logo is available, Marble shows a generic source icon; omit unknown domains rather than guessing. Name the platform, publication or service whose content or account data the widget displays, and use its matching public website domain, not an MCP endpoint or a URL. For Instagram posts use name Instagram and domain instagram.com; for Reddit posts use name Reddit and domain reddit.com. When a provider such as Apify or Composio retrieves that content, keep the provider/tool requirements in the widget instructions and label the content platform. Use a provider as the display source only when its own data is the subject, such as Apify run usage. Omit domain when unknown. These fields only label the widget; they do not connect accounts or restrict tools. Use any available authorized ChatGPT app or Marble data tool. Keep required account/workspace identifiers in the widget instructions. connectionIds is optional legacy Marble connection selection; omit it for new ChatGPT widgets. No list_connections call is required.
save_widget
ChatGPTSave the accepted preview into the same dashboard used on the Marble website. For a new widget, supply null saved version and an explicit free position after reading the board; omitting position returns POSITION_REQUIRED. Existing edits retain their position unless supplied. Retrying the same key does not create a duplicate.
search_mentions
ChatGPTshow_widget_recommendations
ChatGPTShow four fictional sample widget ideas inline in a compact carousel. Read get_widget_formats for recommendationSchema first. Name the source using source.kind=external, name, and optional website domain; no connection lookup is needed. Use ChatGPT context to personalize them, without website research or live provider queries. Does not create or save widgets, connect apps. The user chooses which idea to build.
submit_widget_answer
ChatGPTReturn your final answer to the widget that asked a question. Use the exact question ID, widget ID, result version and question supplied by the app. Read get_widget first and answer about that saved result and selected items. Submit even when the answer is a limitation or clarification. This stores only the answer; it does not edit or refresh the widget or invoke a Marble model. Retry identical arguments after uncertainty; never overwrite an existing answer.
submit_widget_result
ChatGPTSubmit data matching the draft's canonical result schema and a brief summary. You, ChatGPT, supply the data; Marble does not invoke a model. Returns a preview ID without saving.
tiktok_scraper
ChatGPTExtract TikTok posts from hashtags, profiles, search queries, or direct post URLs. maxItems is the total number of posts to scrape across every hashtag, profile, search query, and post URL in one call. Marble divides the requested count across the input sources. Runs stop after 180 seconds and output is bounded by byte size. For broader research, run multiple focused calls instead of putting unrelated sources into one large scrape. Subtitle and transcript fetching is not exposed right now; use the returned post description, metrics, author, hashtags, and comment dataset link instead. Set commentsPerPost only when comments are needed; it defaults to 0 and accepts 0-250 comments per result. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.
view_widget
ChatGPTCapture the actual shared Marble renderer for an owned saved widget. Returns a PNG image for visual inspection plus exact saved versions and view state. Without explicit viewState this is the canonical saved view, not an unspecified live browser viewport. Does not refresh data, run a model or invoke providers.
website_content_crawler
ChatGPTRead website pages and pull back clean text and markdown for research or content review. Use one crawl per site or section when possible: start from the site root or nearest shared parent URL, set maxDepth high enough to follow relevant links, and set maxItems high enough for the pages you need. Avoid duplicate same-site crawls such as crawling /about and /pricing separately when one crawl from the root or shared parent would discover both. Starts a billed Marble data request for an open widget draft; poll get_data_operation for results.