Skip to main content
Glama

Request a connector sync

well_request_sync
Idempotent

Ask Well to sync one installation now, instead of at its usual time. Call it only when a read returned fresh_enough: false for an installation source, with the workspace_connector_id that read returned. Never call it for a statement source: a statement has no sync, so ask the person for the statement that covers the missing days.

It returns once the sync is queued, before any new data arrives. A sync takes a few minutes: never say the copy is fresh after this call. Read again later, or tell the person the copy dates from synced_at. Call it once per installation and ask.

refusal_reason says why nothing was queued:

  • synced_recently: the installation synced in the last minutes, so read again now.

  • not_startable: the installation needs a reconnect or does not sync on its own. Say the copy dates from synced_at and offer to reconnect it.

  • not_found: the id is not an installation of this workspace. Do not call it again for this id: say the copy dates from synced_at.

  • move_in_progress: the installation is being moved to another workspace. Try again later.

success: false means nothing was queued. The sync imports the provider's new data into Well and changes nothing at the provider.

When the token authorizes one workspace, call this directly — no workspace call is needed first. When it authorizes several, this read will not guess which one you mean: pass workspace_id on the call.

Input Schema

NameRequiredDescriptionDefault
workspace_idNoTarget workspace. Omit when the token authorizes one workspace. Required when it authorizes several — a write lands in exactly one workspace and this call would not say which.
conversation_idNoThe conversation id returned by the previous Well result, in its meta under well/conversation_id, in its structuredContent, or in its JSON text block. Pass it back on every call in the same conversation, including a call a card makes, so the chosen workspace and the earlier answers still apply. It decides the conversation on its own: nothing the host states about the session replaces it. Omit it only on the first call of a conversation.
idempotency_keyNoOptional client-supplied key. A retried write with the same key returns the original result instead of re-applying the operation.
workspace_scopeNoRestrict this call to the family: the token's primary workspace plus the company workspaces under it that you are a member of. Unrelated authorized workspaces drop out of the read; row reads merge across the family, while a per-workspace figure still reports exactly one workspace.
workspace_connector_idYesThe installation's `workspace_connector_id`, exactly as the read that said its copy is not fresh enough returned it.

Output Schema

NameRequiredDescriptionDefault
errorNo
queuedYes
successYes
synced_atNo
refusal_reasonNo
conversation_idNoThe conversation this result belongs to. Pass it back as the conversation_id argument on every later Well call in the same conversation.
newly_connectedNoTools that connected to this workspace since the last result and that no session was told about yet, oldest first. Present only when at least one tool is new. The connected-line rule says when to tell an entry; when it does, one line per entry, in the person's language: "<name> is connected.". Never fold several entries into one sentence. Each entry comes back once, on one result only: never repeat its line later.
conversation_id_noteNoPresent only when the server opened a fresh lane, stating that no choice recorded earlier was read.
conversation_id_sourceNoWhere the conversation id came from: the host's own request meta, the caller's argument, or a fresh lane the server opened.
workspace_connector_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedOutput schema / properties / synced_at / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / synced_at / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  2. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only say non-read-only, open-world, idempotent, non-destructive; the description adds the crucial timing semantics (returns once queued, before data arrives, sync takes minutes, never claim freshness afterwards), enumerates every `refusal_reason` with the correct follow-up, and clarifies that `success: false` means nothing was queued and that nothing changes at the provider. This is exactly the context annotations cannot carry.

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

Conciseness4/5

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

Front-loaded with the action and the trigger, then timing, then refusal handling, then workspace mechanics — a logical escalation with no filler sentences. It is long for a tool description, but every block (refusal reasons, success:false bolded) earns its place given the tool's failure modes.

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?

For a write-flagged, open-world, idempotent tool with an output schema, the description covers trigger, guardrails, async timing, failure taxonomy, and workspace/auth selection — everything an agent needs to call it correctly and to avoid misreporting freshness. No meaningful gap remains.

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

Parameters4/5

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

100% schema coverage sets a baseline of 3, and the description earns a notch above by binding `workspace_connector_id` to its provenance (the id from the read that reported `fresh_enough: false`) and by spelling out the operational consequence for a stale id ('Do not call it again for this id'). The `workspace_id` paragraph largely restates the schema, which keeps it from a 5.

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 and resource with scope ('Ask Well to sync one installation now, instead of at its usual time'), and immediately draws the boundary against statement sources, which is the nearest confusing case among siblings. An agent can tell exactly what this does and what it does not do without opening the schema.

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?

Gives an explicit trigger ('only when a read returned `fresh_enough: false` for an installation source'), an explicit prohibition ('Never call it for a statement source') with the alternative action (ask the person for the statement covering the missing days), plus a rate/scope rule ('once per installation and ask') and the workspace-selection rule. Nothing is left 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