---
name: workspace-commands
description: The shell commands, task tools, and python3 interpreter available in this workspace.
---
# Available commands
Standard Unix commands, among them:
cat head tail ls find grep wc sort uniq cut tr sed awk
diff tee xargs jq unzip curl
with pipes, `>` redirection, `$(...)` substitution and `$'...'`.
The task CLIs below are registered with this shell rather than installed
as files; do not inspect them with `which`, `file` or `/usr/bin`.
## Google Drive and spreadsheet reads
Use `ls` and `find` under `/gd` to list folders and locate spreadsheets.
Read `.gsheet.json` files with `cat`, `jq`, or Python to inspect spreadsheet
IDs, tab names, cell values, formulas, and metadata. Filter or
slice the JSON for ranges, summaries, and matching cells; read multiple
files for queries across spreadsheets. See VFS.md for the JSON structure.
## google-sheet
Use `google-sheet <command> '<JSON arguments>'`. Run
`google-sheet <command> --help` to get more information.
| Command | Arguments | Description |
|---|---|---|
| `google-sheet get-sheet-data` | `{spreadsheet_id: str, sheet: str, range?: str = null, include_grid_data?: bool = false}` | Get data from a specific sheet in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet range: Optional cell range in A1 notation (e.g., 'A1:C10'). If not provided, gets all data. include_grid_data: If True, includes cell formatting and other metadata in the response. Note: Setting this to True will significantly increase the response size and token usage when parsing the response, as it includes detailed cell formatting information. Default is False (returns values only, more efficient). Returns: Grid data structure with either full metadata or just values from Google Sheets API, depending on include_grid_data parameter |
| `google-sheet get-sheet-formulas` | `{spreadsheet_id: str, sheet: str, range?: str = null}` | Get formulas from a specific sheet in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet range: Optional cell range in A1 notation (e.g., 'A1:C10'). If not provided, gets all formulas from the sheet. Returns: A 2D array of the sheet formulas. |
| `google-sheet update-cells` | `{spreadsheet_id: str, sheet: str, range: str, data: list[list]}` | Update cells in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet range: Cell range in A1 notation (e.g., 'A1:C10') data: 2D array of values to update Returns: Result of the update operation |
| `google-sheet batch-update-cells` | `{spreadsheet_id: str, sheet: str, ranges: dict}` | Batch update multiple ranges in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet ranges: Dictionary mapping range strings to 2D arrays of values e.g., {'A1:B2': [[1, 2], [3, 4]], 'D1:E2': [['a', 'b'], ['c', 'd']]} Returns: Result of the batch update operation |
| `google-sheet add-rows` | `{spreadsheet_id: str, sheet: str, count: int, start_row?: int = null}` | Add rows to a sheet in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet count: Number of rows to add start_row: 0-based row index to start adding. If not provided, adds at the beginning. Returns: Result of the operation |
| `google-sheet add-columns` | `{spreadsheet_id: str, sheet: str, count: int, start_column?: int = null}` | Add columns to a sheet in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet count: Number of columns to add start_column: 0-based column index to start adding. If not provided, adds at the beginning. Returns: Result of the operation |
| `google-sheet list-sheets` | `{spreadsheet_id: str}` | List all sheets in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) Returns: List of sheet names |
| `google-sheet copy-sheet` | `{src_spreadsheet: str, src_sheet: str, dst_spreadsheet: str, dst_sheet: str}` | Copy a sheet from one spreadsheet to another. Args: src_spreadsheet: Source spreadsheet ID src_sheet: Source sheet name dst_spreadsheet: Destination spreadsheet ID dst_sheet: Destination sheet name Returns: Result of the operation |
| `google-sheet rename-sheet` | `{spreadsheet: str, sheet: str, new_name: str}` | Rename a sheet in a Google Spreadsheet. Args: spreadsheet: Spreadsheet ID sheet: Current sheet name new_name: New sheet name Returns: Result of the operation |
| `google-sheet get-multiple-sheet-data` | `{queries: list[dict]}` | Get data from multiple specific ranges in Google Spreadsheets. Args: queries: A list of dictionaries, each specifying a query. Each dictionary should have 'spreadsheet_id', 'sheet', and 'range' keys. Example: [{'spreadsheet_id': 'abc', 'sheet': 'Sheet1', 'range': 'A1:B5'}, {'spreadsheet_id': 'xyz', 'sheet': 'Data', 'range': 'C1:C10'}] Returns: A list of dictionaries, each containing the original query parameters and the fetched 'data' or an 'error'. |
| `google-sheet get-multiple-spreadsheet-summary` | `{spreadsheet_ids: list[str], rows_to_fetch?: int = 5}` | Get a summary of multiple Google Spreadsheets, including sheet names, headers, and the first few rows of data for each sheet. Args: spreadsheet_ids: A list of spreadsheet IDs to summarize. rows_to_fetch: The number of rows (including header) to fetch for the summary (default: 5). Returns: A list of dictionaries, each representing a spreadsheet summary. Includes spreadsheet title, sheet summaries (title, headers, first rows), or an error. |
| `google-sheet create-spreadsheet` | `{title: str, folder_id?: str = null}` | Create a new Google Spreadsheet. Args: title: The title of the new spreadsheet folder_id: Optional Google Drive folder ID where the spreadsheet should be created. If not provided, uses the configured default folder or creates in root. Returns: Information about the newly created spreadsheet including its ID |
| `google-sheet create-sheet` | `{spreadsheet_id: str, title: str}` | Create a new sheet tab in an existing Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet title: The title for the new sheet Returns: Information about the newly created sheet |
| `google-sheet list-spreadsheets` | `{folder_id?: str = null}` | List all spreadsheets in the specified Google Drive folder. If no folder is specified, uses the configured default folder or lists from 'My Drive'. Args: folder_id: Optional Google Drive folder ID to search in. If not provided, uses the configured default folder or searches 'My Drive'. Returns: List of spreadsheets with their ID and title |
| `google-sheet share-spreadsheet` | `{spreadsheet_id: str, recipients: list[dict], send_notification?: bool = true}` | Share a Google Spreadsheet with multiple users via email, assigning specific roles. Args: spreadsheet_id: The ID of the spreadsheet to share. recipients: A list of dictionaries, each containing 'email_address' and 'role'. The role should be one of: 'reader', 'commenter', 'writer'. Example: [ {'email_address': 'user1@example.com', 'role': 'writer'}, {'email_address': 'user2@example.com', 'role': 'reader'} ] send_notification: Whether to send a notification email to the users. Defaults to True. Returns: A dictionary containing lists of 'successes' and 'failures'. Each item in the lists includes the email address and the outcome. |
| `google-sheet list-folders` | `{parent_folder_id?: str = null}` | List all folders in the specified Google Drive folder. If no parent folder is specified, lists folders from 'My Drive' root. Args: parent_folder_id: Optional Google Drive folder ID to search within. If not provided, searches the root of 'My Drive'. Returns: List of folders with their ID, name, and parent information |
| `google-sheet search-spreadsheets` | `{query: str, max_results?: int = 20}` | Search for spreadsheets in Google Drive by name or content. Args: query: Search query string. Searches in file name and content. Examples: "budget 2024", "sales report", "project tracker" max_results: Maximum number of results to return (default 20, max 100) Returns: List of matching spreadsheets with their ID, name, and metadata |
| `google-sheet find-in-spreadsheet` | `{spreadsheet_id: str, query: str, sheet?: str = null, case_sensitive?: bool = false, max_results?: int = 50}` | Find cells containing a specific value in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) query: The text to search for in cell values sheet: Optional sheet name to search in. If not provided, searches all sheets. case_sensitive: Whether the search should be case-sensitive (default False) max_results: Maximum number of results to return (default 50) Returns: List of found cells with their location (sheet, cell in A1 notation) and value |
| `google-sheet batch-update` | `{spreadsheet_id: str, requests: list[dict]}` | Execute a batch update on a Google Spreadsheet using the full batchUpdate endpoint. This provides access to all batchUpdate operations including adding sheets, updating properties, inserting/deleting dimensions, formatting, and more. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) requests: A list of request objects. Each request object can contain any valid batchUpdate operation. Common operations include: - addSheet: Add a new sheet - updateSheetProperties: Update sheet properties (title, grid properties, etc.) - insertDimension: Insert rows or columns - deleteDimension: Delete rows or columns - updateCells: Update cell values and formatting - updateBorders: Update cell borders - addConditionalFormatRule: Add conditional formatting - deleteConditionalFormatRule: Remove conditional formatting - updateDimensionProperties: Update row/column properties - and many more... Example requests: [ { "addSheet": { "properties": { "title": "New Sheet" } } }, { "updateSheetProperties": { "properties": { "sheetId": 0, "title": "Renamed Sheet" }, "fields": "title" } }, { "insertDimension": { "range": { "sheetId": 0, "dimension": "ROWS", "startIndex": 1, "endIndex": 3 } } } ] Returns: Result of the batch update operation, including replies for each request |
| `google-sheet add-chart` | `{spreadsheet_id: str, sheet: str, chart_type: str, data_range: str, title?: str = null, x_axis_label?: str = null, y_axis_label?: str = null, position_x?: int = 0, position_y?: int = 0, width?: int = 600, height?: int = 400}` | Add a chart to a Google Spreadsheet. Creates a chart from the specified data range with customizable type, title, and positioning. The chart is added as a floating element on the sheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet containing the data chart_type: Type of chart to create. Supported types: - COLUMN: Vertical bar chart - BAR: Horizontal bar chart - LINE: Line chart - AREA: Area chart - PIE: Pie chart - SCATTER: Scatter plot - COMBO: Combination chart - HISTOGRAM: Histogram data_range: A1 notation range for chart data (e.g., 'A1:C10'). The first row is typically treated as headers. title: Optional title for the chart x_axis_label: Optional label for the X axis (bottom axis) y_axis_label: Optional label for the Y axis (left axis) position_x: Horizontal position offset in pixels from the top-left corner (default: 0) position_y: Vertical position offset in pixels from the top-left corner (default: 0) width: Width of the chart in pixels (default: 600) height: Height of the chart in pixels (default: 400) Returns: Result of the chart creation operation Examples: Create a column chart showing sales data: add_chart( spreadsheet_id="abc123", sheet="Sales", chart_type="COLUMN", data_range="A1:B13", title="Monthly Sales", x_axis_label="Month", y_axis_label="Revenue ($)" ) Create a pie chart for market share: add_chart( spreadsheet_id="abc123", sheet="Market", chart_type="PIE", data_range="A1:B5", title="Market Share by Product" ) |
## yahoo-finance
Use `yahoo-finance <command> '<JSON arguments>'`. Run
`yahoo-finance <command> --help` to get more information.
| Command | Arguments | Description |
|---|---|---|
| `yahoo-finance get-historical-stock-prices` | `{ticker: str, period?: str = "1mo", interval?: str = "1d", start_date?: str = null, end_date?: str = null, auto_adjust?: bool = true}` | Get historical stock prices for a given ticker symbol from yahoo finance. Include the following information: Date, Open, High, Low, Close, Volume, Dividends, Stock Splits, and optionally Adj Close. Args: ticker: str The ticker symbol of the stock to get historical prices for, e.g. "AAPL" period : str Valid periods: 1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,max Used only when both start_date and end_date are not provided Default is "1mo" interval : str Valid intervals: 1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo Intraday data cannot extend last 60 days Default is "1d" start_date: str (optional) The start date for historical data (format: 'YYYY-MM-DD'), e.g. "2024-01-01" If provided, period parameter will be ignored end_date: str (optional) The end date for historical data (format: 'YYYY-MM-DD'), e.g. "2024-12-31" If not provided, defaults to current date auto_adjust: bool (optional) If True (default), returns prices adjusted for dividends and stock splits (Open, High, Low, Close are adjusted) If False, returns raw unadjusted prices and includes 'Adj Close' column Default is True |
| `yahoo-finance get-stock-price-by-date` | `{ticker: str, date: str, find_nearest?: bool = true, auto_adjust?: bool = true}` | Get stock price for a specific date. This tool is more efficient than getting historical prices when you only need data for one specific date. Args: ticker: str The ticker symbol of the stock to get price for, e.g. "AAPL" date: str The specific date to get price for (format: 'YYYY-MM-DD'), e.g. "2024-01-15" find_nearest: bool If True and the exact date has no trading data (weekend/holiday), return the nearest trading day data. If False, return error for non-trading days. Default is True. auto_adjust: bool (optional) If True (default), returns prices adjusted for dividends and stock splits If False, returns raw unadjusted prices Default is True |
| `yahoo-finance get-stock-info` | `{ticker: str}` | Get stock information for a given ticker symbol from yahoo finance. Include the following information: Stock Price & Trading Info, Company Information, Financial Metrics, Earnings & Revenue, Margins & Returns, Dividends, Balance Sheet, Ownership, Analyst Coverage, Risk Metrics, Other. Args: ticker: str The ticker symbol of the stock to get information for, e.g. "AAPL" |
| `yahoo-finance get-yahoo-finance-news` | `{ticker: str}` | Get news for a given ticker symbol from yahoo finance. Args: ticker: str The ticker symbol of the stock to get news for, e.g. "AAPL" |
| `yahoo-finance get-stock-actions` | `{ticker: str}` | Get stock dividends and stock splits for a given ticker symbol from yahoo finance. Args: ticker: str The ticker symbol of the stock to get stock actions for, e.g. "AAPL" |
| `yahoo-finance get-financial-statement` | `{ticker: str, financial_type: str}` | Get financial statement for a given ticker symbol from yahoo finance. You can choose from the following financial statement types: income_stmt, quarterly_income_stmt, balance_sheet, quarterly_balance_sheet, cashflow, quarterly_cashflow. Args: ticker: str The ticker symbol of the stock to get financial statement for, e.g. "AAPL" financial_type: str The type of financial statement to get. You can choose from the following financial statement types: income_stmt, quarterly_income_stmt, balance_sheet, quarterly_balance_sheet, cashflow, quarterly_cashflow. |
| `yahoo-finance get-holder-info` | `{ticker: str, holder_type: str}` | Get holder information for a given ticker symbol from yahoo finance. You can choose from the following holder types: major_holders, institutional_holders, mutualfund_holders, insider_transactions, insider_purchases, insider_roster_holders. Args: ticker: str The ticker symbol of the stock to get holder information for, e.g. "AAPL" holder_type: str The type of holder information to get. You can choose from the following holder types: major_holders, institutional_holders, mutualfund_holders, insider_transactions, insider_purchases, insider_roster_holders. |
| `yahoo-finance get-option-expiration-dates` | `{ticker: str}` | Fetch the available options expiration dates for a given ticker symbol. Args: ticker: str The ticker symbol of the stock to get option expiration dates for, e.g. "AAPL" |
| `yahoo-finance get-option-chain` | `{ticker: str, expiration_date: str, option_type: str}` | Fetch the option chain for a given ticker symbol, expiration date, and option type. Args: ticker: str The ticker symbol of the stock to get option chain for, e.g. "AAPL" expiration_date: str The expiration date for the options chain (format: 'YYYY-MM-DD') option_type: str The type of option to fetch ('calls' or 'puts') |
| `yahoo-finance get-recommendations` | `{ticker: str, recommendation_type: str, months_back?: int = 12}` | Get recommendations or upgrades/downgrades for a given ticker symbol from yahoo finance. You can also specify the number of months back to get upgrades/downgrades for, default is 12. Args: ticker: str The ticker symbol of the stock to get recommendations for, e.g. "AAPL" recommendation_type: str The type of recommendation to get. You can choose from the following recommendation types: recommendations, upgrades_downgrades. months_back: int The number of months back to get upgrades/downgrades for, default is 12. |
## notion
Use `notion <command> '<JSON arguments>'`. Run `notion <command> --help` to
get more information.
| Command | Arguments | Description |
|---|---|---|
| `notion get-user` | `{user_id: str}` | Notion \| Retrieve a user |
| `notion get-users` | `{start_cursor?: str, page_size?: int = 100}` | Notion \| List all users — `start_cursor`: If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results.; `page_size`: The number of items from the full list desired in the response. Maximum: 100 |
| `notion get-self` | `{}` | Notion \| Retrieve your token's bot user |
| `notion post-database-query` | `{database_id: str, filter_properties?: list[str], filter?: dict, sorts?: list[{property: str, direction: "ascending" \| "descending"}], start_cursor?: str, page_size?: int = 100, archived?: bool, in_trash?: bool}` | Notion \| Query a database — `database_id`: Identifier for a Notion database.; `filter_properties`: A list of page property value IDs associated with the database. Use this param to limit the response to a specific page property value or values for pages that meet the `filter` criteria.; `filter`: When supplied, limits which pages are returned based on the [filter conditions](ref:post-database-query-filter).; `sorts`: When supplied, orders the results based on the provided [sort criteria](ref:post-database-query-sort).; `start_cursor`: When supplied, returns a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results.; `page_size`: The number of items from the full list desired in the response. Maximum: 100 |
| `notion post-search` | `{query?: str, sort?: {direction?: str, timestamp?: str}, filter?: {value?: str, property?: str}, start_cursor?: str, page_size?: int = 100}` | Notion \| Search by title — `query`: The text that the API compares page and database titles against.; `sort`: A set of criteria, `direction` and `timestamp` keys, that orders the results. The **only** supported timestamp value is `"last_edited_time"`. Supported `direction` values are `"ascending"` and `"descending"`. If `sort` is not provided, then the most recently edited results are returned first.; `sort.direction`: The direction to sort. Possible values include `ascending` and `descending`.; `sort.timestamp`: The name of the timestamp to sort against. Possible values include `last_edited_time`.; `filter`: A set of criteria, `value` and `property` keys, that limits the results to either only pages or only databases. Possible `value` values are `"page"` or `"database"`. The only supported `property` value is `"object"`.; `filter.value`: The value of the property to filter the results by. Possible values for object type include `page` or `database`. **Limitation**: Currently the only filter allowed is `object` which will filter by type of object (either `page` or `database`); `filter.property`: The name of the property to filter by. Currently the only property you can filter by is the object type. Possible values include `object`. Limitation: Currently the only filter allowed is `object` which will filter by type of object (either `page` or `database`); `start_cursor`: A `cursor` value returned in a previous response that If supplied, limits the response to results starting after the `cursor`. If not supplied, then the first page of results is returned. Refer to [pagination](https://developers.notion.com/reference/intro#pagination) for more details.; `page_size`: The number of items from the full list to include in the response. Maximum: `100`. |
| `notion get-block-children` | `{block_id: str, start_cursor?: str, page_size?: int = 100}` | Notion \| Retrieve block children — `block_id`: Identifier for a [block](ref:block); `start_cursor`: If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results.; `page_size`: The number of items from the full list desired in the response. Maximum: 100 |
| `notion patch-block-children` | `{block_id: str, children: list[{paragraph?: {rich_text: list[{text: {content: str, link?: dict \| null}, type?: "text"}]}, bulleted_list_item?: {rich_text: list[{text: {content: str, link?: dict \| null}, type?: "text"}]}, type?: "paragraph" \| "bulleted_list_item"}], after?: str}` | Notion \| Append block children — `block_id`: Identifier for a [block](ref:block). Also accepts a [page](ref:page) ID.; `children`: Child content to append to a container block as an array of [block objects](ref:block); `after`: The ID of the existing block that the new block should be appended after. |
| `notion retrieve-a-block` | `{block_id: str}` | Notion \| Retrieve a block — `block_id`: Identifier for a Notion block |
| `notion update-a-block` | `{block_id: str, type?: dict, archived?: bool = true}` | Notion \| Update a block — `block_id`: Identifier for a Notion block; `type`: The [block object `type`](ref:block#block-object-keys) value with the properties to be updated. Currently only `text` (for supported block types) and `checked` (for `to_do` blocks) fields can be updated.; `archived`: Set to true to archive (delete) a block. Set to false to un-archive (restore) a block. |
| `notion delete-a-block` | `{block_id: str}` | Notion \| Delete a block — `block_id`: Identifier for a Notion block |
| `notion retrieve-a-page` | `{page_id: str, filter_properties?: str}` | Notion \| Retrieve a page — `page_id`: Identifier for a Notion page; `filter_properties`: A list of page property value IDs associated with the page. Use this param to limit the response to a specific page property value or values. To retrieve multiple properties, specify each page property ID. For example: `?filter_properties=iAk8&filter_properties=b7dh`. |
| `notion patch-page` | `{page_id: str, properties?: dict, in_trash?: bool = false, archived?: bool, icon?: {emoji: str}, cover?: {external: {url: str}, type?: "external"}}` | Notion \| Update page properties — `page_id`: The identifier for the Notion page to be updated.; `properties`: Property values to update. Keys are property names or IDs; values are property value objects. Title is no longer required.; `in_trash`: Set to true to delete a block. Set to false to restore a block.; `icon`: A page icon for the page. Supported types are [external file object](https://developers.notion.com/reference/file-object) or [emoji object](https://developers.notion.com/reference/emoji-object).; `cover`: A cover image for the page. Only [external file objects](https://developers.notion.com/reference/file-object) are supported. |
| `notion post-page` | `{parent: {page_id: str} \| {database_id: str, type?: any} \| {data_source_id: str, type?: any}, properties: dict, children?: list[str], icon?: str, cover?: str}` | Notion \| Create a page — `properties`: Property values for the new page. Keys are property names or IDs; values are property value objects.; `children`: The content to be rendered on the new page, represented as an array of [block objects](https://developers.notion.com/reference/block).; `icon`: The icon of the new page. Either an [emoji object](https://developers.notion.com/reference/emoji-object) or an [external file object](https://developers.notion.com/reference/file-object)..; `cover`: The cover image of the new page, represented as a [file object](https://developers.notion.com/reference/file-object). |
| `notion create-a-database` | `{parent: {type: "page_id", page_id: str}, properties: dict[str, {title: dict, description?: str}], title?: list[{text: {content: str, link?: dict \| null}, type?: "text"}]}` | Notion \| Create a database — `properties`: Property schema of database. The keys are the names of properties as they appear in Notion and the values are [property schema objects](https://developers.notion.com/reference/property-schema-object). |
| `notion update-a-database` | `{database_id: str, title?: list[{text: {content: str, link?: dict \| null}, type?: "text"}], description?: list[{text: {content: str, link?: dict \| null}, type?: "text"}], properties?: {name?: str}}` | Notion \| Update a database — `database_id`: identifier for a Notion database; `title`: An array of [rich text objects](https://developers.notion.com/reference/rich-text) that represents the title of the database that is displayed in the Notion UI. If omitted, then the database title remains unchanged.; `description`: An array of [rich text objects](https://developers.notion.com/reference/rich-text) that represents the description of the database that is displayed in the Notion UI. If omitted, then the database description remains unchanged.; `properties`: Property schema of database. The keys are the names of properties as they appear in Notion and the values are [property schema objects](https://developers.notion.com/reference/property-schema-object). |
| `notion retrieve-a-database` | `{database_id: str}` | Notion \| Retrieve a database — `database_id`: An identifier for the Notion database. |
| `notion retrieve-a-page-property` | `{page_id: str, property_id: str, page_size?: int, start_cursor?: str}` | Notion \| Retrieve a page property item — `page_id`: Identifier for a Notion page; `property_id`: Identifier for a page [property](https://developers.notion.com/reference/page#all-property-values); `page_size`: For paginated properties. The max number of property item objects on a page. The default size is 100; `start_cursor`: For paginated properties. |
| `notion retrieve-a-comment` | `{block_id: str, start_cursor?: str, page_size?: int}` | Notion \| Retrieve comments — `block_id`: Identifier for a Notion block or page; `start_cursor`: If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results.; `page_size`: The number of items from the full list desired in the response. Maximum: 100 |
| `notion create-a-comment` | `{parent: {page_id: str}, rich_text: list[{text: {content: str}}]}` | Notion \| Create comment — `parent`: The page that contains the comment; `parent.page_id`: the page ID; `rich_text.text.content`: The content of the comment |
## git
Use `git --help` for Git operations on workspace repositories.
## python3
Execute Python code directly under the agent workspace and return stdout
and stderr. Code can be pasted into a `.py` file and run with `python3`.
Python cannot launch subprocesses or make direct network requests. Run the
documented service commands directly in the shell. Use Python for local
file processing and generating JSON arguments.
| name | workspace-commands |
|---|
| description | The shell commands, task tools, and python3 interpreter available in this workspace. |
|---|
Available commands
Standard Unix commands, among them:
cat head tail ls find grep wc sort uniq cut tr sed awk
diff tee xargs jq unzip curl
with pipes, > redirection, $(...) substitution and $'...'.
The task CLIs below are registered with this shell rather than installed as files; do not inspect them with which, file or /usr/bin.
Google Drive and spreadsheet reads
Use ls and find under /gd to list folders and locate spreadsheets. Read .gsheet.json files with cat, jq, or Python to inspect spreadsheet IDs, tab names, cell values, formulas, and metadata. Filter or slice the JSON for ranges, summaries, and matching cells; read multiple files for queries across spreadsheets. See VFS.md for the JSON structure.
google-sheet
Use google-sheet <command> '<JSON arguments>'. Run google-sheet <command> --help to get more information.
| Command | Arguments | Description |
|---|
google-sheet get-sheet-data | {spreadsheet_id: str, sheet: str, range?: str = null, include_grid_data?: bool = false} | Get data from a specific sheet in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet range: Optional cell range in A1 notation (e.g., 'A1:C10'). If not provided, gets all data. include_grid_data: If True, includes cell formatting and other metadata in the response. Note: Setting this to True will significantly increase the response size and token usage when parsing the response, as it includes detailed cell formatting information. Default is False (returns values only, more efficient). Returns: Grid data structure with either full metadata or just values from Google Sheets API, depending on include_grid_data parameter |
google-sheet get-sheet-formulas | {spreadsheet_id: str, sheet: str, range?: str = null} | Get formulas from a specific sheet in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet range: Optional cell range in A1 notation (e.g., 'A1:C10'). If not provided, gets all formulas from the sheet. Returns: A 2D array of the sheet formulas. |
google-sheet update-cells | {spreadsheet_id: str, sheet: str, range: str, data: list[list]} | Update cells in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet range: Cell range in A1 notation (e.g., 'A1:C10') data: 2D array of values to update Returns: Result of the update operation |
google-sheet batch-update-cells | {spreadsheet_id: str, sheet: str, ranges: dict} | Batch update multiple ranges in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet ranges: Dictionary mapping range strings to 2D arrays of values e.g., {'A1:B2': [[1, 2], [3, 4]], 'D1:E2': [['a', 'b'], ['c', 'd']]} Returns: Result of the batch update operation |
google-sheet add-rows | {spreadsheet_id: str, sheet: str, count: int, start_row?: int = null} | Add rows to a sheet in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet count: Number of rows to add start_row: 0-based row index to start adding. If not provided, adds at the beginning. Returns: Result of the operation |
google-sheet add-columns | {spreadsheet_id: str, sheet: str, count: int, start_column?: int = null} | Add columns to a sheet in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet count: Number of columns to add start_column: 0-based column index to start adding. If not provided, adds at the beginning. Returns: Result of the operation |
google-sheet list-sheets | {spreadsheet_id: str} | List all sheets in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) Returns: List of sheet names |
google-sheet copy-sheet | {src_spreadsheet: str, src_sheet: str, dst_spreadsheet: str, dst_sheet: str} | Copy a sheet from one spreadsheet to another. Args: src_spreadsheet: Source spreadsheet ID src_sheet: Source sheet name dst_spreadsheet: Destination spreadsheet ID dst_sheet: Destination sheet name Returns: Result of the operation |
google-sheet rename-sheet | {spreadsheet: str, sheet: str, new_name: str} | Rename a sheet in a Google Spreadsheet. Args: spreadsheet: Spreadsheet ID sheet: Current sheet name new_name: New sheet name Returns: Result of the operation |
google-sheet get-multiple-sheet-data | {queries: list[dict]} | Get data from multiple specific ranges in Google Spreadsheets. Args: queries: A list of dictionaries, each specifying a query. Each dictionary should have 'spreadsheet_id', 'sheet', and 'range' keys. Example: [{'spreadsheet_id': 'abc', 'sheet': 'Sheet1', 'range': 'A1:B5'}, {'spreadsheet_id': 'xyz', 'sheet': 'Data', 'range': 'C1:C10'}] Returns: A list of dictionaries, each containing the original query parameters and the fetched 'data' or an 'error'. |
google-sheet get-multiple-spreadsheet-summary | {spreadsheet_ids: list[str], rows_to_fetch?: int = 5} | Get a summary of multiple Google Spreadsheets, including sheet names, headers, and the first few rows of data for each sheet. Args: spreadsheet_ids: A list of spreadsheet IDs to summarize. rows_to_fetch: The number of rows (including header) to fetch for the summary (default: 5). Returns: A list of dictionaries, each representing a spreadsheet summary. Includes spreadsheet title, sheet summaries (title, headers, first rows), or an error. |
google-sheet create-spreadsheet | {title: str, folder_id?: str = null} | Create a new Google Spreadsheet. Args: title: The title of the new spreadsheet folder_id: Optional Google Drive folder ID where the spreadsheet should be created. If not provided, uses the configured default folder or creates in root. Returns: Information about the newly created spreadsheet including its ID |
google-sheet create-sheet | {spreadsheet_id: str, title: str} | Create a new sheet tab in an existing Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet title: The title for the new sheet Returns: Information about the newly created sheet |
google-sheet list-spreadsheets | {folder_id?: str = null} | List all spreadsheets in the specified Google Drive folder. If no folder is specified, uses the configured default folder or lists from 'My Drive'. Args: folder_id: Optional Google Drive folder ID to search in. If not provided, uses the configured default folder or searches 'My Drive'. Returns: List of spreadsheets with their ID and title |
google-sheet share-spreadsheet | {spreadsheet_id: str, recipients: list[dict], send_notification?: bool = true} | Share a Google Spreadsheet with multiple users via email, assigning specific roles. Args: spreadsheet_id: The ID of the spreadsheet to share. recipients: A list of dictionaries, each containing 'email_address' and 'role'. The role should be one of: 'reader', 'commenter', 'writer'. Example: [ {'email_address': 'user1@example.com', 'role': 'writer'}, {'email_address': 'user2@example.com', 'role': 'reader'} ] send_notification: Whether to send a notification email to the users. Defaults to True. Returns: A dictionary containing lists of 'successes' and 'failures'. Each item in the lists includes the email address and the outcome. |
google-sheet list-folders | {parent_folder_id?: str = null} | List all folders in the specified Google Drive folder. If no parent folder is specified, lists folders from 'My Drive' root. Args: parent_folder_id: Optional Google Drive folder ID to search within. If not provided, searches the root of 'My Drive'. Returns: List of folders with their ID, name, and parent information |
google-sheet search-spreadsheets | {query: str, max_results?: int = 20} | Search for spreadsheets in Google Drive by name or content. Args: query: Search query string. Searches in file name and content. Examples: "budget 2024", "sales report", "project tracker" max_results: Maximum number of results to return (default 20, max 100) Returns: List of matching spreadsheets with their ID, name, and metadata |
google-sheet find-in-spreadsheet | {spreadsheet_id: str, query: str, sheet?: str = null, case_sensitive?: bool = false, max_results?: int = 50} | Find cells containing a specific value in a Google Spreadsheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) query: The text to search for in cell values sheet: Optional sheet name to search in. If not provided, searches all sheets. case_sensitive: Whether the search should be case-sensitive (default False) max_results: Maximum number of results to return (default 50) Returns: List of found cells with their location (sheet, cell in A1 notation) and value |
google-sheet batch-update | {spreadsheet_id: str, requests: list[dict]} | Execute a batch update on a Google Spreadsheet using the full batchUpdate endpoint. This provides access to all batchUpdate operations including adding sheets, updating properties, inserting/deleting dimensions, formatting, and more. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) requests: A list of request objects. Each request object can contain any valid batchUpdate operation. Common operations include: - addSheet: Add a new sheet - updateSheetProperties: Update sheet properties (title, grid properties, etc.) - insertDimension: Insert rows or columns - deleteDimension: Delete rows or columns - updateCells: Update cell values and formatting - updateBorders: Update cell borders - addConditionalFormatRule: Add conditional formatting - deleteConditionalFormatRule: Remove conditional formatting - updateDimensionProperties: Update row/column properties - and many more... Example requests: [ { "addSheet": { "properties": { "title": "New Sheet" } } }, { "updateSheetProperties": { "properties": { "sheetId": 0, "title": "Renamed Sheet" }, "fields": "title" } }, { "insertDimension": { "range": { "sheetId": 0, "dimension": "ROWS", "startIndex": 1, "endIndex": 3 } } } ] Returns: Result of the batch update operation, including replies for each request |
google-sheet add-chart | {spreadsheet_id: str, sheet: str, chart_type: str, data_range: str, title?: str = null, x_axis_label?: str = null, y_axis_label?: str = null, position_x?: int = 0, position_y?: int = 0, width?: int = 600, height?: int = 400} | Add a chart to a Google Spreadsheet. Creates a chart from the specified data range with customizable type, title, and positioning. The chart is added as a floating element on the sheet. Args: spreadsheet_id: The ID of the spreadsheet (found in the URL) sheet: The name of the sheet containing the data chart_type: Type of chart to create. Supported types: - COLUMN: Vertical bar chart - BAR: Horizontal bar chart - LINE: Line chart - AREA: Area chart - PIE: Pie chart - SCATTER: Scatter plot - COMBO: Combination chart - HISTOGRAM: Histogram data_range: A1 notation range for chart data (e.g., 'A1:C10'). The first row is typically treated as headers. title: Optional title for the chart x_axis_label: Optional label for the X axis (bottom axis) y_axis_label: Optional label for the Y axis (left axis) position_x: Horizontal position offset in pixels from the top-left corner (default: 0) position_y: Vertical position offset in pixels from the top-left corner (default: 0) width: Width of the chart in pixels (default: 600) height: Height of the chart in pixels (default: 400) Returns: Result of the chart creation operation Examples: Create a column chart showing sales data: add_chart( spreadsheet_id="abc123", sheet="Sales", chart_type="COLUMN", data_range="A1:B13", title="Monthly Sales", x_axis_label="Month", y_axis_label="Revenue ($)" ) Create a pie chart for market share: add_chart( spreadsheet_id="abc123", sheet="Market", chart_type="PIE", data_range="A1:B5", title="Market Share by Product" ) |
yahoo-finance
Use yahoo-finance <command> '<JSON arguments>'. Run yahoo-finance <command> --help to get more information.
| Command | Arguments | Description |
|---|
yahoo-finance get-historical-stock-prices | {ticker: str, period?: str = "1mo", interval?: str = "1d", start_date?: str = null, end_date?: str = null, auto_adjust?: bool = true} | Get historical stock prices for a given ticker symbol from yahoo finance. Include the following information: Date, Open, High, Low, Close, Volume, Dividends, Stock Splits, and optionally Adj Close. Args: ticker: str The ticker symbol of the stock to get historical prices for, e.g. "AAPL" period : str Valid periods: 1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,max Used only when both start_date and end_date are not provided Default is "1mo" interval : str Valid intervals: 1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo Intraday data cannot extend last 60 days Default is "1d" start_date: str (optional) The start date for historical data (format: 'YYYY-MM-DD'), e.g. "2024-01-01" If provided, period parameter will be ignored end_date: str (optional) The end date for historical data (format: 'YYYY-MM-DD'), e.g. "2024-12-31" If not provided, defaults to current date auto_adjust: bool (optional) If True (default), returns prices adjusted for dividends and stock splits (Open, High, Low, Close are adjusted) If False, returns raw unadjusted prices and includes 'Adj Close' column Default is True |
yahoo-finance get-stock-price-by-date | {ticker: str, date: str, find_nearest?: bool = true, auto_adjust?: bool = true} | Get stock price for a specific date. This tool is more efficient than getting historical prices when you only need data for one specific date. Args: ticker: str The ticker symbol of the stock to get price for, e.g. "AAPL" date: str The specific date to get price for (format: 'YYYY-MM-DD'), e.g. "2024-01-15" find_nearest: bool If True and the exact date has no trading data (weekend/holiday), return the nearest trading day data. If False, return error for non-trading days. Default is True. auto_adjust: bool (optional) If True (default), returns prices adjusted for dividends and stock splits If False, returns raw unadjusted prices Default is True |
yahoo-finance get-stock-info | {ticker: str} | Get stock information for a given ticker symbol from yahoo finance. Include the following information: Stock Price & Trading Info, Company Information, Financial Metrics, Earnings & Revenue, Margins & Returns, Dividends, Balance Sheet, Ownership, Analyst Coverage, Risk Metrics, Other. Args: ticker: str The ticker symbol of the stock to get information for, e.g. "AAPL" |
yahoo-finance get-yahoo-finance-news | {ticker: str} | Get news for a given ticker symbol from yahoo finance. Args: ticker: str The ticker symbol of the stock to get news for, e.g. "AAPL" |
yahoo-finance get-stock-actions | {ticker: str} | Get stock dividends and stock splits for a given ticker symbol from yahoo finance. Args: ticker: str The ticker symbol of the stock to get stock actions for, e.g. "AAPL" |
yahoo-finance get-financial-statement | {ticker: str, financial_type: str} | Get financial statement for a given ticker symbol from yahoo finance. You can choose from the following financial statement types: income_stmt, quarterly_income_stmt, balance_sheet, quarterly_balance_sheet, cashflow, quarterly_cashflow. Args: ticker: str The ticker symbol of the stock to get financial statement for, e.g. "AAPL" financial_type: str The type of financial statement to get. You can choose from the following financial statement types: income_stmt, quarterly_income_stmt, balance_sheet, quarterly_balance_sheet, cashflow, quarterly_cashflow. |
yahoo-finance get-holder-info | {ticker: str, holder_type: str} | Get holder information for a given ticker symbol from yahoo finance. You can choose from the following holder types: major_holders, institutional_holders, mutualfund_holders, insider_transactions, insider_purchases, insider_roster_holders. Args: ticker: str The ticker symbol of the stock to get holder information for, e.g. "AAPL" holder_type: str The type of holder information to get. You can choose from the following holder types: major_holders, institutional_holders, mutualfund_holders, insider_transactions, insider_purchases, insider_roster_holders. |
yahoo-finance get-option-expiration-dates | {ticker: str} | Fetch the available options expiration dates for a given ticker symbol. Args: ticker: str The ticker symbol of the stock to get option expiration dates for, e.g. "AAPL" |
yahoo-finance get-option-chain | {ticker: str, expiration_date: str, option_type: str} | Fetch the option chain for a given ticker symbol, expiration date, and option type. Args: ticker: str The ticker symbol of the stock to get option chain for, e.g. "AAPL" expiration_date: str The expiration date for the options chain (format: 'YYYY-MM-DD') option_type: str The type of option to fetch ('calls' or 'puts') |
yahoo-finance get-recommendations | {ticker: str, recommendation_type: str, months_back?: int = 12} | Get recommendations or upgrades/downgrades for a given ticker symbol from yahoo finance. You can also specify the number of months back to get upgrades/downgrades for, default is 12. Args: ticker: str The ticker symbol of the stock to get recommendations for, e.g. "AAPL" recommendation_type: str The type of recommendation to get. You can choose from the following recommendation types: recommendations, upgrades_downgrades. months_back: int The number of months back to get upgrades/downgrades for, default is 12. |
notion
Use notion <command> '<JSON arguments>'. Run notion <command> --help to get more information.
| Command | Arguments | Description |
|---|
notion get-user | {user_id: str} | Notion \ | Retrieve a user |
notion get-users | {start_cursor?: str, page_size?: int = 100} | Notion \ | List all users — start_cursor: If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results.; page_size: The number of items from the full list desired in the response. Maximum: 100 |
notion get-self | {} | Notion \ | Retrieve your token's bot user |
notion post-database-query | `{database_id: str, filter_properties?: list[str], filter?: dict, sorts?: list[{property: str, direction: "ascending" \ | "descending"}], start_cursor?: str, page_size?: int = 100, archived?: bool, in_trash?: bool}` | Notion \ | Query a database — database_id: Identifier for a Notion database.; filter_properties: A list of page property value IDs associated with the database. Use this param to limit the response to a specific page property value or values for pages that meet the filter criteria.; filter: When supplied, limits which pages are returned based on the [filter conditions](ref:post-database-query-filter).; sorts: When supplied, orders the results based on the provided [sort criteria](ref:post-database-query-sort).; start_cursor: When supplied, returns a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results.; page_size: The number of items from the full list desired in the response. Maximum: 100 |
notion post-search | {query?: str, sort?: {direction?: str, timestamp?: str}, filter?: {value?: str, property?: str}, start_cursor?: str, page_size?: int = 100} | Notion \ | Search by title — query: The text that the API compares page and database titles against.; sort: A set of criteria, direction and timestamp keys, that orders the results. The **only** supported timestamp value is "last_edited_time". Supported direction values are "ascending" and "descending". If sort is not provided, then the most recently edited results are returned first.; sort.direction: The direction to sort. Possible values include ascending and descending.; sort.timestamp: The name of the timestamp to sort against. Possible values include last_edited_time.; filter: A set of criteria, value and property keys, that limits the results to either only pages or only databases. Possible value values are "page" or "database". The only supported property value is "object".; filter.value: The value of the property to filter the results by. Possible values for object type include page or database. **Limitation**: Currently the only filter allowed is object which will filter by type of object (either page or database); filter.property: The name of the property to filter by. Currently the only property you can filter by is the object type. Possible values include object. Limitation: Currently the only filter allowed is object which will filter by type of object (either page or database); start_cursor: A cursor value returned in a previous response that If supplied, limits the response to results starting after the cursor. If not supplied, then the first page of results is returned. Refer to [pagination](https://developers.notion.com/reference/intro#pagination) for more details.; page_size: The number of items from the full list to include in the response. Maximum: 100. |
notion get-block-children | {block_id: str, start_cursor?: str, page_size?: int = 100} | Notion \ | Retrieve block children — block_id: Identifier for a [block](ref:block); start_cursor: If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results.; page_size: The number of items from the full list desired in the response. Maximum: 100 |
notion patch-block-children | `{block_id: str, children: list[{paragraph?: {rich_text: list[{text: {content: str, link?: dict \ | null}, type?: "text"}]}, bulleted_list_item?: {rich_text: list[{text: {content: str, link?: dict \ | null}, type?: "text"}]}, type?: "paragraph" \ | "bulleted_list_item"}], after?: str}` | Notion \ | Append block children — block_id: Identifier for a [block](ref:block). Also accepts a [page](ref:page) ID.; children: Child content to append to a container block as an array of [block objects](ref:block); after: The ID of the existing block that the new block should be appended after. |
notion retrieve-a-block | {block_id: str} | Notion \ | Retrieve a block — block_id: Identifier for a Notion block |
notion update-a-block | {block_id: str, type?: dict, archived?: bool = true} | Notion \ | Update a block — block_id: Identifier for a Notion block; type: The [block object type](ref:block#block-object-keys) value with the properties to be updated. Currently only text (for supported block types) and checked (for to_do blocks) fields can be updated.; archived: Set to true to archive (delete) a block. Set to false to un-archive (restore) a block. |
notion delete-a-block | {block_id: str} | Notion \ | Delete a block — block_id: Identifier for a Notion block |
notion retrieve-a-page | {page_id: str, filter_properties?: str} | Notion \ | Retrieve a page — page_id: Identifier for a Notion page; filter_properties: A list of page property value IDs associated with the page. Use this param to limit the response to a specific page property value or values. To retrieve multiple properties, specify each page property ID. For example: ?filter_properties=iAk8&filter_properties=b7dh. |
notion patch-page | {page_id: str, properties?: dict, in_trash?: bool = false, archived?: bool, icon?: {emoji: str}, cover?: {external: {url: str}, type?: "external"}} | Notion \ | Update page properties — page_id: The identifier for the Notion page to be updated.; properties: Property values to update. Keys are property names or IDs; values are property value objects. Title is no longer required.; in_trash: Set to true to delete a block. Set to false to restore a block.; icon: A page icon for the page. Supported types are [external file object](https://developers.notion.com/reference/file-object) or [emoji object](https://developers.notion.com/reference/emoji-object).; cover: A cover image for the page. Only [external file objects](https://developers.notion.com/reference/file-object) are supported. |
notion post-page | `{parent: {page_id: str} \ | {database_id: str, type?: any} \ | {data_source_id: str, type?: any}, properties: dict, children?: list[str], icon?: str, cover?: str}` | Notion \ | Create a page — properties: Property values for the new page. Keys are property names or IDs; values are property value objects.; children: The content to be rendered on the new page, represented as an array of [block objects](https://developers.notion.com/reference/block).; icon: The icon of the new page. Either an [emoji object](https://developers.notion.com/reference/emoji-object) or an [external file object](https://developers.notion.com/reference/file-object)..; cover: The cover image of the new page, represented as a [file object](https://developers.notion.com/reference/file-object). |
notion create-a-database | `{parent: {type: "page_id", page_id: str}, properties: dict[str, {title: dict, description?: str}], title?: list[{text: {content: str, link?: dict \ | null}, type?: "text"}]}` | Notion \ | Create a database — properties: Property schema of database. The keys are the names of properties as they appear in Notion and the values are [property schema objects](https://developers.notion.com/reference/property-schema-object). |
notion update-a-database | `{database_id: str, title?: list[{text: {content: str, link?: dict \ | null}, type?: "text"}], description?: list[{text: {content: str, link?: dict \ | null}, type?: "text"}], properties?: {name?: str}}` | Notion \ | Update a database — database_id: identifier for a Notion database; title: An array of [rich text objects](https://developers.notion.com/reference/rich-text) that represents the title of the database that is displayed in the Notion UI. If omitted, then the database title remains unchanged.; description: An array of [rich text objects](https://developers.notion.com/reference/rich-text) that represents the description of the database that is displayed in the Notion UI. If omitted, then the database description remains unchanged.; properties: Property schema of database. The keys are the names of properties as they appear in Notion and the values are [property schema objects](https://developers.notion.com/reference/property-schema-object). |
notion retrieve-a-database | {database_id: str} | Notion \ | Retrieve a database — database_id: An identifier for the Notion database. |
notion retrieve-a-page-property | {page_id: str, property_id: str, page_size?: int, start_cursor?: str} | Notion \ | Retrieve a page property item — page_id: Identifier for a Notion page; property_id: Identifier for a page [property](https://developers.notion.com/reference/page#all-property-values); page_size: For paginated properties. The max number of property item objects on a page. The default size is 100; start_cursor: For paginated properties. |
notion retrieve-a-comment | {block_id: str, start_cursor?: str, page_size?: int} | Notion \ | Retrieve comments — block_id: Identifier for a Notion block or page; start_cursor: If supplied, this endpoint will return a page of results starting after the cursor provided. If not supplied, this endpoint will return the first page of results.; page_size: The number of items from the full list desired in the response. Maximum: 100 |
notion create-a-comment | {parent: {page_id: str}, rich_text: list[{text: {content: str}}]} | Notion \ | Create comment — parent: The page that contains the comment; parent.page_id: the page ID; rich_text.text.content: The content of the comment |
git
Use git --help for Git operations on workspace repositories.
python3
Execute Python code directly under the agent workspace and return stdout and stderr. Code can be pasted into a .py file and run with python3.
Python cannot launch subprocesses or make direct network requests. Run the documented service commands directly in the shell. Use Python for local file processing and generating JSON arguments.