Skip to main content
Glama

List project changes

well_list_project_changes
Read-only

Read one page of durable changes to one live project, newest first. Pass project_id from well_list_projects; pass next_before as before to read the next page. Each row gives occurred_at, timestamp_basis, actor identity, event_kind, source installation, field and new_value. new_value contains only fields changed in that row. A value with type: "null" and value: null means the field was cleared; a field absent from new_value did not change. timestamp_basis: "occurred" means the provider or Well supplied the event time; timestamp_basis: "detected_at_sync" means the change was detected at sync, not when the provider changed it. actor_is_current_user is true only when the authenticated member id matches the actor id, false when both ids are known and differ, and null when either identity is unknown. The actor id and name are null when no actor can be resolved; never guess who made a change. Coverage reports whether provider history is complete, partial, unavailable, at a sync baseline or pending, including when the page is empty. Optional at_utc returns the latest retained status, stage and probability at or before that instant; fields without retained evidence are listed as unknown. A related row is named by its public id, parent_project_id, stage_project_id, owner_person_id, counterparty_person_id or counterparty_company_id: its value is that id, or null when the row no longer exists. Read every page before stating a workspace total.

occurred_at is UTC. occurred_at_label writes the same instant in time_zone: the person's own time zone, the one the turn's clock and well_convert_time use, else the workspace's, else UTC. State the time with occurred_at_label; when timestamp_basis is detected_at_sync, say Well detected the difference then, not that the provider changed it then. A baseline coverage window starts at the first captured sync; history before window_from is unknown. On the last page of a provider-synced deal, the final row has event_kind created: when Well first stored the deal, with no project_change_id, timestamp_basis or actor. The provider's own history may start earlier.

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
limitNoRows to return, at most 100. Default 20.
at_utcNoOptional UTC instant for a stage, status and probability snapshot. Missing retained evidence stays unknown.
beforeNoThe opaque next_before cursor from the previous page; pass it back unchanged.
project_idYesThe project id from well_list_projects.
workspace_idNoTarget workspace. Omit when the token authorizes one workspace. Required when it authorizes several: this read reports one workspace's own figures and will not choose 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.
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.

Output Schema

NameRequiredDescriptionDefault
errorNo
changesNo
successYes
coverageNo
snapshotNo
time_zoneNo
next_beforeNo
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.
resolved_workspaceNoThe workspace that answered, when the caller named none and the token authorizes several.
source_service_slugNo
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.
source_installation_idNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed30 schema fields changed
    • removedOutput schema / properties / changes / items / properties / actor_is_current_user / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / changes / items / properties / actor_is_current_user / type
      Added value: +[
      +  "boolean",
      +  "null"
      +]
    • removedOutput schema / properties / changes / items / properties / actor_person_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / changes / items / properties / actor_person_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / changes / items / properties / actor_person_name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / changes / items / properties / actor_person_name / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / changes / items / properties / new_value / additionalProperties / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "type": {
      -        "const": "null",
      -        "type": "string"
      -      },
      -      "value": {
      -        "type": "null"
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "value"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "type": {
      -        "const": "pk",
      -        "type": "string"
      -      },
      -      "value": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "value"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "type": {
      -        "enum": [
      -          "text",
      -          "integer",
      -          "numeric",
      -          "date",
      -          "timestamptz"
      -        ],
      -        "type": "string"
      -      },
      -      "value": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "number"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "type",
      -      "value"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "type": {
      +        "const": "null",
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "null"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "type": {
      +        "const": "pk",
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "type": {
      +        "enum": [
      +          "text",
      +          "integer",
      +          "numeric",
      +          "date",
      +          "timestamptz"
      +        ],
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": [
      +          "string",
      +          "number"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "value"
      +    ],
      +    "type": "object"
      +  }
      +]
    • removedOutput schema / properties / changes / items / properties / occurred_at_label / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / changes / items / properties / occurred_at_label / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / changes / items / properties / project_change_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / changes / items / properties / project_change_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / changes / items / properties / source_installation_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / changes / items / properties / source_installation_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / changes / items / properties / source_service_slug / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / changes / items / properties / source_service_slug / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / coverage / properties / last_source_read_at / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / coverage / properties / last_source_read_at / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / coverage / properties / reason / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / coverage / properties / reason / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / coverage / properties / window_from / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / coverage / properties / window_from / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / coverage / properties / window_to / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / coverage / properties / window_to / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / resolved_workspace / properties / name / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / resolved_workspace / properties / name / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedOutput schema / properties / snapshot / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "at_utc": {
      -        "type": "string"
      -      },
      -      "unknown_fields": {
      -        "items": {
      -          "enum": [
      -            "status",
      -            "stage_project_id",
      -            "probability"
      -          ],
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "values": {
      -        "additionalProperties": {
      -          "oneOf": [
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "null",
      -                  "type": "string"
      -                },
      -                "value": {
      -                  "type": "null"
      -                }
      -              },
      -              "required": [
      -                "type",
      -                "value"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "const": "pk",
      -                  "type": "string"
      -                },
      -                "value": {
      -                  "anyOf": [
      -                    {
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "type",
      -                "value"
      -              ],
      -              "type": "object"
      -            },
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "type": {
      -                  "enum": [
      -                    "text",
      -                    "integer",
      -                    "numeric",
      -                    "date",
      -                    "timestamptz"
      -                  ],
      -                  "type": "string"
      -                },
      -                "value": {
      -                  "anyOf": [
      -                    {
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "number"
      -                    }
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "type",
      -                "value"
      -              ],
      -              "type": "object"
      -            }
      -          ]
      -        },
      -        "propertyNames": {
      -          "type": "string"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "at_utc",
      -      "values",
      -      "unknown_fields"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "at_utc": {
      +        "type": "string"
      +      },
      +      "unknown_fields": {
      +        "items": {
      +          "enum": [
      +            "status",
      +            "stage_project_id",
      +            "probability"
      +          ],
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "values": {
      +        "additionalProperties": {
      +          "oneOf": [
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "type": {
      +                  "const": "null",
      +                  "type": "string"
      +                },
      +                "value": {
      +                  "type": "null"
      +                }
      +              },
      +              "required": [
      +                "type",
      +                "value"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "type": {
      +                  "const": "pk",
      +                  "type": "string"
      +                },
      +                "value": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "type",
      +                "value"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "type": {
      +                  "enum": [
      +                    "text",
      +                    "integer",
      +                    "numeric",
      +                    "date",
      +                    "timestamptz"
      +                  ],
      +                  "type": "string"
      +                },
      +                "value": {
      +                  "type": [
      +                    "string",
      +                    "number"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "type",
      +                "value"
      +              ],
      +              "type": "object"
      +            }
      +          ]
      +        },
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "at_utc",
      +      "values",
      +      "unknown_fields"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / source_installation_id / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / source_installation_id / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / source_service_slug / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / source_service_slug / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  2. Changed3 schema fields changed
    • addedOutput schema / properties / changes / items / properties / timestamp_basis
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "occurred",
      +        "detected_at_sync"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / changes / items / required
      Previous value: -[
      -  "project_change_id",
      -  "occurred_at",
      -  "occurred_at_label",
      -  "field",
      -  "new_value",
      -  "actor_person_id",
      -  "actor_person_name",
      -  "actor_is_current_user",
      -  "event_kind",
      -  "actor_known",
      -  "source_installation_id",
      -  "source_service_slug"
      -]New value: +[
      +  "project_change_id",
      +  "occurred_at",
      +  "timestamp_basis",
      +  "occurred_at_label",
      +  "field",
      +  "new_value",
      +  "actor_person_id",
      +  "actor_person_name",
      +  "actor_is_current_user",
      +  "event_kind",
      +  "actor_known",
      +  "source_installation_id",
      +  "source_service_slug"
      +]
    • changedOutput schema / properties / coverage / properties / state / enum
      Previous value: -[
      -  "not_applicable",
      -  "pending",
      -  "partial",
      -  "complete",
      -  "unavailable",
      -  "parked",
      -  "unknown"
      -]New value: +[
      +  "not_applicable",
      +  "pending",
      +  "partial",
      +  "complete",
      +  "unavailable",
      +  "baseline",
      +  "parked",
      +  "unknown"
      +]
  3. Changed6 schema fields changed
    • changedOutput schema / properties / changes / items / properties / event_kind / enum
      Previous value: -[
      -  "provider_change",
      -  "well_action"
      -]New value: +[
      +  "provider_change",
      +  "well_action",
      +  "created"
      +]
    • addedOutput schema / properties / changes / items / properties / occurred_at_label
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / changes / items / properties / project_change_id / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / changes / items / properties / project_change_id / type
      Removed value: -"string"
    • changedOutput schema / properties / changes / items / required
      Previous value: -[
      -  "project_change_id",
      -  "occurred_at",
      -  "field",
      -  "new_value",
      -  "actor_person_id",
      -  "actor_person_name",
      -  "actor_is_current_user",
      -  "event_kind",
      -  "actor_known",
      -  "source_installation_id",
      -  "source_service_slug"
      -]New value: +[
      +  "project_change_id",
      +  "occurred_at",
      +  "occurred_at_label",
      +  "field",
      +  "new_value",
      +  "actor_person_id",
      +  "actor_person_name",
      +  "actor_is_current_user",
      +  "event_kind",
      +  "actor_known",
      +  "source_installation_id",
      +  "source_service_slug"
      +]
    • addedOutput schema / properties / time_zone
      Added value: +{
      +  "type": "string"
      +}
  4. Changed10 schema fields changed
    • addedInput schema / properties / at_utc
      Added value: +{
      +  "description": "Optional UTC instant for a stage, status and probability snapshot. Missing retained evidence stays unknown.",
      +  "maxLength": 40,
      +  "minLength": 20,
      +  "type": "string"
      +}
    • addedOutput schema / properties / changes / items / properties / actor_known
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / changes / items / properties / event_kind
      Added value: +{
      +  "enum": [
      +    "provider_change",
      +    "well_action"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / changes / items / properties / source_installation_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / changes / items / properties / source_service_slug
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • changedOutput schema / properties / changes / items / required
      Previous value: -[
      -  "project_change_id",
      -  "occurred_at",
      -  "field",
      -  "new_value",
      -  "actor_person_id",
      -  "actor_person_name",
      -  "actor_is_current_user"
      -]New value: +[
      +  "project_change_id",
      +  "occurred_at",
      +  "field",
      +  "new_value",
      +  "actor_person_id",
      +  "actor_person_name",
      +  "actor_is_current_user",
      +  "event_kind",
      +  "actor_known",
      +  "source_installation_id",
      +  "source_service_slug"
      +]
    • addedOutput schema / properties / coverage
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "last_source_read_at": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "reason": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "state": {
      +      "enum": [
      +        "not_applicable",
      +        "pending",
      +        "partial",
      +        "complete",
      +        "unavailable",
      +        "parked",
      +        "unknown"
      +      ],
      +      "type": "string"
      +    },
      +    "unsupported_fields": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "window_from": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "window_to": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    }
      +  },
      +  "required": [
      +    "state",
      +    "reason",
      +    "window_from",
      +    "window_to",
      +    "last_source_read_at",
      +    "unsupported_fields"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / snapshot
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "at_utc": {
      +          "type": "string"
      +        },
      +        "unknown_fields": {
      +          "items": {
      +            "enum": [
      +              "status",
      +              "stage_project_id",
      +              "probability"
      +            ],
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "values": {
      +          "additionalProperties": {
      +            "oneOf": [
      +              {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "type": {
      +                    "const": "null",
      +                    "type": "string"
      +                  },
      +                  "value": {
      +                    "type": "null"
      +                  }
      +                },
      +                "required": [
      +                  "type",
      +                  "value"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "type": {
      +                    "const": "pk",
      +                    "type": "string"
      +                  },
      +                  "value": {
      +                    "anyOf": [
      +                      {
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "null"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "type",
      +                  "value"
      +                ],
      +                "type": "object"
      +              },
      +              {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "type": {
      +                    "enum": [
      +                      "text",
      +                      "integer",
      +                      "numeric",
      +                      "date",
      +                      "timestamptz"
      +                    ],
      +                    "type": "string"
      +                  },
      +                  "value": {
      +                    "anyOf": [
      +                      {
      +                        "type": "string"
      +                      },
      +                      {
      +                        "type": "number"
      +                      }
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "type",
      +                  "value"
      +                ],
      +                "type": "object"
      +              }
      +            ]
      +          },
      +          "propertyNames": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "at_utc",
      +        "values",
      +        "unknown_fields"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / source_installation_id
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / source_service_slug
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
  5. Added

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the read-only annotations, the description discloses nuanced behavior: `timestamp_basis` meanings, actor identity resolution rules, null actor handling, baseline coverage windows, empty-page coverage reporting, null-value clearing semantics, and the special final `created` row for provider-synced deals. This is exactly the kind of context an agent needs to interpret results correctly.

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?

The description is long and dense, but it is front-loaded with the core operation and every paragraph addresses a real ambiguity in interpreting project-change rows. Some field-level explanation overlaps with the output schema, but the nuanced semantics justify most of the length.

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?

Given the tool's complexity, seven parameters, and existing output schema, the description covers pagination, workspace selection, timestamp interpretation, actor resolution, coverage windows, null-value semantics, and snapshot behavior. An agent has enough context to call and interpret it correctly without guessing.

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?

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining that `project_id` comes from `well_list_projects`, that `next_before` should be passed back as `before`, and how `workspace_id` behaves when the token authorizes one versus several workspaces. It also clarifies `at_utc` snapshot semantics.

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?

The first sentence states a specific verb, resource, pagination scope, and ordering: 'Read one page of durable changes to one live project, newest first.' It also ties directly to the sibling well_list_projects by telling the caller to pass its project_id. An agent can distinguish this from project reads and undo operations 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 Guidelines4/5

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

The description explains pagination mechanics ('pass `next_before` as `before`'), workspace selection behavior, and the instruction to read every page before stating a total. It also explains when `at_utc` applies. It does not explicitly contrast itself with siblings like `well_get_project` or `well_undo_project_change`, but the operational guidance is clear.

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