Skip to main content
Glama

Space Monkey Mailchimp Dashboard

Get sync run detail

sm_get_sync_run
Read-onlyIdempotent

Load one sync run's full detail — per-stage results, progress, lookback window and pending batch count. Use after sm_list_sync_runs to explain why data is stale or a run failed. Failure detail lands in one of two places and rarely both: orchestration failures set run.errorMessage with no stage rows, while per-data-type failures leave it null and record the message on results[].errorMessage, so check both and treat status as the failure signal.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
runIdYesThe opaque 8-character hash ID correlating to the sync run.
projectIdYesRequired. The opaque alphanumeric project identifier of 8 or more characters to scope this request to. Call GET /_api/public/v1/enterprise/projects to list the project IDs available to your API key. Omitting it returns 400 VALIDATION_ERROR.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
runNoDetails for a specific sync run. Omits projectName, retryCount, resultsCount, and totalTables carried by the list row.
codeNoA machine-readable identifier for the error type. For the full code taxonomy, see the sm_get_schema tool or the Enterprise API OpenAPI ErrorResponse component.
errorNoA human-readable error message detailing what went wrong.
resultsNoPer-stage results for the sync run.
progressNoPer-data-type progress rows for the sync run.
projectIdNoAn opaque alphanumeric project identifier of 8 or more characters identifying a Space Monkey Project. Treat this value as entirely opaque; do not parse, sequentialize, or auto-generate it.
pendingBatchCountNoNumber of batches still queued for processing.
lookbackWindowDaysNoNumber of days of history the sync covers.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed24 schema fields changed
    • changedOutput schema / description
      Previous value: -"Output for the sm_get_sync_run tool. Failure payloads arrive in the same envelope as { error, message, code }."New value: +"Output for the sm_get_sync_run tool. Failure payloads arrive in the same envelope as { error, code }."
    • addedOutput schema / properties / lookbackWindowDays / description
      Added value: +"Number of days of history the sync covers."
    • addedOutput schema / properties / pendingBatchCount / description
      Added value: +"Number of batches still queued for processing."
    • addedOutput schema / properties / progress / description
      Added value: +"Per-data-type progress rows for the sync run."
    • addedOutput schema / properties / progress / items / properties / currentPage / description
      Added value: +"Current pagination offset."
    • addedOutput schema / properties / progress / items / properties / dataType / description
      Added value: +"Data type for the progress row."
    • addedOutput schema / properties / progress / items / properties / listsCompleted / description
      Added value: +"Lists fully processed."
    • addedOutput schema / properties / progress / items / properties / recordsProcessed / description
      Added value: +"Records processed."
    • addedOutput schema / properties / progress / items / properties / recordsSkipped / description
      Added value: +"Records skipped."
    • addedOutput schema / properties / progress / items / properties / recordsWritten / description
      Added value: +"Records written."
    • addedOutput schema / properties / progress / items / properties / totalLists / description
      Added value: +"Total lists in scope, or null."
    • addedOutput schema / properties / progress / items / properties / totalRecords / description
      Added value: +"Total records, or null."
    • addedOutput schema / properties / results / description
      Added value: +"Per-stage results for the sync run."
    • addedOutput schema / properties / results / items / properties / durationSeconds / description
      Added value: +"Stage duration, or null."
    • addedOutput schema / properties / results / items / properties / errorMessage / description
      Added value: +"Stage failure detail, or null."
    • addedOutput schema / properties / results / items / properties / finalTableRowCount / description
      Added value: +"Final table row count, or null."
    • addedOutput schema / properties / results / items / properties / recordsSkipped / description
      Added value: +"Records skipped in the stage, or null."
    • addedOutput schema / properties / results / items / properties / recordsWritten / description
      Added value: +"Records written in the stage, or null."
    • addedOutput schema / properties / results / items / properties / totalRecords / description
      Added value: +"Records in the stage, or null."
    • addedOutput schema / properties / run / properties / errorMessage / description
      Added value: +"Failure detail, or null on success."
    • addedOutput schema / properties / run / properties / id / description
      Added value: +"Identifier for the sync run."
    • addedOutput schema / properties / run / properties / projectId / description
      Added value: +"Project the run belongs to."
    • addedOutput schema / properties / run / properties / status / description
      Added value: +"Run status, for example queued, running, completed, or failed."
    • addedOutput schema / properties / run / properties / triggerType / description
      Added value: +"What initiated the run."
  2. Changed3 schema fields changed
    • addedInput schema / properties / projectId / description
      Added value: +"Required. The opaque alphanumeric project identifier of 8 or more characters to scope this request to. Call GET /_api/public/v1/enterprise/projects to list the project IDs available to your API key. Omitting it returns 400 VALIDATION_ERROR."
    • addedInput schema / properties / runId / description
      Added value: +"The opaque 8-character hash ID correlating to the sync run."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "Output for the sm_get_sync_run tool. Failure payloads arrive in the same envelope as { error, message, code }.",
      +  "properties": {
      +    "code": {
      +      "description": "A machine-readable identifier for the error type. For the full code taxonomy, see the sm_get_schema tool or the Enterprise API OpenAPI ErrorResponse component.",
      +      "type": "string"
      +    },
      +    "error": {
      +      "description": "A human-readable error message detailing what went wrong.",
      +      "type": "string"
      +    },
      +    "lookbackWindowDays": {
      +      "type": "integer"
      +    },
      +    "pendingBatchCount": {
      +      "type": "integer"
      +    },
      +    "progress": {
      +      "items": {
      +        "additionalProperties": true,
      +        "description": "In-flight progress for a sync run. Rows exist only during an active sync.",
      +        "properties": {
      +          "currentPage": {
      +            "type": "integer"
      +          },
      +          "currentPhase": {
      +            "description": "Free text phase description, not an enum.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "dataType": {
      +            "type": "string"
      +          },
      +          "listsCompleted": {
      +            "type": "integer"
      +          },
      +          "recordsProcessed": {
      +            "type": "integer"
      +          },
      +          "recordsSkipped": {
      +            "type": "integer"
      +          },
      +          "recordsWritten": {
      +            "type": "integer"
      +          },
      +          "startedAt": {
      +            "description": "ISO 8601 UTC timestamp.",
      +            "type": "string"
      +          },
      +          "totalLists": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "totalRecords": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "updatedAt": {
      +            "description": "ISO 8601 UTC timestamp.",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "projectId": {
      +      "description": "An opaque alphanumeric project identifier of 8 or more characters identifying a Space Monkey Project. Treat this value as entirely opaque; do not parse, sequentialize, or auto-generate it.",
      +      "type": "string"
      +    },
      +    "results": {
      +      "items": {
      +        "additionalProperties": true,
      +        "description": "Result row for a specific data type in a sync run. The row's `id` is deliberately dropped by the endpoint, making `dataType` the distinguishing key.",
      +        "properties": {
      +          "dataType": {
      +            "description": "Free-form varchar (not an enum). Observed values: automations, campaign_reports, campaigns, email_activities, lists, member_activities, members, reports, segments, tags.",
      +            "type": "string"
      +          },
      +          "durationSeconds": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "errorMessage": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "finalTableRowCount": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "recordsSkipped": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "recordsWritten": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "totalRecords": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "run": {
      +      "additionalProperties": true,
      +      "description": "Details for a specific sync run. Omits projectName, retryCount, resultsCount, and totalTables carried by the list row.",
      +      "properties": {
      +        "createdAt": {
      +          "description": "ISO 8601 UTC timestamp.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "endedAt": {
      +          "description": "ISO 8601 UTC timestamp.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "errorMessage": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "projectId": {
      +          "type": "string"
      +        },
      +        "startedAt": {
      +          "description": "ISO 8601 UTC timestamp.",
      +          "type": "string"
      +        },
      +        "status": {
      +          "enum": [
      +            "queued",
      +            "pending",
      +            "running",
      +            "paused",
      +            "success",
      +            "partial",
      +            "failed",
      +            "cancelled"
      +          ],
      +          "type": "string"
      +        },
      +        "triggerType": {
      +          "enum": [
      +            "manual",
      +            "scheduled"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a safe, idempotent read, but the description goes well beyond them by disclosing the two distinct failure-recording paths (orchestration errors in run.errorMessage with null results, per-data-type errors in results[].errorMessage with null run.errorMessage) and instructing the agent to treat status as the failure signal. This is the kind of non-obvious behavior that prevents misdiagnosis.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, zero filler, and the core purpose leads. The longest sentence carries genuinely load-bearing failure-mode guidance rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be re-explained; the description instead supplies the interpretation guidance the output schema can't (how to read errorMessage across two locations). Nothing an agent needs to call and correctly interpret this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage on both required parameters, the schema already documents runId and projectId fully. The description adds no syntax, format, or constraint detail for the parameters themselves, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Load) and resource (one sync run's full detail), then enumerates exactly what the payload contains (per-stage results, progress, lookback window, pending batch count). It also names sm_list_sync_runs, so an agent can place it relative to its closest sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly prescribes the workflow: 'Use after sm_list_sync_runs to explain why data is stale or a run failed.' Both the predecessor tool and the diagnostic intent are stated, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources