Run Read-Only Operation
run_operationExecute a read-only Markifact operation, such as fetching reports, listing records, selecting accounts, or looking up account details.
Use this in direct response to the user's current request. Do not use it for startup checks or background context gathering.
For write/create/update/delete actions, use run_write_operation instead.
Operations returned by find_operations with requires_approval: true MUST be executed via run_write_operation.
operation_id must be an exact Markifact operation ID returned by find_operations for the authenticated user.
Never call this without first inspecting the schema via get_operation_inputs. Input shapes, nested objects, and field names vary per operation and cannot be guessed.
input_data must contain only fields from the get_operation_inputs schema for the same operation_id.
Reporting tips
Reporting operations (GA4, Google Ads, Meta Ads, etc.) require account IDs. Use the relevant
select_accountsoperation first, treating user-provided account names as substring matches.Never guess metric or dimension values. Use the relevant
list_report_fieldsoperation to confirm available fields before building a report.For Google Ads, always prefer using the
gads_get_reportoperation. Usegads_run_gaql_queryonly for advanced or unsupported reporting queries.
Files
Some operations may return
file_idwhen datasets are too large. You will also receive a smalldata_previewfor context.You can reference any file ID in other operation inputs using this syntax:
{{file-id}}, for example:{"data": "{{file-xe3fw}}"}(exactly as provided—do not modify or invent file ids).When you pass a
file_idto another operation, the file content will be automatically loaded and converted to the correct data type. JSON becomes Python dict/list, CSV/XLSX becomes a list of dicts (rows), and images/binary files become raw bytes. You do not need to handle parsing or conversion—just pass{{file-id}}.The file ID is for you to move data between operations efficiently. When sharing results with the user, always share links using the
get_file_urltool.
Returns JSON with the operation result.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| input_data | Yes | Dict matching the selected operation's schema from get_operation_inputs. Pass {} if no inputs are needed. | |
| operation_id | Yes | Exact Markifact read operation ID returned by find_operations, e.g. "meta_ads_select_accounts", "gads_list_report_fields", "ga4_get_report". |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |