Research competitors and build, edit, and manage ecommerce sites from your AI assistant.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Cancel the in-progress turn of a Replo session. Cancellation interrupts unfinished work and may leave partial changes. Completed changes are not rolled back, and the session is retained.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Cancel the in-progress turn of a Replo session. Cancellation interrupts unfinished work and may leave partial changes. Completed changes are not rolled back, and the session is retained.
| Argument | Type | Description |
|---|---|---|
| sessionId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sessionId"
],
"properties": {
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Apply the project's saved brand to the selected site's shared style tokens, fonts, layout, and shared components. Affects that site's drafts, not the saved brand kit. Use create_or_update_brand_kit first if there is no saved brand. Starts an asynchronous internal-agent operation; poll get_agent_session. For corrections, call this same tool with its sessionId and unchanged target. Requires a provisioned site. Source edits may execute in its preview. The Replo agent uses its normal tools and connected integrations to implement and verify the requested changes. Use publish_site separately to make changes public.
| Argument | Type | Description |
|---|---|---|
| siteId* | string | Site ID from list_sites. |
| sessionId | string | Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected. |
| instructions* | string | Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"siteId",
"instructions"
],
"properties": {
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Site ID from list_sites."
},
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected."
},
"instructions": {
"type": "string",
"maxLength": 7500,
"minLength": 1,
"description": "Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data."
}
}
}Begin connecting a custom domain to a Replo site. This creates a pending domain and returns the DNS records required before verification can activate it. Never connect a Shopify store's primary domain: Shopify runs checkout there.
| Argument | Type | Description |
|---|---|---|
| domain* | string | |
| siteId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"siteId",
"domain"
],
"properties": {
"domain": {
"type": "string",
"pattern": "^([a-z0-9]([a-z0-9-]*[a-z0-9])?\\.)+[a-z]{2,}$",
"maxLength": 253,
"minLength": 1
},
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Sign the user in to Replo. Call this only after the user agrees to connect an account, usually after a tool returned status sign_in_required; it opens the client's sign-in window. Once signed in it returns who they are. Then call list_workspaces.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Create an API key for user-requested local Git development of one Replo project at git.replo.app. Defaults to repo.read for cloning and pulling; include repo.write only for authorized pushes. Grants no publishing or workspace administration access. Requires permission to manage the selected project. Returns the secret once in the tool result for storage in a local credential helper or REPLO_API_KEY environment variable; do not repeat it in chat or commit it. Use list_projects to resolve workspaceId and projectId and list_sites for the clone URL.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| scopes | array | |
| projectId* | string | |
| workspaceId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId",
"projectId",
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"scopes": {
"type": "array",
"items": {
"enum": [
"repo.read",
"repo.write"
],
"type": "string"
},
"default": [
"repo.read"
],
"minItems": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Create a saved Replo artifact from instructions, existing reports, analytics, or files. Starts an asynchronous internal-agent operation using normal Replo tools and connected integrations. Poll get_agent_session; its final message contains the saved result ID and link after validation. Use the same tool with sessionId for follow-up instructions. Reuse operationId only for an identical retry. Creation is private by default; sharing requires an explicit request. For artifacts, the result is a native HTML artifact in Files. Asking a question alone does not require creating anything.
| Argument | Type | Description |
|---|---|---|
| sources | array | Optional existing reports, analytics SQL, or Files documents. The agent reads and queries these sources. For standalone artifacts, omit sources and provide instructions. |
| projectId* | string | |
| sessionId | string | Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected. |
| operationId* | string | Generate a fresh UUID for each new instruction. Reuse it with identical arguments on a retry to avoid duplicate work. |
| instructions* | string | Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data. |
Create a private document or folder in Files. Documents require a text, base64, or asset source. Asset sources copy without deleting the source. Folders have no source. Name conflicts never overwrite.
| Argument | Type | Description |
|---|---|---|
| kind* | string | |
| name* | string | |
| source | any | Required when kind is file. Omit when kind is folder. |
| parentId | any | |
| projectId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId",
"name",
"kind"
],
"properties": {
"kind": {
"enum": [
"file",
"folder"
],
"type": "string"
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"source": {
"oneOf": [
{
"type": "object",
"required": [
"type",
"text"
],
"properties": {
"text": {
"type": "string"
},
"type": {
"type": "string",
"const": "text"
},
"contentType": {
"type": "string",
"maxLength": 255,
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"dataBase64",
"contentType"
],
"properties": {
"type": {
"type": "string",
"const": "base64"
},
"dataBase64": {
"type": "string"
},
"contentType": {
"type": "string",
"maxLength": 255,
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"assetId"
],
"properties": {
"type": {
"type": "string",
"const": "asset"
},
"assetId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"additionalProperties": false
}
],
"description": "Required when kind is file. Omit when kind is folder."
},
"parentId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Create a saved Replo Insights report from instructions, existing reports, analytics, or files. Starts an asynchronous internal-agent operation using normal Replo tools and connected integrations. Poll get_agent_session; its final message contains the saved result ID and link after validation. Use the same tool with sessionId for follow-up instructions. Reuse operationId only for an identical retry. Creation is private by default; sharing requires an explicit request. For artifacts, the result is a native HTML artifact in Files. Asking a question alone does not require creating anything.
| Argument | Type | Description |
|---|---|---|
| sources | array | Optional existing reports, analytics SQL, or Files documents. The agent reads and queries these sources. For standalone artifacts, omit sources and provide instructions. |
| projectId* | string | |
| sessionId | string | Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected. |
| operationId* | string | Generate a fresh UUID for each new instruction. Reuse it with identical arguments on a retry to avoid duplicate work. |
| instructions* | string | Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data. |
Create or update the project's saved brand: business information, colors, fonts, logos, personas, overviews, and brand-context file tags. May import from a public website URL; replacement can delete prior brand data and import assets/references. Does not restyle or publish a site: use apply_brand_kit_to_site separately. Starts an asynchronous internal-agent operation; poll get_agent_session and answer any replacement confirmation before it proceeds.
| Argument | Type | Description |
|---|---|---|
| projectId* | string | |
| sessionId | string | Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected. |
| instructions* | string | Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId",
"instructions"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected."
},
"instructions": {
"type": "string",
"maxLength": 7500,
"minLength": 1,
"description": "Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data."
}
}
}Create a Replo-managed product for native product pages or checkout flows. New products are active immediately.
| Argument | Type | Description |
|---|---|---|
| slug | any | |
| title* | string | |
| projectId* | string | |
| description | any | |
| externalCheckoutUrl | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId",
"title"
],
"properties": {
"slug": {
"anyOf": [
{
"type": "string",
"maxLength": 1024,
"minLength": 1
},
{
"type": "null"
}
]
},
"title": {
"type": "string",
"maxLength": 1024,
"minLength": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 10000
},
{
"type": "null"
}
]
},
"externalCheckoutUrl": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
}
}
}Create a Replo project in a workspace selected for the user's requested work. Requires an eligible workspaceId from list_projects and a project name. Returns the created project; this changes the workspace's project list.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| workspaceId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId",
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Create or recover a public live preview link to a site page without publishing. Anyone with the URL can view the draft from your account's existing preview workspace. Use projectId from list_projects and siteId from list_sites; supply the page route and omit locale for the default. Page availability is checked when the link opens. Share only when requested; if the preview workspace is missing, report that state without editing or publishing the site.
| Argument | Type | Description |
|---|---|---|
| route* | string | The site route to preview, e.g. "/" or "/about". Must be an absolute path without a query string or fragment. |
| locale | string | BCP 47 language tag to render the page in, e.g. "en-US". Omit to use the site's default locale. |
| siteId* | string | |
| projectId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId",
"siteId",
"route"
],
"properties": {
"route": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "The site route to preview, e.g. \"/\" or \"/about\". Must be an absolute path without a query string or fragment."
},
"locale": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "BCP 47 language tag to render the page in, e.g. \"en-US\". Omit to use the site's default locale."
},
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Create a draft page at one route in an existing site. Preserve existing pages. Supply copy, layout, product references, and design requirements in instructions. Starts an asynchronous internal-agent operation; poll get_agent_session. For corrections, call this same tool with its sessionId and unchanged target. Requires a provisioned site. Source edits may execute in its preview. The Replo agent uses its normal tools and connected integrations to implement and verify the requested changes. Use publish_site separately to make changes public.
| Argument | Type | Description |
|---|---|---|
| route* | string | Page route within the selected site, such as / or /products/[handle]. |
| siteId* | string | Site ID from list_sites. |
| sessionId | string | Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected. |
| instructions* | string | Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"siteId",
"route",
"instructions"
],
"properties": {
"route": {
"type": "string",
"pattern": "^\\/(?:[a-zA-Z0-9_\\[\\]-]+(?:\\/[a-zA-Z0-9_\\[\\]-]+)*)?$",
"maxLength": 512,
"description": "Page route within the selected site, such as / or /products/[handle]."
},
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Site ID from list_sites."
},
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected."
},
"instructions": {
"type": "string",
"maxLength": 7500,
"minLength": 1,
"description": "Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data."
}
}
}Remove the selected route's draft page. Its published copy remains live until a separate publication removes it. Does not delete the site or other routes. Starts an asynchronous internal-agent operation; poll get_agent_session. For corrections, call this same tool with its sessionId and unchanged target. Requires a provisioned site. Source edits may execute in its preview. The Replo agent uses its normal tools and connected integrations to implement and verify the requested changes. Use publish_site separately to make changes public.
| Argument | Type | Description |
|---|---|---|
| route* | string | Page route within the selected site, such as / or /products/[handle]. |
| siteId* | string | Site ID from list_sites. |
| sessionId | string | Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected. |
| instructions* | string | Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"siteId",
"route",
"instructions"
],
"properties": {
"route": {
"type": "string",
"pattern": "^\\/(?:[a-zA-Z0-9_\\[\\]-]+(?:\\/[a-zA-Z0-9_\\[\\]-]+)*)?$",
"maxLength": 512,
"description": "Page route within the selected site, such as / or /products/[handle]."
},
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Site ID from list_sites."
},
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected."
},
"instructions": {
"type": "string",
"maxLength": 7500,
"minLength": 1,
"description": "Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data."
}
}
}Permanently delete a scheduled Replo task and stop all future runs.
| Argument | Type | Description |
|---|---|---|
| taskId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"taskId"
],
"properties": {
"taskId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Edit an existing saved artifact in place, preserving its identity and sharing. Requires write permission. Starts an asynchronous internal-agent operation using normal Replo tools and connected integrations; poll get_agent_session for progress, questions, failures, and the validated result link. Follow-up instructions use the same sessionId and target. Reuse operationId only for identical retries.
| Argument | Type | Description |
|---|---|---|
| fileId* | string | The existing report file ID or artifact folder ID. |
| sources | array | Optional existing reports, analytics SQL, or Files documents. The agent reads and queries these sources. For standalone artifacts, omit sources and provide instructions. |
| projectId* | string | |
| sessionId | string | Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected. |
| operationId* | string | Generate a fresh UUID for each new instruction. Reuse it with identical arguments on a retry to avoid duplicate work. |
| instructions* | string | Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data. |
Edit an existing saved Insights report in place, preserving its identity and sharing. Requires write permission. Starts an asynchronous internal-agent operation using normal Replo tools and connected integrations; poll get_agent_session for progress, questions, failures, and the validated result link. Follow-up instructions use the same sessionId and target. Reuse operationId only for identical retries.
| Argument | Type | Description |
|---|---|---|
| fileId* | string | The existing report file ID or artifact folder ID. |
| sources | array | Optional existing reports, analytics SQL, or Files documents. The agent reads and queries these sources. For standalone artifacts, omit sources and provide instructions. |
| projectId* | string | |
| sessionId | string | Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected. |
| operationId* | string | Generate a fresh UUID for each new instruction. Reuse it with identical arguments on a retry to avoid duplicate work. |
| instructions* | string | Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data. |
Edit the selected site's draft page at one route, including its copy, sections, product display, forms, and page-local components. Shared component edits may affect other pages using them. Starts an asynchronous internal-agent operation; poll get_agent_session. For corrections, call this same tool with its sessionId and unchanged target. Requires a provisioned site. Source edits may execute in its preview. The Replo agent uses its normal tools and connected integrations to implement and verify the requested changes. Use publish_site separately to make changes public.
| Argument | Type | Description |
|---|---|---|
| route* | string | Page route within the selected site, such as / or /products/[handle]. |
| siteId* | string | Site ID from list_sites. |
| sessionId | string | Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected. |
| instructions* | string | Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"siteId",
"route",
"instructions"
],
"properties": {
"route": {
"type": "string",
"pattern": "^\\/(?:[a-zA-Z0-9_\\[\\]-]+(?:\\/[a-zA-Z0-9_\\[\\]-]+)*)?$",
"maxLength": 512,
"description": "Page route within the selected site, such as / or /products/[handle]."
},
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Site ID from list_sites."
},
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected."
},
"instructions": {
"type": "string",
"maxLength": 7500,
"minLength": 1,
"description": "Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data."
}
}
}Find media and files in a project's asset library using semantic search or library metadata.
| Argument | Type | Description |
|---|---|---|
| tags | array | |
| type | string | AssetType |
| label | string | |
| limit | integer | |
| cursor | string | Opaque cursor from next_cursor. Ignored when searchTerm is set because semantic search returns one ranked page. |
| status | string | AssetStatusFilter |
| projectId* | string | |
| searchTerm | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 16
},
"type": {
"enum": [
"image",
"video",
"font",
"document",
"audio"
],
"type": "string",
"description": "AssetType"
},
"label": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
},
"cursor": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Opaque cursor from next_cursor. Ignored when searchTerm is set because semantic search returns one ranked page."
},
"status": {
"enum": [
"approved",
"draft",
"archived"
],
"type": "string",
"description": "AssetStatusFilter"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"searchTerm": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
}
}Find storefront orders when investigating a payment state or fulfillment state. Returns order summaries only: no customer contact details or payment identifiers are included. To look up a known customer's orders, pass their address as the `customerEmail` filter. Money amounts are integers in the currency's minor units (Stripe convention: 2500 = $25.00 USD, 1999 = ¥1999 JPY), paired with each order's currencyCode.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| cursor | string | |
| projectId* | string | |
| customerEmail | string | |
| financialStatus | string | OrderFinancialStatus |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
},
"cursor": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"customerEmail": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"financialStatus": {
"enum": [
"pending",
"paid",
"failed",
"refunded",
"partiallyRefunded"
],
"type": "string",
"description": "OrderFinancialStatus"
}
}
}Find Replo-managed products for catalog, product-page, or checkout work. These are separate from products managed by Shopify or other integrations. If no Replo-managed products are found, tell the user they can connect Shopify from the Replo dashboard.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query | string | |
| cursor | string | |
| projectId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
},
"query": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"cursor": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Retrieve a Replo session's current status, latest response, tool activity, errors, and pending interactions (permission requests and questions). Use to check progress after starting or continuing a session. When pendingInteractions is non-empty, show it to the user and wait for their answer, then pass it to resolve_agent_interaction: a choice takes one option value as the decision; a form takes one answers array per step.
| Argument | Type | Description |
|---|---|---|
| sessionId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sessionId"
],
"properties": {
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Read the selected project's saved business information, overviews, colors, fonts, logo marks, and personas. Returns null when no brand exists. Makes no changes and does not start an agent session.
| Argument | Type | Description |
|---|---|---|
| projectId* | string | The project whose saved brand to read. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The project whose saved brand to read."
}
}
}Diagnose a connected custom domain by inspecting its activation state and required DNS records.
| Argument | Type | Description |
|---|---|---|
| customDomainId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"customDomainId"
],
"properties": {
"customDomainId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Retrieve metadata for an existing Files document or folder by fileId.
| Argument | Type | Description |
|---|---|---|
| fileId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"fileId"
],
"properties": {
"fileId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Read an existing report's definition, formulas, SQL, data sources, permissions, and resolved default scope. Accepts a report ID from list_insights_reports or the final UUID in an Insights URL. This returns the definition, not executed data. Call query_insights_report for data and explain the results directly to the user.
| Argument | Type | Description |
|---|---|---|
| reportId* | string | Report file ID from list_insights_reports, or the final UUID in its Insights URL. |
| projectId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId",
"reportId"
],
"properties": {
"reportId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Report file ID from list_insights_reports, or the final UUID in its Insights URL."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Check one integration's connection status in the selected Replo project. Returns connected, not_connected, or needs_reconnect, along with a dashboard URL for setup when available. externalAnalytics lists supported SQL views and their maximum cache age, not proof the connection can fetch metrics. Check this before querying external metrics, including when a provider's tools are absent from your catalog. Analytics integration keys include triple-whale, contentsquare, intelligems, google-analytics, google-search-console, shopify, and converge. connectFailureMessage explains a failed connection attempt. isAlwaysAvailable identifies a built-in integration; isSettingsManaged identifies setup in integration settings. This tool does not connect an account or change permissions.
| Argument | Type | Description |
|---|---|---|
| projectId* | string | Replo project id, from list_projects. |
| integrationKey* | string | Integration to check, e.g. "figma" or "shopify". |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"integrationKey",
"projectId"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects."
},
"integrationKey": {
"type": "string",
"description": "Integration to check, e.g. \"figma\" or \"shopify\"."
}
}
}Inspect the public record of one storefront order: line items, fulfillment, refunds, and event history. The customer's contact address is masked (`j••••@example.com`) and no payment identifiers are returned. Money amounts are integers in the currency's minor units (Stripe convention: 2500 = $25.00 USD, 1999 = ¥1999 JPY), paired with the order's currencyCode.
| Argument | Type | Description |
|---|---|---|
| orderId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"orderId"
],
"properties": {
"orderId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}The workspace's current Replo plan, and the Starter and Pro plans' monthly prices and what each adds in Sightglass (sales and traffic estimates, trends, more brand research). Use it when a result names a locked field or a higher plan, or the user asks about upgrading.
| Argument | Type | Description |
|---|---|---|
| workspaceId* | string | Replo workspace id, from list_workspaces. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId"
],
"properties": {
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces."
}
}
}Retrieve the current public catalog details for a specific Replo-managed product.
| Argument | Type | Description |
|---|---|---|
| productId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"productId"
],
"properties": {
"productId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Read one Replo project's settings: name, time zone, currency, support email, and checkoutProvider ('shopify' means Shopify Checkout, 'replo' means Replo checkout, null means checkout is off). Check checkoutProvider before promising Shopify checkout or when a Shopify-connected site's Checkout button fails: connecting Shopify does not switch it.
| Argument | Type | Description |
|---|---|---|
| projectId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Inspect the schedule and current timing of a specific recurring Replo task.
| Argument | Type | Description |
|---|---|---|
| taskId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"taskId"
],
"properties": {
"taskId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}List private working documents and folders in a project. Omit parentId for My Files. Assets are a separate media library.
| Argument | Type | Description |
|---|---|---|
| kind | string | |
| limit | integer | |
| cursor | string | |
| parentId | string | |
| projectId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId"
],
"properties": {
"kind": {
"enum": [
"file",
"folder"
],
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
},
"cursor": {
"type": "string",
"maxLength": 2048,
"minLength": 1
},
"parentId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Discover accessible private, team-shared, and individually shared Insights reports in a project. Follow nextOffset until null, even after an empty page. If no relevant report exists, use query_replo_analytics to answer the question directly; a saved report is not required. Use get_insights_report for definitions and query_insights_report for current results.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| offset | integer | |
| search | string | Case-insensitive report filename search. |
| projectId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId"
],
"properties": {
"limit": {
"type": "integer",
"default": 25,
"maximum": 50,
"minimum": 1
},
"offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0
},
"search": {
"type": "string",
"maxLength": 200,
"description": "Case-insensitive report filename search."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}List accessible Replo projects, optionally within one workspace. Use to resolve the project for the user's Replo request. Returns paginated projects or setup_required with eligible workspaces when project creation is available. Listing does not create a project. Follow next_cursor when more results are needed.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| cursor | string | |
| workspaceId | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
},
"cursor": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Find the Replo site to inspect, manage, or clone within a project. Each site returns clone_url, the URL used to clone that site's code over Git, and is_default. When the user does not name a site, use the site with is_default true; if no site is default, ask which one to use. Results are paginated: follow next_cursor until has_more is false before concluding a site does not exist. Site names are dashboard labels, not SEO page titles.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| cursor | string | |
| projectId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
},
"cursor": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}List scheduled Replo tasks in a project.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| cursor | string | |
| projectId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"exclusiveMinimum": 0
},
"cursor": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}The user's Replo workspaces with each one's plan (free, starter or pro). Call right after sign-in: use the only workspace, or ask the user once which to use when there are several, then pass its id as workspaceId on Sightglass calls. Also use it when the user wants to switch workspaces.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Publish a site to make changes live. Requires the siteId from list_sites. Builds, packages, uploads, and deploys.
| Argument | Type | Description |
|---|---|---|
| siteId* | string | The ID of the site to publish. Get this from list_sites. The tool finds the site's folder on disk itself, so there is nothing else to look up. |
| promoteRoutes | array | Routes whose unpublished edits go live in this publish — pages and content entries alike, e.g. ["/", "/about", "/blog/my-post"] (a content entry's route is /<collection>/<slug>). Omit to publish every page and entry with changes. Pass [] to publish only site-wide changes and leave every page and entry draft as it is. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"siteId"
],
"properties": {
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The ID of the site to publish. Get this from list_sites. The tool finds the site's folder on disk itself, so there is nothing else to look up."
},
"promoteRoutes": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\/[^\\s\\x00-\\x1f\\x7f]*$",
"maxLength": 500,
"minLength": 1
},
"maxItems": 200,
"description": "Routes whose unpublished edits go live in this publish — pages and content entries alike, e.g. [\"/\", \"/about\", \"/blog/my-post\"] (a content entry's route is /<collection>/<slug>). Omit to publish every page and entry with changes. Pass [] to publish only site-wide changes and leave every page and entry draft as it is."
}
}
}Execute saved report queries using the same formulas and scope compiler as the Insights UI. Optionally override dates, comparison, filters, or breakdown. Returns structured rows and individual query errors. Check integration status for external sources; missing data is not measured zero. Use these results to answer questions or create a native artifact with create_artifact. Reading or querying does not create a report or artifact.
| Argument | Type | Description |
|---|---|---|
| scope | object | Override selected report defaults. Filters replace the default filter list; omitted fields retain the report's defaults. |
| queryIds | array | Query IDs from get_insights_report. Omit to run all queries (at most 30 per call). |
| reportId* | string | Report file ID from list_insights_reports, or the final UUID in its Insights URL. |
| projectId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId",
"reportId"
],
"properties": {
"scope": {
"type": "object",
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"fieldKey",
"op"
],
"properties": {
"op": {
"enum": [
"equals",
"notEquals",
"in",
"notIn",
"contains",
"notContains",
"startsWith",
"isSet",
"isNotSet",
"greaterThan",
"greaterThanOrEqual",
"lessThan",
"lessThanOrEqual"
],
"type": "string"
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
},
{
"type": "null"
}
]
},
"fieldKey": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"isProjectDefault": {
"type": "boolean",
"const": true,
"description": "Marks an automatically seeded project domain, not a viewer selection."
}
}
},
"maxItems": 20
},
"breakdown": {
"anyOf": [
{
"type": "object",
"required": [
"fieldKey"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"exclusiveMinimum": 0
},
"fieldKey": {
"type": "string",
"maxLength": 120,
"minLength": 1
}
}
},
{
"type": "null"
}
]
},
"dateRange": {
"anyOf": [
{
"type": "object",
"required": [
"presetId",
"since",
"until",
"comparison"
],
"properties": {
"since": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"until": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"presetId": {
"enum": [
"last_7_days",
"last_14_days",
"last_30_days",
"last_90_days",
"last_16_months",
"this_week",
"last_week",
"this_month",
"last_month",
"year_to_date",
"custom"
],
"type": "string"
},
"comparison": {
"enum": [
"previous_period",
"previous_year",
"none"
],
"type": "string"
}
}
},
{
"type": "null"
}
]
}
},
"description": "Override selected report defaults. Filters replace the default filter list; omitted fields retain the report's defaults.",
"additionalProperties": false
},
"queryIds": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 30,
"minItems": 1,
"description": "Query IDs from get_insights_report. Omit to run all queries (at most 30 per call)."
},
"reportId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Report file ID from list_insights_reports, or the final UUID in its Insights URL."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Run read-only ClickHouse SQL over a project's Replo analytics for traffic, conversion, revenue, and session-level questions. No saved Insights report is required. Use this for ad hoc questions or when list_insights_reports finds no relevant report; an empty report list does not mean analytics are unavailable. Queryable public tables are session_attribution, events_computed, currency_exchange_rates, daily_page_rollups, daily_namespace_rollups, and daily_namespace_purchase_rollups. Only SELECT/WITH queries are accepted, and project-scoped tables are automatically restricted to the requested project and its authorized same-workspace, same-store siblings. For table columns, query examples, and limits, see the Replo Public API analytics query docs. Also supports connected external metrics through the parameterized views listed in the query input schema. Check get_integration_status before querying; external data can be cached for eight hours and an empty result does not prove zero activity. Use provider tools for discovery or provider-native reports.
| Argument | Type | Description |
|---|---|---|
| query* | string | Run a read-only analytics query for a project. Rules: - Use SELECT or WITH queries only. - Do not add project or namespace filters; project scoping is enforced server-side. - Use session_attribution(since, until) for cross-project session and attributed revenue; stored computed metrics and page rollups are project-local. - Session revenue repeats across visited pages: deduplicate by subject for totals. Attributed revenue splits credit across eligible pageviews before domain filters. - Aggregate-state rollup columns must use the matching ClickHouse merge function, such as countMerge, uniqMerge, or sumMerge, and queries must group by selected dimensions. - Maximum execution time: 60 seconds. - Maximum result rows: 100000. Queryable tables: Parameterized view: session_attribution(since='YYYY-MM-DD', until='YYYY-MM-DD'), inclusive UTC dates. Computes USD purchase, session, and equal-pageview attributed revenue across authorized sibling projects within that window, before domain filters. Cart/checkout views receive no attribution. Deduplicate sessionRevenueUsd by subject before summing. Inherits source row policies. Project scoped: yes. ```sql session_attribution ( subject UUID, date DateTime64(3), name LowCardinality(String), domain String, path String, title String, purchaseRevenueUsd Float64, sessionRevenueUsd Float64, sessionPurchaseCount UInt64, attributedRevenueUsd Float64 ) ``` Raw events with project-local computed session metrics. Use session_attribution for revenue across linked projects. Project scoped: yes. ```sql events_computed ( subject UUID, date DateTime64(3), name LowCardinality(String), path String, domain String, currencyCode String, subjectPurchaseSum Float64, subjectPurchaseCount Float64, subjectPurchaseFraction Float64, subjectPurchaseFractionalSum Float64, title String ) ``` Currency exchange rates for multi-currency reporting. Project scoped: no. ```sql currency_exchange_rates ( date Date, code String, rate Float32 ) ``` Pre-aggregated daily page metrics by day, domain, path, and UTM source. Revenue/conversion attribution is project-local; use session_attribution across linked projects. Project scoped: yes. ```sql daily_page_rollups ( day Date, domain String, path String, utm_source String, views_state AggregateFunction(count), unique_sessions_state AggregateFunction(uniq, UUID), converting_sessions_state AggregateFunction(uniq, UUID), fractional_conversions_state AggregateFunction(sum, Float64), fractional_revenue_usd_state AggregateFunction(sum, Float64), session_conversions_state AggregateFunction(sum, UInt64), session_revenue_usd_state AggregateFunction(sum, Float64) ) ``` Pre-aggregated daily project traffic metrics by day and UTM source. Project scoped: yes. ```sql daily_namespace_rollups ( day Date, utm_source String, views_state AggregateFunction(count), unique_sessions_state AggregateFunction(uniq, UUID), converting_sessions_state AggregateFunction(uniq, UUID) ) ``` Pre-aggregated daily purchase metrics by day and UTM source. Project scoped: yes. ```sql daily_namespace_purchase_rollups ( day Date, utm_source String, purchase_count_state AggregateFunction(count), total_revenue_usd_state AggregateFunction(sum, Float64), unique_purchasing_sessions_state AggregateFunction(uniq, UUID) ) ``` External metrics (OAuth MCP and public API keys): Parameterized views: triplewhale_metrics_daily, triplewhale_metrics_totals, triplewhale_metrics_list, contentsquare_metrics_daily, contentsquare_metrics_totals, contentsquare_metrics_list, mixpanel_metrics_daily, mixpanel_metrics_totals, mixpanel_metrics_list, intelligems_metrics_daily, intelligems_metrics_totals, intelligems_metrics_list, intelligems_experience_metrics_daily, intelligems_experience_metrics_totals, intelligems_experience_metrics_list, replo_roi_monthly, shopify_sales_monthly, google_analytics_report, google_search_console_report. Use named since/until dates (YYYY-MM-DD, inclusive). Google report and ROI views also require settings JSON; Intelligems experience views require experience_id. Credentials and project scope are injected server-side: never supply auth_token or project_id. In MCP, call get_integration_status first for connection IDs, setup links, and supported views. Missing or misconfigured integrations can return zero rows: do not report that as measured zero activity. Use provider-specific tools for metric/property discovery and detailed provider-native reports. External results can be cached for up to eight hours. GA4 and Search Console report views cap provider results at 10,000 rows; narrow dates or dimensions if exceeded. Match currencies, reporting timezones, and attribution definitions before combining sources. |
Read complete small UTF-8 documents in Files, or obtain a temporary download URL for binary and larger files.
| Argument | Type | Description |
|---|---|---|
| fileId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"fileId"
],
"properties": {
"fileId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Report a credible user-reported or directly observed Replo defect, including API, MCP, or documentation defects. Pass projectId from list_projects. Include expected/actual behavior, reported or performed reproSteps, retry/workaround outcomes, and observed errors or request IDs in errorContext. Mark unknowns; never invent evidence, root cause, or severity. Exclude ordinary bad arguments, missing configuration, and fixable site-code mistakes. Omit credentials and unrelated customer data. Files feedback with Replo's team; continue helping with the user's task. Do not resubmit the same report after success.
| Argument | Type | Description |
|---|---|---|
| title* | string | Short headline describing the broken behavior. |
| projectId* | string | Project ID from list_projects. |
| reproSteps* | string | Numbered reported or performed steps, labeled by source, with expected/actual behavior. State when unavailable; never invent reproduction. |
| description* | string | Attempted task, expected/actual behavior, impact, retries/workarounds, and recurrence. Distinguish reported from observed facts; mark unknowns without guessing severity or cause. |
| errorContext | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"description",
"reproSteps",
"projectId"
],
"properties": {
"title": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Short headline describing the broken behavior."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Project ID from list_projects."
},
"reproSteps": {
"type": "string",
"maxLength": 10000,
"minLength": 1,
"description": "Numbered reported or performed steps, labeled by source, with expected/actual behavior. State when unavailable; never invent reproduction."
},
"description": {
"type": "string",
"maxLength": 10000,
"minLength": 1,
"description": "Attempted task, expected/actual behavior, impact, retries/workarounds, and recurrence. Distinguish reported from observed facts; mark unknowns without guessing severity or cause."
},
"errorContext": {
"type": "string",
"maxLength": 10000,
"minLength": 1
}
}
}Resolve one pending Replo agent interaction with the user's explicit answer. For a permission request, pass type permission and the decision from its response options. For a question, pass type question and one answers array per form step, in order, holding the selected option values, or the user's own text only where that step's allowCustom is true; an empty array skips a step. Never infer an answer. Approving or answering resumes the agent, which can then overwrite or delete content, publish, or write to an external service. Returns the updated session status; an interaction that is no longer pending returns an error and nothing is delivered, so call get_agent_session again.
| Argument | Type | Description |
|---|---|---|
| type* | string | The interaction's type from pendingInteractions. |
| answers | array | For a question: one array per form step, in order. |
| decision | string | For a permission: the user's selected option value from its response contract. |
| sessionId* | string | |
| interactionId* | string | The id copied from get_agent_session.pendingInteractions after the user answers using that interaction's response contract. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sessionId",
"interactionId",
"type"
],
"properties": {
"type": {
"enum": [
"permission",
"question"
],
"type": "string",
"description": "The interaction's type from pendingInteractions."
},
"answers": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string",
"maxLength": 16000
},
"maxItems": 100
},
"minItems": 1,
"description": "For a question: one array per form step, in order."
},
"decision": {
"enum": [
"approve",
"reject"
],
"type": "string",
"description": "For a permission: the user's selected option value from its response contract."
},
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"interactionId": {
"type": "string",
"minLength": 1,
"description": "The id copied from get_agent_session.pendingInteractions after the user answers using that interaction's response contract."
}
}
}Disable a public shared preview link using the id returned by create_shared_preview. Only its creator with current project access or a workspace admin can revoke it. Repeating the request succeeds; page content is preserved. Revoke only the link the user requested.
| Argument | Type | Description |
|---|---|---|
| sharedPreviewId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sharedPreviewId"
],
"properties": {
"sharedPreviewId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Set stock counts and stock policy for a Replo-managed product's variants, addressing each variant by its option-value combination (empty optionValues for a product with no options). available is an absolute count, not a delta. Turning on trackInventory without an available count leaves the variant unsellable until a count exists — set both together. Only products the merchant fulfills themselves can track stock; print-on-demand and digital variants are made to order and will be refused.
| Argument | Type | Description |
|---|---|---|
| variants* | array | |
| productId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"productId",
"variants"
],
"properties": {
"variants": {
"type": "array",
"items": {
"type": "object",
"required": [
"optionValues"
],
"properties": {
"available": {
"type": "integer",
"maximum": 2147483647,
"minimum": 0
},
"optionValues": {
"type": "array",
"items": {
"type": "object",
"required": [
"optionName",
"value"
],
"properties": {
"value": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Value within that option, e.g. \"Navy\"."
},
"optionName": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Option name, e.g. \"Color\"."
}
}
}
},
"trackInventory": {
"type": "boolean"
},
"continueSellingWhenOutOfStock": {
"type": "boolean"
}
},
"additionalProperties": false
},
"maxItems": 250,
"minItems": 1
},
"productId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Place personas, ads, landing pages or companies (brands) on one or two 'this vs that' axes, the same map the user sees in Sightglass Arena. Each item gets a position per axis from 0 (most like the low end) to 100 (most like the high end), relative to the items returned, plus the raw similarity. Use a lens for the preset pairs (who it's for, why they buy, price and style, occasion) or pass your own axes, e.g. [{low: 'Minimal', high: 'Maximal'}]; omit high and the opposite is chosen for you. The user's own company and Brand Studio personas are included and marked isYou. Use it to answer 'where do we sit against these brands' or 'which buyers are nobody's focus'. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again.
| Argument | Type | Description |
|---|---|---|
| axes | array | One or two axes; overrides lens |
| kind* | string | What to place: personas, ads, pages (landing pages) or companies |
| lens | string | A preset pair of axes: who (Beginner↔Expert × Solo↔Social), why (Feeling↔Logic × Need↔Treat), price (Cheap↔Premium × Classic↔Modern), occasion (Everyday↔Special occasion × Solo↔Social). Ignored when axes is given |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
Copy one ad creative's image from Sightglass into the Replo project's Assets, so it can be used as a reference in the project. Takes the `creative.id` of an ad, not the ad's own id. Returns the asset's id and URL; copying the same creative again returns the existing asset.
| Argument | Type | Description |
|---|---|---|
| projectId* | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| creativeId* | string | An ad's `creative.id`, not the ad's own id. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"creativeId",
"projectId"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"creativeId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "An ad's `creative.id`, not the ad's own id."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}Create a named board in the user's Sightglass collection. A board holds one kind of item: ad, site_page (landing pages), company (brands) or persona. Returns the board and its id.
| Argument | Type | Description |
|---|---|---|
| kind* | string | What the board holds; a board takes one kind of item. |
| name* | string | |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"kind"
],
"properties": {
"kind": {
"enum": [
"company",
"ad",
"site_page",
"persona"
],
"type": "string",
"description": "What the board holds; a board takes one kind of item."
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}Delete one of the user's Sightglass boards and everything saved on it. This cannot be undone, so only call it when the user asked for this board to be deleted.
| Argument | Type | Description |
|---|---|---|
| boardId* | string | |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"boardId"
],
"properties": {
"boardId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}Search a library of real Meta ads and the landing pages they drive to. `search` is a semantic vector search, so describe the ad's angle, offer or visual style rather than one keyword. Combine it with companyIds, displayFormats, pageTypes and technologies to narrow, and with hookTypes, angleTypes, offerTags and funnelStages to filter on what the ad's creative was read as (each ad carries these in `tags`, null until it is read). Users say 'brands' for advertisers and 'landing pages' for site pages — map their words onto these filters. performanceScore and scoreTiers come from a transparent longevity + duplication heuristic; they are NOT spend, reach or ROAS and must never be presented as such. Returns metadata plus ready-to-view media URLs; call sightglass_get_ad for one ad's full detail, sightglass_get_site_page for the page an ad drives to. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again. Works without a Replo account: call it before asking the user to sign in.
| Argument | Type | Description |
|---|---|---|
| sort | string | |
| limit | integer | Results per page: 20 by default, up to 40. Use the user's number when they give one; for more than 40, page with cursor. |
| cursor | string | nextCursor from the previous page of this same call, to get the next page. Keep every other argument the same. |
A brand's angles: the pitch each ad leans on, for whom; offers sit on top. Each angle has a type (problem/solution, proof, founder story…), a short name for the idea, the newest headline hook, the persona it speaks to (a segment nickname, the buyer's situation in their words, an age range when the ad shows one, and awareness stage from unaware to most-aware), the product, how many ads (and live ads) and landing pages use it, when it was first and last seen, and the offers the same ads carried. Most used first. Use it to answer 'how does this brand sell' or to compare two brands' messaging. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again.
| Argument | Type | Description |
|---|---|---|
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| companyRef* | string | Company id or slug. Users call companies 'brands'. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"companyRef"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"companyRef": {
"type": "string",
"minLength": 1,
"description": "Company id or slug. Users call companies 'brands'."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}A brand's offer campaigns: what deal it ran (discount, bundle, free gift…), in plain English, from when to when, how deep, on how many ads and landing pages, with the exact quote it was read from. Grouped from the brand's ads and page captures; a deepening discount (5% → 10%) is one campaign with steps. Use it to answer 'what is this brand running' or to compare two brands' promotions. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again.
| Argument | Type | Description |
|---|---|---|
| to | string | YYYY-MM-DD; defaults to a week ahead |
| from | string | YYYY-MM-DD; defaults to six weeks back |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| companyRef* | string | Company id or slug. Users call companies 'brands'. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
Offer campaigns across brands. With no companyRefs, `mode` is 'top': the offers running across every tracked brand in the trailing window, sorted by how many ads carry them, how long they have run, or how deep the discount is. With companyRefs, `mode` is 'calendar': those brands' campaigns in a date window, side by side, for comparing promo timing. Use it for 'what offers are working in this market' and 'when do these brands run sales'. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again.
| Argument | Type | Description |
|---|---|---|
| to | string | Calendar only. YYYY-MM-DD; defaults to a week ahead |
| days | integer | Top offers only. Trailing window; defaults to 30. |
| from | string | Calendar only. YYYY-MM-DD; defaults to six weeks back |
| sort | string | Top offers only. ads = most ads carrying it, running = longest running, depth = deepest discount. |
| limit | integer | |
| projectId | string |
A brand's customer personas: who it markets to, their age range and awareness stage, with the angles and offers aimed at each. Each persona is a segment nickname, the buyer's situation in their words, its share of the brand's ads, how many ads and landing pages speak to it, and its top angles and offers. Empty until the brand has enough ads and pages read. Use it to answer 'who is this brand selling to' or to compare two brands' audiences. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again.
| Argument | Type | Description |
|---|---|---|
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| companyRef* | string | Company id or slug. Users call companies 'brands'. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"companyRef"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"companyRef": {
"type": "string",
"minLength": 1,
"description": "Company id or slug. Users call companies 'brands'."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}Find destination pages ads drive to — what users call 'landing pages'. Filter by pageTypes (offer_page, advertorial, listicle, quiz, lead_capture, homepage, pdp, collection, blog, marketplace, app_store, social_profile) and by the technologies detected on the site, e.g. Shopify or Klaviyo. `search` is semantic over the page's title and description. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again. Works without a Replo account: call it before asking the user to sign in.
| Argument | Type | Description |
|---|---|---|
| sort | string | |
| limit | integer | Results per page: 20 by default, up to 40. Use the user's number when they give one; for more than 40, page with cursor. |
| cursor | string | nextCursor from the previous page of this same call, to get the next page. Keep every other argument the same. |
| search | string | |
| domains | string | CSV of site domains |
| pageTypes | string |
The technology directory: the apps and vendors detected on tracked brands' sites (Shopify, Klaviyo, Recharge…), ranked by how many brands use each and how those brands are doing. Pass `slug` for one technology's adopter stats and its category peers. To list the brands or ads behind a technology, pass its name as `technologies` to sightglass_find_ads or sightglass_find_site_pages. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again. Works without a Replo account: call it before asking the user to sign in.
| Argument | Type | Description |
|---|---|---|
| slug | string | One technology's slug from an earlier result: returns its adopter stats and peers instead of the directory. |
| sort | string | |
| limit | integer | |
| search | string | |
| category | string | App category as the fingerprinter labels it, e.g. email-sms |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
The angles in use across every tracked brand in the trailing window: the same shape as sightglass_find_angles, with the brand on each. Filter by angle type, the age band or awareness stage of the persona it speaks to, and sort by ads, landing pages or newest. Use it for 'what pitches are brands using on this audience' and to find an angle nobody is running. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again.
| Argument | Type | Description |
|---|---|---|
| days | integer | |
| sort | string | SightglassTopAnglesSort |
| type | string | SightglassAngleType |
| limit | integer | |
| ageBand | string | SightglassAgeBand |
| awareness | string | ProjectPersonaAwareness |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
Set the brands the user follows in Sightglass. companyIds replaces the whole list, so read the current one with sightglass_list_saved (kind=following) and include the ones to keep. Followed brands feed the user's home view and offer calendar.
| Argument | Type | Description |
|---|---|---|
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| companyIds* | array | The full list of company ids to follow; it replaces the current list, so include the ones to keep. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"companyIds"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"companyIds": {
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"maxItems": 200,
"description": "The full list of company ids to follow; it replaces the current list, so include the ones to keep."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}What the user's Replo plan includes in Sightglass: the plan name, row caps per list, whether sales and traffic estimates are included, the history and trend windows, and how many new-brand researches are used and left this month. Call it when a result comes back with locked fields and the user asks why, or before sightglass_research_company.
| Argument | Type | Description |
|---|---|---|
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}Fetch one ad in full: copy, creative caption, duplication facts, its destination landing page, and presigned media URLs you can pull into context to look at the creative itself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again.
| Argument | Type | Description |
|---|---|---|
| adId* | string | |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"adId"
],
"properties": {
"adId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}One company's full profile plus its six nearest competitors. Use the id or slug from sightglass_search_companies, or the `companySlug` on an ad's advertiser. Includes the category breadcrumb, every Meta page the company runs, grade mix, and the Momentum components. Call sightglass_get_company_activity for its trend and launch history. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again. Works without a Replo account: call it before asking the user to sign in.
| Argument | Type | Description |
|---|---|---|
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| companyRef* | string | Company id or slug. Users call companies 'brands'. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"companyRef"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"companyRef": {
"type": "string",
"minLength": 1,
"description": "Company id or slug. Users call companies 'brands'."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}How one brand's advertising has moved: its daily active-ad trend, ads launched per week, how long its ads stay live (longevity buckets), and the technology stack on its site with when each tool was first seen. Use it for 'is this brand scaling up or pulling back' and 'what did they change'. The trend window and the launch and longevity charts depend on the plan. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again.
| Argument | Type | Description |
|---|---|---|
| days | integer | Trend window in days; defaults to 90. Capped by the plan. |
| weeks | integer | Weeks of launches; defaults to 26. |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| companyRef* | string | Company id or slug. Users call companies 'brands'. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
The market view: who holds what share of active ads, week by week. `pulse` is the headline numbers for the scope (brands, active ads, launches, video and advertorial share). `share` is the weekly share of the top groups, grouped by company (default), category, platform, country or plan. `categories` lists the categories under the scope so you can drill in with categoryId; with a categoryId, `leaders` is that category's top companies. Share is share of ads Sightglass has seen, not spend or revenue. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again. Works without a Replo account: call it before asking the user to sign in.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| weeks | integer | |
| groupBy | string | What to rank by share of active ads: company (default), category, platform, country or plan. |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| categoryId | string | Scope to one category's subtree; ids come from the `categories` in this tool's result. With a category, `leaders` lists its top companies. |
Fetch one landing page in full: desktop, mobile and pre-popup screenshots as viewable URLs, the site's detected technology stack, its traffic estimates, and how many live ads point at it. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again.
| Argument | Type | Description |
|---|---|---|
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| sitePageId* | string | |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sitePageId"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"sitePageId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}How one landing page changed over time: its dated captures, newest first, each with a screenshot and the offers read from it. Use it for 'what did they change on this page' and to see when an offer appeared or deepened. The window depends on the plan. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again.
| Argument | Type | Description |
|---|---|---|
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| sitePageId* | string | |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"sitePageId"
],
"properties": {
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"sitePageId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}Read an X-ray. Pass requestId to poll a grade started with sightglass_xray (a finished request is billed when first read). Pass adId or sitePageId to read the grade itself: scores, findings and fixes, as far as the workspace has unlocked it. A target nobody has graded returns its summary with the grade locked; offer to run sightglass_xray. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again.
| Argument | Type | Description |
|---|---|---|
| adId | string | Grade this ad together with its landing page, as a funnel. |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| requestId | string | A request id from sightglass_xray: returns its status. Pass this instead of a target while a grade is running. |
| sitePageId | string | Grade this landing page alone. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"adId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Grade this ad together with its landing page, as a funnel."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"requestId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "A request id from sightglass_xray: returns its status. Pass this instead of a target while a grade is running."
},
"sitePageId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Grade this landing page alone."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}What the user has collected in Sightglass. Returns up to 100 boards with nextBoardCursor for more; pass boardCursor to continue. With no `kind` it adds a count summary; with `kind` it lists saved ads, landing pages (site_pages), companies or followed brands. Pass nextCursor as cursor for the next page of items. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself.
| Argument | Type | Description |
|---|---|---|
| kind | string | Which saved items to list. Omit for just the boards and a count summary. |
| limit | integer | Results per page: 20 by default, up to 40. Use the user's number when they give one; for more than 40, page with cursor. |
| cursor | string | nextCursor from the previous page of this same call, to get the next page. Keep every other argument the same. |
| boardId | string | Limit to one board; ids come from `boards` in this result. |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| boardCursor | string | Pass nextBoardCursor from a prior result to list more boards. |
| workspaceId | string |
Find or add a company by website domain and queue background research into its ads, landing pages, store details, and technologies. Newly tracked companies consume one monthly research allowance when research is dispatched. Already tracked companies do not consume another allowance. Results populate asynchronously. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again.
| Argument | Type | Description |
|---|---|---|
| domain* | string | The brand's website domain, e.g. gruns.co |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"maxLength": 255,
"minLength": 3,
"description": "The brand's website domain, e.g. gruns.co"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}Search Sightglass companies — what users call brands: the business behind one or more Meta advertiser pages, keyed on its domain. `search` is semantic, so describe the business (what it sells and to whom). Pass `similarToCompanyId` to find a company's nearest competitors instead. To look a brand up by its website pass `domainSearch`; when that finds nothing the brand is not tracked yet, so read its site or use the user's words, write one sentence on what it sells and to whom, and pass that as `search`: the results are tracked brands competing for the same customers. Each result carries store facts (platform, estimated monthly sales, products, employees, follower counts with 30-day change — all vendor estimates, never reported revenue), rank and rank movement by active ads, and `momentum`: a transparent 0-100 score whose `components[].text` say why a brand is growing (ad launches vs last month, active-ad change, follower growth, catalog activity, stack upgrades). Sort by `momentum` for who is blowing up, `most_estimated_sales` for the biggest, `most_active_ads` for who is spending. Trends come from ad start/stop dates and only cover ads Sightglass has seen. Fields the user's Replo plan doesn't include come back null and are named in that item's `locked` list (`estimates` = sales, visits and traffic); `lockedCount` is how many more results a higher plan shows. Say the data is on a higher plan; never estimate it yourself. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again. Works without a Replo account: call it before asking the user to sign in.
| Argument | Type | Description |
|---|---|---|
| sort | string | |
| limit | integer | Results per page: 20 by default, up to 40. Use the user's number when they give one; for more than 40, page with cursor. |
Show a prior Sightglass result to the user as an inline card, in hosts that draw cards. Call it once, after the data call that answered the user's question, with that call's resultId. This call returns the stored result without searching again or spending credits. Skip it for empty results. Where the host draws the card, the user already sees every item: do not restate them as a list or a table, write two or three sentences on what stands out. Where no card appears, the user has not seen the items, so summarize the ones that answer the question.
| Argument | Type | Description |
|---|---|---|
| resultId* | string | resultId from the Sightglass call whose results answer the user's question, or from its sign_in_required result. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"resultId"
],
"properties": {
"resultId": {
"type": "string",
"maxLength": 100,
"description": "resultId from the Sightglass call whose results answer the user's question, or from its sign_in_required result."
}
}
}Rename one of the user's Sightglass boards.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| boardId* | string | |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"boardId",
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"boardId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}Start an X-ray: a graded teardown of one ad (with its landing page, as a funnel) or one landing page, scored against what works in its category. Pass exactly one of adId or sitePageId. This spends the workspace's Replo credits (the model cost, or one credit when a grade already exists), so only call it when the user asked for a grade. It returns a request; poll sightglass_get_xray with its id every few seconds until it finishes, then read the grade with the same target. Returns data only: nothing is shown to the user yet. Once you know the answer, call sightglass_show once with this call's resultId to show it as cards; the show call does not search again.
| Argument | Type | Description |
|---|---|---|
| adId | string | Grade this ad together with its landing page, as a funnel. |
| projectId* | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| sitePageId | string | Grade this landing page alone. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId"
],
"properties": {
"adId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Grade this ad together with its landing page, as a funnel."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"sitePageId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Grade this landing page alone."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}Start buying a Replo plan for a free workspace. Returns { status, url, message }: status checkout means url is a Stripe Checkout link for the user to open and pay, and nothing is charged until they finish there. status manage_in_dashboard means url is the workspace's billing settings, for a workspace that already has a plan or can't buy this one from chat; chat never changes an existing subscription. Share the url either way. Call only after the user chose the plan, usually from get_plan_options.
| Argument | Type | Description |
|---|---|---|
| plan* | string | The plan to buy: starter or pro. |
| interval | string | Billing interval; monthly only from chat. |
| workspaceId* | string | Replo workspace id, from list_workspaces. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"workspaceId",
"plan"
],
"properties": {
"plan": {
"enum": [
"starter",
"pro"
],
"type": "string",
"description": "The plan to buy: starter or pro."
},
"interval": {
"enum": [
"month"
],
"type": "string",
"default": "month",
"description": "Billing interval; monthly only from chat."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces."
}
}
}Submit a feature request to Replo when the user asks to send feedback about a missing capability. Provide the projectId, a short title, and a concise description of the requested capability. Do not include conversation transcripts, verbatim messages, message references, credentials, or unrelated personal or customer data. Creates one feedback record for Replo's team; retries after success create duplicates.
| Argument | Type | Description |
|---|---|---|
| title* | string | Short headline for the feature request. |
| projectId* | string | Project ID from list_projects. |
| description* | string | Concise description of the requested Replo capability. Exclude conversation history, verbatim messages, message references, credentials, and unrelated personal or customer data. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"description",
"projectId"
],
"properties": {
"title": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Short headline for the feature request."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Project ID from list_projects."
},
"description": {
"type": "string",
"maxLength": 10000,
"minLength": 1,
"description": "Concise description of the requested Replo capability. Exclude conversation history, verbatim messages, message references, credentials, and unrelated personal or customer data."
}
}
}Rename or move an entry within its project. Set parentId to null to move it to My Files. Existing content is preserved; conflicts never overwrite.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| fileId* | string | |
| parentId | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"fileId"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"fileId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"parentId": {
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
}
}
}Change the current catalog details of a Replo-managed product. Null values clear nullable fields.
| Argument | Type | Description |
|---|---|---|
| slug | any | |
| title | string | |
| status | string | |
| productId* | string | |
| description | any | |
| externalCheckoutUrl | any |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"productId"
],
"properties": {
"slug": {
"anyOf": [
{
"type": "string",
"maxLength": 1024,
"minLength": 1
},
{
"type": "null"
}
]
},
"title": {
"type": "string",
"maxLength": 1024,
"minLength": 1
},
"status": {
"enum": [
"active",
"archived",
"draft"
],
"type": "string"
},
"productId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 10000
},
{
"type": "null"
}
]
},
"externalCheckoutUrl": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
}
}
}Update the supplied settings of a Replo project: name, time zone, currency, support email, or checkoutProvider. Changing checkoutProvider affects checkout on the project's sites after publication; Shopify checkout requires a connected store and Replo checkout requires payments onboarding. Publishing is a separate action.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| currency | string | Currency |
| timeZone | string | |
| projectId* | string | |
| supportEmail | any | |
| checkoutProvider | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId"
],
"properties": {
"name": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"currency": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "Currency"
},
"timeZone": {
"type": "string",
"maxLength": 64,
"minLength": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"supportEmail": {
"anyOf": [
{
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
{
"type": "null"
}
]
},
"checkoutProvider": {
"enum": [
"shopify",
"replo"
],
"type": "string"
}
}
}Rename a Replo site's dashboard display name. This does not change its SEO page title or published page content.
| Argument | Type | Description |
|---|---|---|
| name | string | |
| siteId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"siteId"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}Update site-wide SEO title, description, social preview, favicon references, or search visibility in the selected site's root layout. Does not rename the dashboard label. Starts an asynchronous internal-agent operation; poll get_agent_session. For corrections, call this same tool with its sessionId and unchanged target. Requires a provisioned site. Source edits may execute in its preview. The Replo agent uses its normal tools and connected integrations to implement and verify the requested changes. Use publish_site separately to make changes public.
| Argument | Type | Description |
|---|---|---|
| siteId* | string | Site ID from list_sites. |
| sessionId | string | Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected. |
| instructions* | string | Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"siteId",
"instructions"
],
"properties": {
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Site ID from list_sites."
},
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected."
},
"instructions": {
"type": "string",
"maxLength": 7500,
"minLength": 1,
"description": "Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data."
}
}
}Update the selected site's shared navigation, header, or footer in its layout and shared components. Shared component changes affect all pages using them. Starts an asynchronous internal-agent operation; poll get_agent_session. For corrections, call this same tool with its sessionId and unchanged target. Requires a provisioned site. Source edits may execute in its preview. The Replo agent uses its normal tools and connected integrations to implement and verify the requested changes. Use publish_site separately to make changes public.
| Argument | Type | Description |
|---|---|---|
| siteId* | string | Site ID from list_sites. |
| sessionId | string | Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected. |
| instructions* | string | Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"siteId",
"instructions"
],
"properties": {
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Site ID from list_sites."
},
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected."
},
"instructions": {
"type": "string",
"maxLength": 7500,
"minLength": 1,
"description": "Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data."
}
}
}Add, change, or remove a user-requested analytics or marketing script in the selected site's root layout. Name the provider, identifiers, and requested behavior. After publication, the script may send visitor data to that provider. Starts an asynchronous internal-agent operation; poll get_agent_session. For corrections, call this same tool with its sessionId and unchanged target. Requires a provisioned site. Source edits may execute in its preview. The Replo agent uses its normal tools and connected integrations to implement and verify the requested changes. Use publish_site separately to make changes public.
| Argument | Type | Description |
|---|---|---|
| siteId* | string | Site ID from list_sites. |
| sessionId | string | Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected. |
| instructions* | string | Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"siteId",
"instructions"
],
"properties": {
"siteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Site ID from list_sites."
},
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected."
},
"instructions": {
"type": "string",
"maxLength": 7500,
"minLength": 1,
"description": "Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data."
}
}
}Import a file or publicly accessible URL into a project's asset library. Replo generates a semantic-search embedding by default.
| Argument | Type | Description |
|---|---|---|
| url | string | |
| name | string | |
| tags | array | |
| altText | string | |
| assetFile | object | |
| projectId* | string | |
| generateEmbedding | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId"
],
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"tags": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 32
},
"altText": {
"type": "string",
"maxLength": 255
},
"assetFile": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"minLength": 1
},
"file_name": {
"type": "string",
"minLength": 1
},
"mime_type": {
"type": "string",
"minLength": 1
},
"download_url": {
"type": "string",
"format": "uri"
}
},
"additionalProperties": false
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"generateEmbedding": {
"type": "boolean"
}
}
}Check DNS for a pending or stale custom domain and activate it when records have propagated. If verification cannot complete yet, the tool returns the current domain status instead of failing.
| Argument | Type | Description |
|---|---|---|
| customDomainId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"customDomainId"
],
"properties": {
"customDomainId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId",
"instructions",
"operationId"
],
"properties": {
"sources": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"type",
"reportId"
],
"properties": {
"type": {
"type": "string",
"const": "insightsReport"
},
"scope": {
"type": "object",
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"fieldKey",
"op"
],
"properties": {
"op": {
"enum": [
"equals",
"notEquals",
"in",
"notIn",
"contains",
"notContains",
"startsWith",
"isSet",
"isNotSet",
"greaterThan",
"greaterThanOrEqual",
"lessThan",
"lessThanOrEqual"
],
"type": "string"
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
},
{
"type": "null"
}
]
},
"fieldKey": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"isProjectDefault": {
"type": "boolean",
"const": true,
"description": "Marks an automatically seeded project domain, not a viewer selection."
}
}
},
"maxItems": 20
},
"breakdown": {
"anyOf": [
{
"type": "object",
"required": [
"fieldKey"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"exclusiveMinimum": 0
},
"fieldKey": {
"type": "string",
"maxLength": 120,
"minLength": 1
}
}
},
{
"type": "null"
}
]
},
"dateRange": {
"anyOf": [
{
"type": "object",
"required": [
"presetId",
"since",
"until",
"comparison"
],
"properties": {
"since": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"until": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"presetId": {
"enum": [
"last_7_days",
"last_14_days",
"last_30_days",
"last_90_days",
"last_16_months",
"this_week",
"last_week",
"this_month",
"last_month",
"year_to_date",
"custom"
],
"type": "string"
},
"comparison": {
"enum": [
"previous_period",
"previous_year",
"none"
],
"type": "string"
}
}
},
{
"type": "null"
}
]
}
},
"description": "Override selected report defaults. Filters replace the default filter list; omitted fields retain the report's defaults.",
"additionalProperties": false
},
"reportId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"query"
],
"properties": {
"type": {
"type": "string",
"const": "analytics"
},
"query": {
"type": "string",
"maxLength": 50000,
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"fileId"
],
"properties": {
"type": {
"type": "string",
"const": "file"
},
"fileId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"additionalProperties": false
}
]
},
"default": [],
"maxItems": 10,
"description": "Optional existing reports, analytics SQL, or Files documents. The agent reads and queries these sources. For standalone artifacts, omit sources and provide instructions."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected."
},
"operationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Generate a fresh UUID for each new instruction. Reuse it with identical arguments on a retry to avoid duplicate work."
},
"instructions": {
"type": "string",
"maxLength": 7500,
"minLength": 1,
"description": "Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId",
"instructions",
"operationId"
],
"properties": {
"sources": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"type",
"reportId"
],
"properties": {
"type": {
"type": "string",
"const": "insightsReport"
},
"scope": {
"type": "object",
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"fieldKey",
"op"
],
"properties": {
"op": {
"enum": [
"equals",
"notEquals",
"in",
"notIn",
"contains",
"notContains",
"startsWith",
"isSet",
"isNotSet",
"greaterThan",
"greaterThanOrEqual",
"lessThan",
"lessThanOrEqual"
],
"type": "string"
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
},
{
"type": "null"
}
]
},
"fieldKey": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"isProjectDefault": {
"type": "boolean",
"const": true,
"description": "Marks an automatically seeded project domain, not a viewer selection."
}
}
},
"maxItems": 20
},
"breakdown": {
"anyOf": [
{
"type": "object",
"required": [
"fieldKey"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"exclusiveMinimum": 0
},
"fieldKey": {
"type": "string",
"maxLength": 120,
"minLength": 1
}
}
},
{
"type": "null"
}
]
},
"dateRange": {
"anyOf": [
{
"type": "object",
"required": [
"presetId",
"since",
"until",
"comparison"
],
"properties": {
"since": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"until": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"presetId": {
"enum": [
"last_7_days",
"last_14_days",
"last_30_days",
"last_90_days",
"last_16_months",
"this_week",
"last_week",
"this_month",
"last_month",
"year_to_date",
"custom"
],
"type": "string"
},
"comparison": {
"enum": [
"previous_period",
"previous_year",
"none"
],
"type": "string"
}
}
},
{
"type": "null"
}
]
}
},
"description": "Override selected report defaults. Filters replace the default filter list; omitted fields retain the report's defaults.",
"additionalProperties": false
},
"reportId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"query"
],
"properties": {
"type": {
"type": "string",
"const": "analytics"
},
"query": {
"type": "string",
"maxLength": 50000,
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"fileId"
],
"properties": {
"type": {
"type": "string",
"const": "file"
},
"fileId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"additionalProperties": false
}
]
},
"default": [],
"maxItems": 10,
"description": "Optional existing reports, analytics SQL, or Files documents. The agent reads and queries these sources. For standalone artifacts, omit sources and provide instructions."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected."
},
"operationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Generate a fresh UUID for each new instruction. Reuse it with identical arguments on a retry to avoid duplicate work."
},
"instructions": {
"type": "string",
"maxLength": 7500,
"minLength": 1,
"description": "Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId",
"instructions",
"operationId",
"fileId"
],
"properties": {
"fileId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The existing report file ID or artifact folder ID."
},
"sources": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"type",
"reportId"
],
"properties": {
"type": {
"type": "string",
"const": "insightsReport"
},
"scope": {
"type": "object",
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"fieldKey",
"op"
],
"properties": {
"op": {
"enum": [
"equals",
"notEquals",
"in",
"notIn",
"contains",
"notContains",
"startsWith",
"isSet",
"isNotSet",
"greaterThan",
"greaterThanOrEqual",
"lessThan",
"lessThanOrEqual"
],
"type": "string"
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
},
{
"type": "null"
}
]
},
"fieldKey": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"isProjectDefault": {
"type": "boolean",
"const": true,
"description": "Marks an automatically seeded project domain, not a viewer selection."
}
}
},
"maxItems": 20
},
"breakdown": {
"anyOf": [
{
"type": "object",
"required": [
"fieldKey"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"exclusiveMinimum": 0
},
"fieldKey": {
"type": "string",
"maxLength": 120,
"minLength": 1
}
}
},
{
"type": "null"
}
]
},
"dateRange": {
"anyOf": [
{
"type": "object",
"required": [
"presetId",
"since",
"until",
"comparison"
],
"properties": {
"since": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"until": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"presetId": {
"enum": [
"last_7_days",
"last_14_days",
"last_30_days",
"last_90_days",
"last_16_months",
"this_week",
"last_week",
"this_month",
"last_month",
"year_to_date",
"custom"
],
"type": "string"
},
"comparison": {
"enum": [
"previous_period",
"previous_year",
"none"
],
"type": "string"
}
}
},
{
"type": "null"
}
]
}
},
"description": "Override selected report defaults. Filters replace the default filter list; omitted fields retain the report's defaults.",
"additionalProperties": false
},
"reportId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"query"
],
"properties": {
"type": {
"type": "string",
"const": "analytics"
},
"query": {
"type": "string",
"maxLength": 50000,
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"fileId"
],
"properties": {
"type": {
"type": "string",
"const": "file"
},
"fileId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"additionalProperties": false
}
]
},
"default": [],
"maxItems": 10,
"description": "Optional existing reports, analytics SQL, or Files documents. The agent reads and queries these sources. For standalone artifacts, omit sources and provide instructions."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected."
},
"operationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Generate a fresh UUID for each new instruction. Reuse it with identical arguments on a retry to avoid duplicate work."
},
"instructions": {
"type": "string",
"maxLength": 7500,
"minLength": 1,
"description": "Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId",
"instructions",
"operationId",
"fileId"
],
"properties": {
"fileId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The existing report file ID or artifact folder ID."
},
"sources": {
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"required": [
"type",
"reportId"
],
"properties": {
"type": {
"type": "string",
"const": "insightsReport"
},
"scope": {
"type": "object",
"properties": {
"filters": {
"type": "array",
"items": {
"type": "object",
"required": [
"fieldKey",
"op"
],
"properties": {
"op": {
"enum": [
"equals",
"notEquals",
"in",
"notIn",
"contains",
"notContains",
"startsWith",
"isSet",
"isNotSet",
"greaterThan",
"greaterThanOrEqual",
"lessThan",
"lessThanOrEqual"
],
"type": "string"
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
},
{
"type": "null"
}
]
},
"fieldKey": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"isProjectDefault": {
"type": "boolean",
"const": true,
"description": "Marks an automatically seeded project domain, not a viewer selection."
}
}
},
"maxItems": 20
},
"breakdown": {
"anyOf": [
{
"type": "object",
"required": [
"fieldKey"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 200,
"exclusiveMinimum": 0
},
"fieldKey": {
"type": "string",
"maxLength": 120,
"minLength": 1
}
}
},
{
"type": "null"
}
]
},
"dateRange": {
"anyOf": [
{
"type": "object",
"required": [
"presetId",
"since",
"until",
"comparison"
],
"properties": {
"since": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"until": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"presetId": {
"enum": [
"last_7_days",
"last_14_days",
"last_30_days",
"last_90_days",
"last_16_months",
"this_week",
"last_week",
"this_month",
"last_month",
"year_to_date",
"custom"
],
"type": "string"
},
"comparison": {
"enum": [
"previous_period",
"previous_year",
"none"
],
"type": "string"
}
}
},
{
"type": "null"
}
]
}
},
"description": "Override selected report defaults. Filters replace the default filter list; omitted fields retain the report's defaults.",
"additionalProperties": false
},
"reportId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"query"
],
"properties": {
"type": {
"type": "string",
"const": "analytics"
},
"query": {
"type": "string",
"maxLength": 50000,
"minLength": 1
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"type",
"fileId"
],
"properties": {
"type": {
"type": "string",
"const": "file"
},
"fileId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"additionalProperties": false
}
]
},
"default": [],
"maxItems": 10,
"description": "Optional existing reports, analytics SQL, or Files documents. The agent reads and queries these sources. For standalone artifacts, omit sources and provide instructions."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"sessionId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Omit to start this operation. To continue, supply the returned sessionId with the same operation and target; mismatches and legacy sessions are rejected."
},
"operationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Generate a fresh UUID for each new instruction. Reuse it with identical arguments on a retry to avoid duplicate work."
},
"instructions": {
"type": "string",
"maxLength": 7500,
"minLength": 1,
"description": "Requested changes for this operation only. Include necessary references, not conversation history, credentials, or unrelated personal data."
}
}
}| projectId* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"projectId",
"query"
],
"properties": {
"query": {
"type": "string",
"minLength": 1,
"description": "Run a read-only analytics query for a project.\n\nRules:\n- Use SELECT or WITH queries only.\n- Do not add project or namespace filters; project scoping is enforced server-side.\n- Use session_attribution(since, until) for cross-project session and attributed revenue; stored computed metrics and page rollups are project-local.\n- Session revenue repeats across visited pages: deduplicate by subject for totals. Attributed revenue splits credit across eligible pageviews before domain filters.\n- Aggregate-state rollup columns must use the matching ClickHouse merge function, such as countMerge, uniqMerge, or sumMerge, and queries must group by selected dimensions.\n- Maximum execution time: 60 seconds.\n- Maximum result rows: 100000.\n\nQueryable tables:\nParameterized view: session_attribution(since='YYYY-MM-DD', until='YYYY-MM-DD'), inclusive UTC dates. Computes USD purchase, session, and equal-pageview attributed revenue across authorized sibling projects within that window, before domain filters. Cart/checkout views receive no attribution. Deduplicate sessionRevenueUsd by subject before summing. Inherits source row policies. Project scoped: yes.\n```sql\nsession_attribution (\n subject UUID,\n date DateTime64(3),\n name LowCardinality(String),\n domain String,\n path String,\n title String,\n purchaseRevenueUsd Float64,\n sessionRevenueUsd Float64,\n sessionPurchaseCount UInt64,\n attributedRevenueUsd Float64\n)\n```\n\nRaw events with project-local computed session metrics. Use session_attribution for revenue across linked projects. Project scoped: yes.\n```sql\nevents_computed (\n subject UUID,\n date DateTime64(3),\n name LowCardinality(String),\n path String,\n domain String,\n currencyCode String,\n subjectPurchaseSum Float64,\n subjectPurchaseCount Float64,\n subjectPurchaseFraction Float64,\n subjectPurchaseFractionalSum Float64,\n title String\n)\n```\n\nCurrency exchange rates for multi-currency reporting. Project scoped: no.\n```sql\ncurrency_exchange_rates (\n date Date,\n code String,\n rate Float32\n)\n```\n\nPre-aggregated daily page metrics by day, domain, path, and UTM source. Revenue/conversion attribution is project-local; use session_attribution across linked projects. Project scoped: yes.\n```sql\ndaily_page_rollups (\n day Date,\n domain String,\n path String,\n utm_source String,\n views_state AggregateFunction(count),\n unique_sessions_state AggregateFunction(uniq, UUID),\n converting_sessions_state AggregateFunction(uniq, UUID),\n fractional_conversions_state AggregateFunction(sum, Float64),\n fractional_revenue_usd_state AggregateFunction(sum, Float64),\n session_conversions_state AggregateFunction(sum, UInt64),\n session_revenue_usd_state AggregateFunction(sum, Float64)\n)\n```\n\nPre-aggregated daily project traffic metrics by day and UTM source. Project scoped: yes.\n```sql\ndaily_namespace_rollups (\n day Date,\n utm_source String,\n views_state AggregateFunction(count),\n unique_sessions_state AggregateFunction(uniq, UUID),\n converting_sessions_state AggregateFunction(uniq, UUID)\n)\n```\n\nPre-aggregated daily purchase metrics by day and UTM source. Project scoped: yes.\n```sql\ndaily_namespace_purchase_rollups (\n day Date,\n utm_source String,\n purchase_count_state AggregateFunction(count),\n total_revenue_usd_state AggregateFunction(sum, Float64),\n unique_purchasing_sessions_state AggregateFunction(uniq, UUID)\n)\n```\n\nExternal metrics (OAuth MCP and public API keys):\nParameterized views: triplewhale_metrics_daily, triplewhale_metrics_totals, triplewhale_metrics_list, contentsquare_metrics_daily, contentsquare_metrics_totals, contentsquare_metrics_list, mixpanel_metrics_daily, mixpanel_metrics_totals, mixpanel_metrics_list, intelligems_metrics_daily, intelligems_metrics_totals, intelligems_metrics_list, intelligems_experience_metrics_daily, intelligems_experience_metrics_totals, intelligems_experience_metrics_list, replo_roi_monthly, shopify_sales_monthly, google_analytics_report, google_search_console_report.\nUse named since/until dates (YYYY-MM-DD, inclusive). Google report and ROI views also require settings JSON; Intelligems experience views require experience_id. Credentials and project scope are injected server-side: never supply auth_token or project_id.\nIn MCP, call get_integration_status first for connection IDs, setup links, and supported views. Missing or misconfigured integrations can return zero rows: do not report that as measured zero activity. Use provider-specific tools for metric/property discovery and detailed provider-native reports.\nExternal results can be cached for up to eight hours. GA4 and Search Console report views cap provider results at 10,000 rows; narrow dates or dimensions if exceeded. Match currencies, reporting timezones, and attribution definitions before combining sources."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
}
}| companyRefs | array | Company ids or slugs to compare; omit for the top companies. The project's own company is always added |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"kind"
],
"properties": {
"axes": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"axis"
],
"properties": {
"axis": {
"enum": [
"Beginner",
"Solo",
"Feeling",
"Need",
"Cheap",
"Classic",
"Everyday"
],
"type": "string",
"description": "A built-in axis, named by its low end: Beginner (↔ Expert), Solo (↔ Social), Feeling (↔ Logic), Need (↔ Treat), Cheap (↔ Premium), Classic (↔ Modern), Everyday (↔ Special occasion)"
}
}
},
{
"type": "object",
"required": [
"low"
],
"properties": {
"low": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The low end in a word or two"
},
"high": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "The high end; omit and the model names the opposite"
}
}
}
]
},
"maxItems": 2,
"minItems": 1,
"description": "One or two axes; overrides lens"
},
"kind": {
"enum": [
"personas",
"ads",
"pages",
"companies"
],
"type": "string",
"description": "What to place: personas, ads, pages (landing pages) or companies"
},
"lens": {
"enum": [
"who",
"why",
"price",
"occasion"
],
"type": "string",
"description": "A preset pair of axes: who (Beginner↔Expert × Solo↔Social), why (Feeling↔Logic × Need↔Treat), price (Cheap↔Premium × Classic↔Modern), occasion (Everyday↔Special occasion × Solo↔Social). Ignored when axes is given"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"companyRefs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 20,
"description": "Company ids or slugs to compare; omit for the top companies. The project's own company is always added"
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}| search |
| string |
| Semantic search over the ad's copy, creative caption and advertiser. Describe the angle, offer or visual style you want (for example 'before and after skin results with a discount code'), not a single keyword. |
| status | string |
| hookTypes | string | CSV of hook types: question,bold_claim,problem_callout,curiosity,proof_number,before_after,first_person_story,offer_first,us_vs_them,demo,audience_callout,contrarian,customer_testimonial,expert_or_celebrity,new_or_launch,product_showcase |
| offerTags | string | CSV of offer tags: discount,bundle,subscription,trial_or_sample,gift_with_purchase,financing,free_shipping,giveaway |
| pageTypes | string | CSV of landing-page types: offer_page,advertorial,listicle,quiz,lead_capture,homepage,pdp,collection,blog,marketplace,app_store,social_profile. The stored names product, squeeze and other still work. |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| angleTypes | string | CSV of angle types: problem_solution,mechanism,proof,comparison,identity,founder_story,objection_handling,urgency,education,transformation,price_or_value,quality_or_craft,clean_or_non_toxic,convenience,gifting,sustainability |
| companyIds | string | CSV of company ids. Users usually call companies 'brands'. |
| scoreTiers | string | CSV of testing,scaling,growing,optimized,winning. These tiers come from a transparent longevity + duplication heuristic — they are NOT spend, reach or ROAS, and must never be described as such. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
| funnelStages | string | CSV of funnel stages: cold,warm,retargeting |
| technologies | string | CSV of stack names on the brand's site, e.g. Shopify,Klaviyo |
| displayFormats | string | CSV of image,video,carousel,dco,dpa,text,other |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"newest",
"longest_running",
"performance",
"most_duplicated"
],
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 40,
"minimum": 1,
"description": "Results per page: 20 by default, up to 40. Use the user's number when they give one; for more than 40, page with cursor."
},
"cursor": {
"type": "string",
"maxLength": 1000,
"description": "nextCursor from the previous page of this same call, to get the next page. Keep every other argument the same."
},
"search": {
"type": "string",
"maxLength": 200,
"description": "Semantic search over the ad's copy, creative caption and advertiser. Describe the angle, offer or visual style you want (for example 'before and after skin results with a discount code'), not a single keyword."
},
"status": {
"enum": [
"active",
"inactive"
],
"type": "string"
},
"hookTypes": {
"type": "string",
"description": "CSV of hook types: question,bold_claim,problem_callout,curiosity,proof_number,before_after,first_person_story,offer_first,us_vs_them,demo,audience_callout,contrarian,customer_testimonial,expert_or_celebrity,new_or_launch,product_showcase"
},
"offerTags": {
"type": "string",
"description": "CSV of offer tags: discount,bundle,subscription,trial_or_sample,gift_with_purchase,financing,free_shipping,giveaway"
},
"pageTypes": {
"type": "string",
"description": "CSV of landing-page types: offer_page,advertorial,listicle,quiz,lead_capture,homepage,pdp,collection,blog,marketplace,app_store,social_profile. The stored names product, squeeze and other still work."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"angleTypes": {
"type": "string",
"description": "CSV of angle types: problem_solution,mechanism,proof,comparison,identity,founder_story,objection_handling,urgency,education,transformation,price_or_value,quality_or_craft,clean_or_non_toxic,convenience,gifting,sustainability"
},
"companyIds": {
"type": "string",
"description": "CSV of company ids. Users usually call companies 'brands'."
},
"scoreTiers": {
"type": "string",
"description": "CSV of testing,scaling,growing,optimized,winning. These tiers come from a transparent longevity + duplication heuristic — they are NOT spend, reach or ROAS, and must never be described as such."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
},
"funnelStages": {
"type": "string",
"description": "CSV of funnel stages: cold,warm,retargeting"
},
"technologies": {
"type": "string",
"description": "CSV of stack names on the brand's site, e.g. Shopify,Klaviyo"
},
"displayFormats": {
"type": "string",
"description": "CSV of image,video,carousel,dco,dpa,text,other"
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"companyRef"
],
"properties": {
"to": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "YYYY-MM-DD; defaults to a week ahead"
},
"from": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "YYYY-MM-DD; defaults to six weeks back"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"companyRef": {
"type": "string",
"minLength": 1,
"description": "Company id or slug. Users call companies 'brands'."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}| Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| companyRefs | array | Company ids or slugs: returns the promo calendar for these brands. Omit for the top offers across every tracked brand. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"to": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Calendar only. YYYY-MM-DD; defaults to a week ahead"
},
"days": {
"type": "integer",
"maximum": 365,
"minimum": 7,
"description": "Top offers only. Trailing window; defaults to 30."
},
"from": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Calendar only. YYYY-MM-DD; defaults to six weeks back"
},
"sort": {
"enum": [
"ads",
"running",
"depth"
],
"type": "string",
"description": "Top offers only. ads = most ads carrying it, running = longest running, depth = deepest discount."
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"companyRefs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 50,
"description": "Company ids or slugs: returns the promo calendar for these brands. Omit for the top offers across every tracked brand."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}| CSV of landing-page types: offer_page,advertorial,listicle,quiz,lead_capture,homepage,pdp,collection,blog,marketplace,app_store,social_profile. The stored names product, squeeze and other still work. |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
| technologies | string | CSV of technology names |
| activeAdsCountGte | integer |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"newest",
"most_ads"
],
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 40,
"minimum": 1,
"description": "Results per page: 20 by default, up to 40. Use the user's number when they give one; for more than 40, page with cursor."
},
"cursor": {
"type": "string",
"maxLength": 1000,
"description": "nextCursor from the previous page of this same call, to get the next page. Keep every other argument the same."
},
"search": {
"type": "string",
"maxLength": 200
},
"domains": {
"type": "string",
"description": "CSV of site domains"
},
"pageTypes": {
"type": "string",
"description": "CSV of landing-page types: offer_page,advertorial,listicle,quiz,lead_capture,homepage,pdp,collection,blog,marketplace,app_store,social_profile. The stored names product, squeeze and other still work."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
},
"technologies": {
"type": "string",
"description": "CSV of technology names"
},
"activeAdsCountGte": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"description": "One technology's slug from an earlier result: returns its adopter stats and peers instead of the directory."
},
"sort": {
"enum": [
"most_companies",
"top_100_share",
"adopter_momentum",
"adopter_ad_growth",
"name"
],
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 40,
"minimum": 1
},
"search": {
"type": "string",
"maxLength": 200
},
"category": {
"type": "string",
"description": "App category as the fingerprinter labels it, e.g. email-sms"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 7
},
"sort": {
"enum": [
"ads",
"pages",
"newest"
],
"type": "string",
"description": "SightglassTopAnglesSort"
},
"type": {
"enum": [
"problem_solution",
"mechanism",
"proof",
"comparison",
"identity",
"founder_story",
"objection_handling",
"urgency",
"education",
"transformation",
"price_or_value",
"quality_or_craft",
"clean_or_non_toxic",
"convenience",
"gifting",
"sustainability"
],
"type": "string",
"description": "SightglassAngleType"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"ageBand": {
"enum": [
"18_24",
"25_34",
"35_44",
"45_54",
"55_plus",
"any"
],
"type": "string",
"description": "SightglassAgeBand"
},
"awareness": {
"enum": [
"unaware",
"problem",
"solution",
"product",
"most"
],
"type": "string",
"description": "ProjectPersonaAwareness"
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"companyRef"
],
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 7,
"description": "Trend window in days; defaults to 90. Capped by the plan."
},
"weeks": {
"type": "integer",
"maximum": 52,
"minimum": 4,
"description": "Weeks of launches; defaults to 26."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"companyRef": {
"type": "string",
"minLength": 1,
"description": "Company id or slug. Users call companies 'brands'."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 15,
"minimum": 3
},
"weeks": {
"type": "integer",
"maximum": 52,
"minimum": 4
},
"groupBy": {
"enum": [
"category",
"platform",
"country",
"plan",
"company"
],
"type": "string",
"description": "What to rank by share of active ads: company (default), category, platform, country or plan."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"categoryId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Scope to one category's subtree; ids come from the `categories` in this tool's result. With a category, `leaders` lists its top companies."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}| Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"kind": {
"enum": [
"ads",
"site_pages",
"companies",
"following"
],
"type": "string",
"description": "Which saved items to list. Omit for just the boards and a count summary."
},
"limit": {
"type": "integer",
"maximum": 40,
"minimum": 1,
"description": "Results per page: 20 by default, up to 40. Use the user's number when they give one; for more than 40, page with cursor."
},
"cursor": {
"type": "string",
"maxLength": 1000,
"description": "nextCursor from the previous page of this same call, to get the next page. Keep every other argument the same."
},
"boardId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Limit to one board; ids come from `boards` in this result."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"boardCursor": {
"type": "string",
"description": "Pass nextBoardCursor from a prior result to list more boards."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
}
}
}| cursor | string | nextCursor from the previous page of this same call, to get the next page. Keep every other argument the same. |
| search | string | Semantic by default: describe the business (what it sells, to whom), not one keyword. |
| projectId | string | Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies. |
| searchMode | string |
| categoryIds | string | CSV of category ids from sightglass_search_companies results; a node matches its whole subtree. |
| workspaceId | string | Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace. |
| domainSearch | string | A brand's website, e.g. example.com or a full URL, to find that brand when Sightglass tracks it. |
| activeAdsCountGte | integer |
| similarToCompanyId | string | Find the nearest competitors of this company instead of searching. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"sort": {
"enum": [
"most_active_ads",
"ad_growth_7d",
"ad_growth_30d",
"most_launched",
"most_launched_7d",
"most_top_grade_ads",
"most_estimated_sales",
"momentum",
"newest",
"name"
],
"type": "string"
},
"limit": {
"type": "integer",
"maximum": 40,
"minimum": 1,
"description": "Results per page: 20 by default, up to 40. Use the user's number when they give one; for more than 40, page with cursor."
},
"cursor": {
"type": "string",
"maxLength": 1000,
"description": "nextCursor from the previous page of this same call, to get the next page. Keep every other argument the same."
},
"search": {
"type": "string",
"maxLength": 200,
"description": "Semantic by default: describe the business (what it sells, to whom), not one keyword."
},
"projectId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo project id, from list_projects: where the charge or the asset lands. Its workspace's plan applies."
},
"searchMode": {
"enum": [
"hybrid",
"text",
"semantic"
],
"type": "string"
},
"categoryIds": {
"type": "string",
"description": "CSV of category ids from sightglass_search_companies results; a node matches its whole subtree."
},
"workspaceId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Replo workspace id, from list_workspaces. Sets which workspace's plan applies; required when the user has more than one workspace."
},
"domainSearch": {
"type": "string",
"maxLength": 200,
"description": "A brand's website, e.g. example.com or a full URL, to find that brand when Sightglass tracks it."
},
"activeAdsCountGte": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
"similarToCompanyId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Find the nearest competitors of this company instead of searching."
}
}
}