Research
1 action. Each is callable by the agent as a tool, over HTTP via /api/invoke, and (usually) from a UI page.
research.start
POST · mutating
Bootstrap a research initiative: creates a research-flavoured project (the dataset container) with optional columns and a default table view. Use this INSTEAD of missions.create when the goal is to gather or track structured data (prices, listings, competitors, leads) rather than run a social-media promotion. Returns the project id to add rows against.
When the agent calls it: Use for data-gathering goals ("research property prices in Baja", "track competitor pricing"). It returns a project id — then add findings with records.upsert (often from a scheduled workflow) and read them with records.query. Declare the columns you expect up front in fields, e.g. [{name:"priceUsd",type:"number"},{name:"sqft",type:"number"},{name:"beachfront",type:"checkbox"}], or omit them and let records.upsert infer columns from the first row.
- AI tool:
research_start - API:
POST /api/invoke/research.start
Input
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | yes | |
goal |
string | — | |
subjectId |
string | — | |
fields |
object[] | — | |
createDefaultView |
boolean | — |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"goal": {
"type": "string"
},
"subjectId": {
"type": "string",
"minLength": 1
},
"fields": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"type": {
"type": "string",
"enum": [
"text",
"number",
"checkbox",
"date",
"select",
"multi_select",
"url"
]
}
},
"required": [
"name"
]
}
},
"createDefaultView": {
"type": "boolean"
}
},
"required": [
"name"
]
}