{
  "automatic_evidence_credit": false,
  "captures": [],
  "change_log": [
    {
      "after_hash": "f365de8010626ed25c14da35f2f4bb6c83f947f55a34afb91745fb8f51012cd9",
      "before_hash": "71b46000f76ff9d951874834cf493b5777f8d9d975c803b0a4c150c74c5e6173",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[create_favorite].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[enable_user].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[send_invoice].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 3,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 3,
        "truncated": false
      },
      "entry_sha256": "e5efd490c88f1f7382be3d3a22f5da905a65c096d474bd739d4740a255f04b85",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-11-12T21:22:42Z",
      "previous_entry_sha256": "a23e6098b2122bceff819248c6d25397eddd8ad25f03b71969c4cc172ab9ea83",
      "receipt_id": "b849ae18-3d4c-5567-82b6-aee6633dd45a",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/b849ae18-3d4c-5567-82b6-aee6633dd45a",
      "sequence": 83084,
      "target_id": "obs_3730bc1cf11024c2399920c6",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://api.timix.ai/api/integration/v1/mcp"
    },
    {
      "after_hash": "71b46000f76ff9d951874834cf493b5777f8d9d975c803b0a4c150c74c5e6173",
      "before_hash": "aee546944b7db419066cbdfafe0051b7d94a8e2e22ac2402c7ba82956631999a",
      "diff": {
        "changes": [
          {
            "compatibility_class": "BREAKING",
            "fact": "tool removed",
            "kind": "TOOL_REMOVED",
            "path": "tools[use_favorite]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[get_financial_analytics]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input type widened",
            "kind": "INPUT_TYPE_WIDENED",
            "path": "tools[approve_timesheet].inputSchema.type",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[approve_timesheet].inputSchema.properties[confirm]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[approve_timesheet].inputSchema.properties[idempotency_key]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[approve_timesheet].inputSchema.properties[submission_period_id]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input type widened",
            "kind": "INPUT_TYPE_WIDENED",
            "path": "tools[assign_user_to_customer].inputSchema.type",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[assign_user_to_customer].inputSchema.properties[customer_id]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[assign_user_to_customer].inputSchema.properties[idempotency_key]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[assign_user_to_customer].inputSchema.properties[org_user_id]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input type widened",
            "kind": "INPUT_TYPE_WIDENED",
            "path": "tools[assign_user_to_project].inputSchema.type",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[assign_user_to_project].inputSchema.properties[email]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[assign_user_to_project].inputSchema.properties[idempotency_key]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[assign_user_to_project].inputSchema.properties[org_user_id]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[assign_user_to_project].inputSchema.properties[project_id]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input type widened",
            "kind": "INPUT_TYPE_WIDENED",
            "path": "tools[bulk_create_time_reports].inputSchema.type",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[bulk_create_time_reports].inputSchema.properties[entries]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[bulk_create_time_reports].inputSchema.properties[idempotency_key]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[bulk_update_cost_rates].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input type widened",
            "kind": "INPUT_TYPE_WIDENED",
            "path": "tools[bulk_update_cost_rates].inputSchema.type",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[bulk_update_cost_rates].inputSchema.properties[adjustment_percentage]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[bulk_update_cost_rates].inputSchema.properties[effective_from]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[bulk_update_cost_rates].inputSchema.properties[fixed_amount]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "BREAKING",
            "fact": "input field removed",
            "kind": "INPUT_FIELD_REMOVED",
            "path": "tools[bulk_update_cost_rates].inputSchema.properties[idempotency_key]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "input type widened",
            "kind": "INPUT_TYPE_WIDENED",
            "path": "tools[bulk_update_time_reports].inputSchema.type",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 80,
          "INFO": 1,
          "NON_BREAKING": 19
        },
        "taxonomy_version": "1.0.0",
        "total": 500,
        "truncated": true
      },
      "entry_sha256": "c4baea4e6dd147ae7c578d2dcea1d23be1d47addd2335da35a5ebcf05b47f70e",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-11-09T18:24:56Z",
      "previous_entry_sha256": "b167a6de16141ee5de2df673b6a1107461205c289f3c104415f126bc0412d0c2",
      "receipt_id": "e2801121-da0f-5c7f-ae30-0dba07341f8f",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/e2801121-da0f-5c7f-ae30-0dba07341f8f",
      "sequence": 77341,
      "target_id": "obs_3730bc1cf11024c2399920c6",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://api.timix.ai/api/integration/v1/mcp"
    },
    {
      "after_hash": "aee546944b7db419066cbdfafe0051b7d94a8e2e22ac2402c7ba82956631999a",
      "before_hash": "c7241693a01968887fc1275d33b75e328947e22459136b0c79abbfed0b33395f",
      "diff": {
        "changes": [],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 0,
        "truncated": false
      },
      "entry_sha256": "19c2c0e658f923012860a295f75cc0b8fd1f585c85ebe8641db71f6323d14bbd",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-11-04T11:50:56Z",
      "previous_entry_sha256": "1852fd1ff5efdb9b12f3080b8e3930689db092ba4a8b32d0ae00d4f5a1ef79b0",
      "receipt_id": "e81fc3c2-244a-51b4-be69-0eb08ee84d5f",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/e81fc3c2-244a-51b4-be69-0eb08ee84d5f",
      "sequence": 67297,
      "target_id": "obs_3730bc1cf11024c2399920c6",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://api.timix.ai/api/integration/v1/mcp"
    },
    {
      "after_hash": "c7241693a01968887fc1275d33b75e328947e22459136b0c79abbfed0b33395f",
      "before_hash": "20e92b3c100a564d792a7e632d2eab6c2ab26926929f36067a5ad70b5ad1df6c",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[disable_user].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[stop_timer].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 2,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 2,
        "truncated": false
      },
      "entry_sha256": "6c9d88d7b19262560ff97e5a62c24239b6d825382c412c145c58dad23e38efde",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-11-03T10:21:22Z",
      "previous_entry_sha256": "3d7d9aac9f7e7814580b205b334e501f7d625a4666509e5fa3efc2244c8ba1e5",
      "receipt_id": "a08328c3-4288-51bf-b9a2-26e89422ea46",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/a08328c3-4288-51bf-b9a2-26e89422ea46",
      "sequence": 64836,
      "target_id": "obs_3730bc1cf11024c2399920c6",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://api.timix.ai/api/integration/v1/mcp"
    },
    {
      "after_hash": "20e92b3c100a564d792a7e632d2eab6c2ab26926929f36067a5ad70b5ad1df6c",
      "before_hash": "84001daa95de2cc8bdac27a7f2c0b1285a311f6dbd06524e14d6ed5bc9541584",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[find_billing_work].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "8a1f99b559f1bee351723ef430e27ff2edbe5689621653f8d0433fa9831aa954",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-11-02T09:11:48Z",
      "previous_entry_sha256": "279182994e219fb819c3eeac1770ea7acd3f88a6120392c9fd4b46d747ae69df",
      "receipt_id": "ea0cb0ed-e8c0-54f1-bdf8-5d35e440559b",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/ea0cb0ed-e8c0-54f1-bdf8-5d35e440559b",
      "sequence": 60918,
      "target_id": "obs_3730bc1cf11024c2399920c6",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://api.timix.ai/api/integration/v1/mcp"
    },
    {
      "after_hash": "84001daa95de2cc8bdac27a7f2c0b1285a311f6dbd06524e14d6ed5bc9541584",
      "before_hash": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[invite_user].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "6a8cab40bbd1502c4090ec53308dbac7b4721208e8af409345d7df6e7aea7f94",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-26T04:19:10Z",
      "previous_entry_sha256": "d2cc9ca571b86c0c285af144b993dcfc81b7e6ed104c5b26aa4d9a92d771acad",
      "receipt_id": "0b7dbb36-2542-51d3-94e6-c02b6a3f18aa",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/0b7dbb36-2542-51d3-94e6-c02b6a3f18aa",
      "sequence": 47683,
      "target_id": "obs_3730bc1cf11024c2399920c6",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://api.timix.ai/api/integration/v1/mcp"
    },
    {
      "after_hash": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "before_hash": "f2c8f6c2b988c4511986f9e9ed2f96d4a49c5aac6a4f18271a70c97b3a1ad08f",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[list_my_time_entries].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "7abee32b406a6df8406224a14ee24e4061c4ed026505f12f1239903bde8b36b2",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-13T18:20:35Z",
      "previous_entry_sha256": "76a4f5d871ec5b112dd9a16dd4695d33d03f3fde87fb18c2e22df007eef65ea9",
      "receipt_id": "debdda7b-bfba-5de8-9cdb-fe47f308fd13",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/debdda7b-bfba-5de8-9cdb-fe47f308fd13",
      "sequence": 29134,
      "target_id": "obs_3730bc1cf11024c2399920c6",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://api.timix.ai/api/integration/v1/mcp"
    },
    {
      "after_hash": "f2c8f6c2b988c4511986f9e9ed2f96d4a49c5aac6a4f18271a70c97b3a1ad08f",
      "before_hash": "aa923672a963ce7ad9be30016b4b18cb7579b7a09375aacf517d9f2dd629835c",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[bulk_create_time_reports].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[create_time_report].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 2,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 2,
        "truncated": false
      },
      "entry_sha256": "e3bfa273e5f5c71aec6313ac8a7d87b88609594255635ecf64d4f5da9f87a2f6",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-12T17:33:42Z",
      "previous_entry_sha256": "f6525866b052662d4647337d19a0278da381548aabb845054dbfe0188acc7021",
      "receipt_id": "a466d806-0921-5b68-8332-a38c7ec4b049",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/a466d806-0921-5b68-8332-a38c7ec4b049",
      "sequence": 27009,
      "target_id": "obs_3730bc1cf11024c2399920c6",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://api.timix.ai/api/integration/v1/mcp"
    },
    {
      "after_hash": "aa923672a963ce7ad9be30016b4b18cb7579b7a09375aacf517d9f2dd629835c",
      "before_hash": "6ea0e628fbec3299a7ad876ce4c6fcb6891c9fc3539f07858371e960ffabf783",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[find_billing_work].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "89343d6a35e22bf9b1c9675faf79172388fe06927ead5d4ba54cf4ca208f6183",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-11T16:11:36Z",
      "previous_entry_sha256": "2a49686dbd5359b6919a7e11fe28e60b4b9beac58166bff25153da96cde62e04",
      "receipt_id": "c794a33e-a73b-50b3-af76-72f4801abb57",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/c794a33e-a73b-50b3-af76-72f4801abb57",
      "sequence": 24968,
      "target_id": "obs_3730bc1cf11024c2399920c6",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://api.timix.ai/api/integration/v1/mcp"
    },
    {
      "after_hash": "6ea0e628fbec3299a7ad876ce4c6fcb6891c9fc3539f07858371e960ffabf783",
      "before_hash": "8eee53c6ccec965066da3da217d532feab2e5b035c156768e0912e3dcfe3d506",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[enable_user].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": "1.0.0",
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "65364917eee1edd409accf49eb509dd68e37e7f3e5564a839d81415ae2844ce5",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-08T13:59:58Z",
      "previous_entry_sha256": "242276ceac4081c882b2f523b68924f6ce211001c117e3f5153e7c178651c5f2",
      "receipt_id": "f7105658-14ff-5a90-9daa-166898aeabc4",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/f7105658-14ff-5a90-9daa-166898aeabc4",
      "sequence": 20254,
      "target_id": "obs_3730bc1cf11024c2399920c6",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://api.timix.ai/api/integration/v1/mcp"
    }
  ],
  "check_outcomes": {
    "ask": {
      "changed_since": "https://www.gaipagents.com/v1/free/observatory/changed-since?url=<endpoint>",
      "changes_and_reachability": "https://www.gaipagents.com/v1/free/changes/subscribe?url=<endpoint>",
      "conformance": "https://www.gaipagents.com/v1/free/conformance/check?url=<endpoint>"
    },
    "published": false,
    "why": "Outcomes of GAIP's own checks (whether the endpoint answered, HTTP status, response time, conformance findings) are given only to a caller who asks about the URL, never on a public page, list or feed. The same applies to every target."
  },
  "conformance": {
    "findings": "GIVEN_TO_CALLER_ONLY",
    "meaning": "The rule catalogue this manifest was read against at the observed time. The finding codes go only to a caller who checks the URL (check_outcomes.ask.conformance).",
    "observed_at_utc": "2026-11-12T21:22:42Z",
    "protocol": "MCP",
    "rule_catalogue_route": "/v1/free/knowledge/conformance-rules",
    "rule_catalogue_version": "1.0.0"
  },
  "corrections": {
    "contact": "https://www.gaipagents.com/contact",
    "exclusion": "https://www.gaipagents.com/v1/free/observatory/corrections/exclusion",
    "opt_out": "POST kind OPT_OUT to the route; the target is withdrawn from public view at once (a pause). The site's owner makes it permanent at https://www.gaipagents.com/v1/free/observatory/corrections/exclusion.",
    "queued_for_review": 0,
    "route": "https://www.gaipagents.com/v1/free/observatory/corrections"
  },
  "declared_derivations": {
    "data_appetite": {
      "categories": {
        "email": {
          "fields": 4,
          "tools": 4
        },
        "free_text_large": {
          "fields": 18,
          "tools": 16
        },
        "phone": {
          "fields": 1,
          "tools": 1
        }
      },
      "fields_read": 434,
      "observed_at_utc": "2026-11-12T21:22:42Z",
      "tools_read": 115
    },
    "dependency_domains": [],
    "last_observed_at_utc": "2026-11-12T21:22:42Z",
    "meaning": "Derived by GAIP from what this agent declared, at the stated time: the categories of data its tools' input fields ask for (counts, by keyword rules gaip.data-appetite-rules.v1), the outside domains its declarations point to, and the operator as the agent itself publishes it. Facts about declarations, not an assessment of the agent or its operator.",
    "operator": {
      "as_published": "ai.timix",
      "source_kind": "registry_namespace_domain"
    },
    "rules_version": "gaip.data-appetite-rules.v1",
    "schema_version": "gaip.declared-derivations.v1"
  },
  "latest": {
    "baseline_at_utc": "2026-09-29T07:25:46Z",
    "manifest_sha256": "f365de8010626ed25c14da35f2f4bb6c83f947f55a34afb91745fb8f51012cd9",
    "observed_at_utc": "2026-11-12T21:22:42Z"
  },
  "metadata_signals": {
    "meaning": "Pattern rules are published only as aggregate rates across all observed targets (see the summary), never per party. GAIP issues no overall verdict and does not rank parties.",
    "overall_verdict": null,
    "per_target_results": null,
    "published": "AGGREGATE_ONLY_IN_SUMMARY",
    "rules": [
      {
        "rationale": "Zero-width, bidirectional-control and Unicode tag characters are not visible to a human reader but are read by language models. GAIP reports whether any occur; many have ordinary uses.",
        "rule_id": "OBS-SIG-001",
        "title": "Invisible or bidirectional-control Unicode characters in names or descriptions"
      },
      {
        "rationale": "Tool and skill descriptions are read by models. GAIP reports whether a description contains phrases shaped like instructions to a model (the patterns in GAIP's public conformance rule catalogue, plus the phrases listed in the Observatory method). Such phrases can be benign.",
        "rule_id": "OBS-SIG-002",
        "title": "Instruction-like text in descriptions"
      },
      {
        "rationale": "When a description refers to a tool name that only a different observed server publishes, a model using both servers may connect the two. GAIP reports whether such a reference occurs; shared names are common and often coincidental.",
        "rule_id": "OBS-SIG-003",
        "title": "Description names a tool published by a different observed server"
      },
      {
        "rationale": "Declared OAuth scopes whose names contain wildcard or whole-account wording (*, all, admin, root, full) request wide access by name. GAIP reports whether such a scope name is declared; it does not know what the scope grants.",
        "rule_id": "OBS-SIG-004",
        "title": "Declared authorization scopes with broad-access wording"
      }
    ],
    "third_party_scanners": [
      {
        "name": "Snyk agent-scan (formerly Invariant Labs mcp-scan)",
        "status": "NOT_RUN",
        "url": "https://github.com/snyk/agent-scan"
      },
      {
        "name": "Cisco AI Defense MCP Scanner",
        "status": "NOT_RUN",
        "url": "https://github.com/cisco-ai-defense/mcp-scanner"
      }
    ]
  },
  "method": "https://www.gaipagents.com/observatory",
  "notice": "Facts observed by GAIP at the stated time (UTC); they may be out of date. This is not an assessment of safety, quality, security, legality or trustworthiness of any party, and not a recommendation. To request a correction, add a right of reply or opt out, POST to https://www.gaipagents.com/v1/free/observatory/corrections or use https://www.gaipagents.com/contact.",
  "price_gbp": 0,
  "schema_version": "gaip.observatory.v1.target",
  "silent_changes_last_30_days": {
    "days": 30,
    "entries_read_at_most": 200,
    "kinds": [
      "behaviour_labels_changed",
      "input_or_output_format_changed",
      "tool_changed_past_the_64_kept_in_full",
      "tool_descriptions_reworded",
      "tools_added",
      "tools_removed"
    ],
    "line": "In the last 30 days its declared tools or interface changed with no declared version change in 3 weeks: 2026-W44 (2026-10-26); 2026-W45 (2026-11-02, 2026-11-03, 2026-11-04); 2026-W46 (2026-11-09, 2026-11-12); kinds: behaviour labels changed, input or output schema changed, a tool past the 64 kept in full changed, tool descriptions re-worded, tools added, tools removed.",
    "meaning": "Weeks (ISO) in which GAIP recorded a change to the agent's declared tools or interface (tools added or removed, descriptions re-worded, input or output schema, behaviour labels, sign-in, terms or prices, endpoint host) and no declared version (registry or card version, serverInfo.version) moved that week. A week whose version movement is not recorded is not counted. Dated facts from the public change log; not an assessment of the agent.",
    "weeks": [
      {
        "dates": [
          "2026-10-26"
        ],
        "kinds": [
          "tool_descriptions_reworded"
        ],
        "week": "2026-W44"
      },
      {
        "dates": [
          "2026-11-02",
          "2026-11-03",
          "2026-11-04"
        ],
        "kinds": [
          "input_or_output_format_changed",
          "tool_changed_past_the_64_kept_in_full",
          "tool_descriptions_reworded"
        ],
        "week": "2026-W45"
      },
      {
        "dates": [
          "2026-11-09",
          "2026-11-12"
        ],
        "kinds": [
          "behaviour_labels_changed",
          "input_or_output_format_changed",
          "tool_changed_past_the_64_kept_in_full",
          "tool_descriptions_reworded",
          "tools_added",
          "tools_removed"
        ],
        "week": "2026-W46"
      }
    ],
    "weeks_with_silent_changes": 3
  },
  "snapshot": {
    "capabilities": [
      "tools"
    ],
    "description": "Time tracking, live project budgets, and billing exports for service firms.",
    "name": "ai.timix/time-tracking",
    "parts": [
      "registry_server_json",
      "mcp_initialize_tools_list"
    ],
    "protocol": "MCP",
    "protocolVersion": "2025-11-25",
    "public_copy": "Text excerpts of at most 300 characters; input schemas and security schemes as SHA-256 and size only.",
    "remotes": [
      {
        "type": "streamable-http",
        "url": "https://api.timix.ai/api/integration/v1/mcp"
      }
    ],
    "scopes": [],
    "serverInfo": {
      "name": "timix-mcp",
      "version": "1.0.0"
    },
    "title": "Timix.AI",
    "tools": [
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": true,
          "readOnlyHint": false,
          "title": "Approve timesheet"
        },
        "description": "Approve a submitted timesheet period for a team member. The period and its time reports transition to Approved. Use confirm=true to proceed. Requires Manager or Admin/Owner role (Finance is excluded \u2014 timesheet approval is PM work, not finance).",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "eed51e36abdbbd1ec8ffd28dc1cf3edde6539b381cd660ba0edb2ac5c3888122"
        },
        "name": "approve_timesheet",
        "title": "Approve timesheet"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Assign user to customer"
        },
        "description": "Assign an organization member to a billing customer so they can see that customer and all its projects. Requires the org_user_id (discover it with get_project_team or get_employee_timesheet) and the customer_id. The organization is fixed by your context \u2014 never pass an organization id. You cannot ta",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "5e71033c27de7cf9445ec457c3dc9489db84acace07cb3254dabebb6d2c968be"
        },
        "name": "assign_user_to_customer",
        "title": "Assign user to customer"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Assign user to project"
        },
        "description": "Assign a member to a project so they can see it and log time against its tasks. Identify the member by email (preferred) or by org_user_id, and the project by project_id (discover ids with find_billing_work - never ask the user for an id). The organization is fixed by your context.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "97a6f2973cc3bab7afa11c4cb13d4cd7df12f77bc4b88592305ab02c17d7af65"
        },
        "name": "assign_user_to_project",
        "title": "Assign user to project"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Create time entries in bulk"
        },
        "description": "Create multiple time entries in one call. Supply an 'entries' array where each item has subtask_id, date (YYYY-MM-DD), and hours (> 0 and \u2264 24); optionally start_time (HH:mm; when omitted, the entry goes after your last entry that day and after the batch's other entries \u2014 09:00 on a day with nothing",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "a87a91cf7334f74515af731788fc453d9869982478d4bf7ffe23f9589e782de8"
        },
        "name": "bulk_create_time_reports",
        "title": "Create time entries in bulk"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Bulk update cost rates"
        },
        "description": "Apply an organization-wide adjustment to every member's hourly COST rate, effective from a date. Supply EITHER adjustment_percentage (e.g. 5 to raise all rates by 5%, -3 to cut 3%) OR fixed_amount (add this amount to every rate, e.g. 10 raises a 100 rate to 110), not both. The organization is fixed ",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "a27e6c81efd9d50e3ba1e15d5b94231daa99e8957c551098af8d068d85bda36f"
        },
        "name": "bulk_update_cost_rates",
        "title": "Bulk update cost rates"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Update time entry descriptions in bulk"
        },
        "description": "Apply a common text description update to multiple of your own time entries. Supply ids (list of time-report ids, max 100) and text (the new description). Returns per-id results \u2014 partial failures are reported rather than aborting the whole batch.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "91b7dc69863942867a1f12fa217840d7929cbb32a779636b5dbc93174ee209bd"
        },
        "name": "bulk_update_time_reports",
        "title": "Update time entry descriptions in bulk"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Cancel invite"
        },
        "description": "Cancel a pending invitation so the invite link is no longer valid. The email address can be re-invited at any time. Returns a preview unless confirm=true is set.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "14af5b2fd8f3c1830c4387193fd8dc6e206a49ca353b83cb6bbc157c8443e525"
        },
        "name": "cancel_invite",
        "title": "Cancel invite"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Cancel timer"
        },
        "description": "Cancel (discard) your running timer without creating a time entry. The elapsed time is lost. No arguments needed.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "5a43d82beb7ee99d4498190c9dab74dcec80aa75ad6ef1f3c1b7714a886ec56b"
        },
        "name": "cancel_timer",
        "title": "Cancel timer"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Change user role"
        },
        "description": "Change an organization member's role. Returns a preview; re-call with the confirm_token and an idempotency_key to commit. Cannot assign the Owner role. Cannot escalate beyond your own role.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "3ca8ed08e2c388b84d34a5eb36443b8fffc4f00e159635650d7828dca1c2b3e6"
        },
        "name": "change_user_role",
        "title": "Change user role"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Close frame order"
        },
        "description": "Close an Open frame order so no new invoices may link to it. Returns a preview unless confirm=true is set. Closing is not directly reversible; the order remains in the Closed state.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "f35379771760871de9a961bcd01bf1ec51d620b524dbd1b2cb784b7d06dd20b0"
        },
        "name": "close_frame_order",
        "title": "Close frame order"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Close billing month"
        },
        "description": "Close a billing month so no further time can be logged or edited in it. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit. Reversible only by reopening the month.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "7f68c096279fa05e3e2cbe3fdaef5d3c4e8d1a86e6029abd996f894df8eb9380"
        },
        "name": "close_month",
        "title": "Close billing month"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Copy time entries to a new period"
        },
        "description": "Copy your own time entries from a source date range into a target date range, preserving each entry's weekday offset relative to the source start (e.g. copy last week to this week). New entries are created as Draft. The source range cannot exceed 31 days. Supply source_start_date, source_end_date, a",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "dcf8d65a48d02abb6df1599c1eaabb3944633c2357fa1ac12d68f64b2bcce25f"
        },
        "name": "copy_period",
        "title": "Copy time entries to a new period"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Create credit note"
        },
        "description": "Create a credit note against an existing invoice, reducing the amount owed. Requires Finance role or above.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "7179a4de394526133dd071d81f078eebf0ddaf53ae59204bb122294d8c01c30d"
        },
        "name": "create_credit_note",
        "title": "Create credit note"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Create custom field"
        },
        "description": "Define a new custom field on a billing entity type (project, task, subtask, time report, or customer) for your organization. The organization is fixed by your context - never pass an organization id. type is one of String, Number, Date, DateTime, ListOfValues; ListOfValues requires at least one opti",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "3be1165cd706451285d0f29fe85e960c6407ab98dd5e834d0a5e2a7f29c19e0f"
        },
        "name": "create_custom_field",
        "title": "Create custom field"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Create customer"
        },
        "description": "Create a new billing customer in your organization. The organization is fixed by your context - never pass an organization id.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "bf89efdc46ff53f001558581a48c979c79596295408a085fc6a8274613ae5f9f"
        },
        "name": "create_customer",
        "title": "Create customer"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Create favorite"
        },
        "description": "Save an activity (subtask) you can log time on as a favorite for quick reuse, under the name you give it. Returns the created favorite.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "dc651fa95207e728ccc071fc8e16d157489b0a5024e5b6fbd2078940c8fe8295"
        },
        "name": "create_favorite",
        "title": "Create favorite"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Create frame order"
        },
        "description": "Create a new Open frame order (blanket PO / commercial envelope) for a customer. A frame order tracks a contracted hours or amount cap that invoices can draw down against. Reversible \u2014 the frame order can be deleted while it is still Open.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "b3f27f561657254fbff24c328dd1d551065cc1f452266d8923d00193869c343a"
        },
        "name": "create_frame_order",
        "title": "Create frame order"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Create holiday profile"
        },
        "description": "Create and SAVE a national-holiday profile for the organization for a specific year, AFTER the user has explicitly reviewed and confirmed the holiday list. Each holiday is either a full day off or a half/partial working day (with a start/end working window). Holiday dates MUST come from suggest_holi",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "9cb3a1d001788ab8992a274c19bf5a04dd58bf775168b87f8138c13aa405b200"
        },
        "name": "create_holiday_profile",
        "title": "Create holiday profile"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Create project"
        },
        "description": "Create a new billing project under one of your customers. The organization is fixed by your context; customer_id must be a customer in your organization. Discover ids with find_billing_work - never ask the user for an id.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "90dec40af54c1c5107063b518a36cb90efe9fe94d45d1b6186c6ef78c76be080"
        },
        "name": "create_project",
        "title": "Create project"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Create subtask"
        },
        "description": "Create a subtask under a task. All time entries are logged against subtasks, so every task needs at least one. The subtask inherits a valid billing type from the parent task. Discover ids with find_billing_work - never ask the user for an id.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "057bd68b5f56c0d423a292d9232c67b330d57094dfcf76d55ad987cceb7fce8a"
        },
        "name": "create_subtask",
        "title": "Create subtask"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Create task"
        },
        "description": "Create a task under a project. Tasks group the subtasks that time is logged against. The task inherits its allowed billing types from the parent project. Discover ids with find_billing_work - never ask the user for an id.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "af3067869a39f50a6014aad5a32fd1038289a33b086e24717341d1065fcb7556"
        },
        "name": "create_task",
        "title": "Create task"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Create time entry"
        },
        "description": "Create a new time entry on a subtask for the current user. The entry is always attributed to you \u2014 you cannot create entries on behalf of another user. Supply subtask_id, the date (ISO 8601 YYYY-MM-DD), start_time (HH:mm; when omitted, right after your last entry that day, or 09:00 on a day with not",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "0957d1c80c8cfb8f38b4fe9970cec67fee975ab09ca9508c480f7b1ceacc8f52"
        },
        "name": "create_time_report",
        "title": "Create time entry"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Revoke API key"
        },
        "description": "Permanently revoke one of your Integration API keys. Any MCP clients or integrations using the key will lose access immediately and cannot be restored. Returns a preview; re-call with the confirm_token and an idempotency_key to commit.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "f97fc4cc6b5d5c65fa19bd0ea5578467939a631218298414c0d0259a6646ffa1"
        },
        "name": "delete_api_key",
        "title": "Revoke API key"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Delete custom field"
        },
        "description": "Delete a custom-field definition from the organization. If the field is mandatory and already has values stored on entities the service will reject the delete with a clear reason. Returns a preview unless confirm=true is set. Admin role required.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "302e8cc225d374ebfd9a797fcd634ee9a08f802caf9baccb452f3404b37092ed"
        },
        "name": "delete_custom_field",
        "title": "Delete custom field"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Delete customer"
        },
        "description": "Soft-delete a billing customer and its whole hierarchy (projects, tasks, subtasks) into the recycle bin, where an admin can restore it. Returns a preview unless confirm=true is set.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "be260246c0ba609f43a5ff3e8e9a74a195d64622ef70abfbaa0459075370cc3a"
        },
        "name": "delete_customer",
        "title": "Delete customer"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Delete draft invoice"
        },
        "description": "Delete a DRAFT invoice permanently. Only draft invoices can be deleted; issued invoices are permanent records. Returns a preview unless confirm=true is set.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "dca8e6982147c71d8573d3a0cdd54cfeb7c762c4dbe03a0054a6f3796fa67e1f"
        },
        "name": "delete_draft_invoice",
        "title": "Delete draft invoice"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Delete frame order"
        },
        "description": "Soft-delete an Open frame order into the recycle bin (restorable by an Admin). Blocked when Issued/Sent/Paid invoices are linked \u2014 void or unlink those first. Returns a preview unless confirm=true is set.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "1dedb4a4819269656cfda8808b4c75a290ea3f6e63b6f213204a07c0ab5a59f2"
        },
        "name": "delete_frame_order",
        "title": "Delete frame order"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Delete holiday profile"
        },
        "description": "Delete a named national-holiday profile from the organization. The year's holidays will no longer be applied to time calculations. Returns a preview unless confirm=true is set. Admin role required.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "d37230403dc7157496f90b7f1e38335c08ec3bd9c2c59e74c03c6cfa098b8a0e"
        },
        "name": "delete_holiday_profile",
        "title": "Delete holiday profile"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Delete organization"
        },
        "description": "Soft-delete this organization. All members will be locked out and the org will be hidden until a platform admin restores it within the retention window. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit. Owner role required.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "fa4be7eda2916edbbd5a23735305cc991da4f2daef0c2ca2829d5a339dc47cb7"
        },
        "name": "delete_organization",
        "title": "Delete organization"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Delete project"
        },
        "description": "Soft-delete a billing project and its whole task/subtask hierarchy into the recycle bin, where an admin can restore it. Returns a preview unless confirm=true is set.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "1b097580bae8466e7b97ac494af718612ba7844b4c3eb083bc112d94b7847430"
        },
        "name": "delete_project",
        "title": "Delete project"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Delete subtask"
        },
        "description": "Soft-delete a billing subtask and its time entries into the recycle bin, where an admin can restore them together. Returns a preview unless confirm=true is set.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "0d573716e4d44e5de57710acb9357d76e29db9a241010c9b5a018cd6e2f8dcbe"
        },
        "name": "delete_subtask",
        "title": "Delete subtask"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Delete task"
        },
        "description": "Soft-delete a billing task and its subtask hierarchy into the recycle bin, where an admin can restore it. Returns a preview unless confirm=true is set.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "517ba43eadcfdc6541f05f09f9f960fb90359b471b6f023c2a855850a688436b"
        },
        "name": "delete_task",
        "title": "Delete task"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Delete time entry"
        },
        "description": "Delete a time report entry. Members can delete their own reports; Managers/Admins can delete others' (subject to org settings). Returns a preview unless confirm=true is set.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "16d9b606bf9931d50afecd585030f8ba11872ff583ef40c3fb097258648ac1ba"
        },
        "name": "delete_time_report",
        "title": "Delete time entry"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Delete work schedule"
        },
        "description": "Delete a named organization work schedule profile. Users assigned to this schedule will fall back to the default schedule. Returns a preview unless confirm=true is set. Admin role required.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "88bb9a2965ff492d7f87a07ff2ccd874c5d076cd97cd6779c0046db5bb5a8273"
        },
        "name": "delete_work_schedule",
        "title": "Delete work schedule"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Disable user"
        },
        "description": "Disable an organization member's access to this organization: until they are enabled again they can open nothing in it (their sign-in and their other organizations are not affected). Reversible \u2014 the user can be re-enabled from the web application. Returns a preview unless confirm=true is set.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "0ff5a24a1668a9d2f3481001809869e78dcb97904dab9305a4808672207253e5"
        },
        "name": "disable_user",
        "title": "Disable user"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Enable user"
        },
        "description": "Re-enable a previously disabled organization member so they can log in and use the platform again. Requires the org_user_id. The organization is fixed by your context \u2014 never pass an organization id. You cannot target a user more privileged than yourself, and not your own account. It is refused when",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "95d7a4735ca2462938190d8fe2ce36840273d87b4d3b965ba2a06310bcc5cb7c"
        },
        "name": "enable_user",
        "title": "Enable user"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Find billing work"
        },
        "description": "Find the projects, tasks and subtasks in your organization where time can be tracked. Pass a name fragment as query to search customer, project, task and subtask names at once: every matching subtask comes back in `matches` with its full path (customer > project > task > subtask) and its subtask_id ",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "dac183efc20a7290b177d75c7e47c2d83a12899d9b0285782b5ad2408d042b27"
        },
        "name": "find_billing_work",
        "title": "Find billing work"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Generate draft invoice"
        },
        "description": "Generate a DRAFT invoice from a customer's approved billable hours over a billing period. The draft is editable and can be deleted before it is issued.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "a087688f743f80649b2c609135a103b706785d04a99748a42bd3f63de306802e"
        },
        "name": "generate_invoice",
        "title": "Generate draft invoice"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get billing report"
        },
        "description": "Get billing summary for a customer over a date range",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "956de79a3edf57a0c79552a931739fbbad06b3a1bc1a72e607d968e6eda02b88"
        },
        "name": "get_billing_report",
        "title": "Get billing report"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get budget alerts"
        },
        "description": "Get all budget alerts for the organization showing projects that are over or near budget",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "a2c799262a3ce3c19ef5cdd983bf3d12b43ab3c426227091b909dcb7054738c0"
        },
        "name": "get_budget_alerts",
        "title": "Get budget alerts"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get budget health"
        },
        "description": "Get overall budget health summary for the organization, including project counts by status (on-track, warning, critical), total remaining budget hours, and active alerts",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "a2c799262a3ce3c19ef5cdd983bf3d12b43ab3c426227091b909dcb7054738c0"
        },
        "name": "get_budget_health",
        "title": "Get budget health"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get customer info"
        },
        "description": "Get detailed information about a customer including health score and portfolio",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "b3d86a044d304327601e0a9224779cd674c638091b2684e3c033d86b044375a6"
        },
        "name": "get_customer_info",
        "title": "Get customer info"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get dashboard metrics"
        },
        "description": "Get organization dashboard metrics including utilization, revenue, and active projects",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "64dd50f65134e216dfd6684fba24f8c1efc03b1da6e5e281e747d8af198dbcb9"
        },
        "name": "get_dashboard_metrics",
        "title": "Get dashboard metrics"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get employee timesheet"
        },
        "description": "Get an employee's timesheet report showing target hours, actual hours logged, and variance. Can look up by employee name or default to the requesting user.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "68bcd70d71356aae60f34a7680ef94ff68198f8d66cc9f3dee05b02049b9c720"
        },
        "name": "get_employee_timesheet",
        "title": "Get employee timesheet"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get financial analytics"
        },
        "description": "Aggregate financial analytics for the organization. Use metric_type to pick the roll-up: 'project_margin_ranking' ranks projects by budget margin (best/worst), 'effective_bill_rate' returns the blended revenue-per-hour, 'utilization_rollup' returns team billable efficiency, 'revenue_summary' returns",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "40f59f5a7c254955a4da7b74dba7182bf4606b241d5650984166df917bc4559f"
        },
        "name": "get_financial_analytics",
        "title": "Get financial analytics"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get hours summary"
        },
        "description": "Get a summary of hours logged for a user or team over a date range",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "5417e99c0fb19f2075859bb1e569c5eb87c34f262a0c1f945a822b4e05add879"
        },
        "name": "get_hours_summary",
        "title": "Get hours summary"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get invoice"
        },
        "description": "Get the full details of a specific invoice by ID.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "093d44826b6b549cb52713b542d6c5af9185e1eb9ddbf22ce059a921c7513445"
        },
        "name": "get_invoice",
        "title": "Get invoice"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get my time analytics"
        },
        "description": "Get the current user's time entry analytics for a date range, including hours breakdown by project and customer, billable vs non-billable split, and target comparison",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "35ab67e53cfa7f5d0b22e973f51e644bb2b93212bf18f4eb386a79df41a1f7ab"
        },
        "name": "get_my_time_entries",
        "title": "Get my time analytics"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get project status"
        },
        "description": "Get detailed project status including budget, hours, and task breakdown",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "1652093e20563ebfe428d63f8c31f606ce138a416c85c92a90de34c46f5c3d66"
        },
        "name": "get_project_status",
        "title": "Get project status"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get project team"
        },
        "description": "Get the people associated with a project: who is ASSIGNED to it (formally responsible / accountable) and the TOP CONTRIBUTORS by hours logged (who is actually doing the work and driving the budget/overrun). Use this to answer 'who is responsible for / working on a project', especially when a project",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "b1e3fc84fe98483e0746219a6051d88b6acab9d7db08b835a729649f46b1f347"
        },
        "name": "get_project_team",
        "title": "Get project team"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get resource utilization"
        },
        "description": "Get team resource utilization summary showing target hours, actual hours, billable hours, and utilization percentage for the organization",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "fce626e3e01b9536bc5493809389dfaaae1519d1954b7a6eb2f7292efe872693"
        },
        "name": "get_resource_utilization",
        "title": "Get resource utilization"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get unbilled time"
        },
        "description": "Get a summary of unbilled time across the organization, including total hours, total amount, number of entries, and aging information",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "a2c799262a3ce3c19ef5cdd983bf3d12b43ab3c426227091b909dcb7054738c0"
        },
        "name": "get_unbilled_time",
        "title": "Get unbilled time"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": false,
          "openWorldHint": true,
          "readOnlyHint": false,
          "title": "Invite user"
        },
        "description": "Invite a person to join your organization by email at a chosen role. The organization is fixed by your context - never pass an organization id. Valid roles: Admin, Finance, Manager, Member, Viewer (you can only invite at a role no more privileged than your own). Once the user confirms, the invitatio",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "ccfe16b95431d7a920abe43336d2d352079547c034e83c55415cb19d154725e2"
        },
        "name": "invite_user",
        "title": "Invite user"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": true,
          "readOnlyHint": false,
          "title": "Issue invoice"
        },
        "description": "Issue a Draft invoice: assigns a gapless invoice number, locks the invoice as immutable, and marks source hours as Invoiced. IRREVERSIBLE \u2014 corrections require void + reissue. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "96824343b4f4c44b8cccef31d59afc1b6013b727b449d73b46e93f1d64068c96"
        },
        "name": "issue_invoice",
        "title": "Issue invoice"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "List customers"
        },
        "description": "List all customers in the organization",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "a2c799262a3ce3c19ef5cdd983bf3d12b43ab3c426227091b909dcb7054738c0"
        },
        "name": "list_customers",
        "title": "List customers"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "List favorites"
        },
        "description": "List the current user's saved time-entry favorites (quick-entry shortcuts).",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "a2c799262a3ce3c19ef5cdd983bf3d12b43ab3c426227091b909dcb7054738c0"
        },
        "name": "list_favorites",
        "title": "List favorites"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "List invoices"
        },
        "description": "List invoices for your organization, optionally filtered by customer and status.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "5067014cd6afb1b7ddd2a2c1d2e54f3eee96bdc8e7fbf51ce22b3b8429ca8c68"
        },
        "name": "list_invoices",
        "title": "List invoices"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "List my time entries"
        },
        "description": "List the current user's own individual time entries for a date range: for each, its time_report_id (what update_time_report and delete_time_report take), date, start and end time of day on the organization's clock, project and subtask names and ids, hours, description, billable flag and status. Use ",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "2593963365b4033a37259cac0cae0071548f7cd803bbfab0b0b5d966057e05f7"
        },
        "name": "list_my_time_entries",
        "title": "List my time entries"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "List projects"
        },
        "description": "List all projects in the organization with their status and budget information",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "23c34988a57b53de6fcd6a8cd2c45e43b9f4d5aa13f4903427197a9786b2a304"
        },
        "name": "list_projects",
        "title": "List projects"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Log time"
        },
        "description": "Create a single time entry on a subtask for the current user. Requires permission to log time.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "58231ba34353615cd87f0d02de3271c3affe2b8fd09c65cd103e641e8dcd57dc"
        },
        "name": "log_time",
        "title": "Log time"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Manage my work schedule"
        },
        "description": "Manage YOUR OWN personal work schedule. action is one of: create, update, delete, assign (assign = make a schedule your active one). For update/delete/assign, provide schedule_id. default_hours is your standard daily hours (for a simple schedule). The organization is fixed by your context, and you c",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "048418cb41b9654cc4d27fea33085beeb5034ecab98a23a6d976db1e638d4d1d"
        },
        "name": "manage_user_work_schedule",
        "title": "Manage my work schedule"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Mark invoice paid"
        },
        "description": "Mark an issued or sent invoice as Paid. Optionally record the paid amount and payment date. Returns a preview unless confirm=true is set.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "551f79b177080d9a9deaa6160ad1fa7f2d5c535d94b5d832a85f38592acd666b"
        },
        "name": "mark_invoice_paid",
        "title": "Mark invoice paid"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Link time entries to an invoice"
        },
        "description": "Mark one or more time reports as invoiced, optionally linking them to an existing invoice. Requires Manager role or above.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "e93eacbfb464373ebee410e3b3ded771a0219f90694bf8962863ace898b7b245"
        },
        "name": "mark_time_invoiced",
        "title": "Link time entries to an invoice"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Move project"
        },
        "description": "Move a billing project to a different customer within your organization. Both the project and the destination customer must belong to your organization. Requires Admin role or above.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "14f9c8c07f1433b69f89682d1f56b3657de7d7b8d31c33a07aa376af0b55481a"
        },
        "name": "move_project",
        "title": "Move project"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Move subtask"
        },
        "description": "Move a subtask to a different task within your organization. Both the subtask and the destination task must belong to your organization. Requires Admin role or above.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "9fded317ff267e4d26f1a6ddfa5f79f5175a3035cf8e439c3ec08aafb6d95621"
        },
        "name": "move_subtask",
        "title": "Move subtask"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Move task"
        },
        "description": "Move a task to a different billing project within your organization. Both the task and the destination project must belong to your organization. Requires Admin role or above.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "903f43780e35be97d7f9e90bc8727c0ccf96cf2311880a10c9cd9ee95a10b900"
        },
        "name": "move_task",
        "title": "Move task"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Permanently delete (irreversible)"
        },
        "description": "Permanently and IRREVERSIBLY hard-delete an entity from the recycle bin. The entity and all its children are removed from the database \u2014 this cannot be undone. Requires Admin role. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit. entity_ty",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "46d2643b98bab262ee4b502b50f2042b054bdad37cc699c0b0b7edc745a6178c"
        },
        "name": "permanent_delete_entity",
        "title": "Permanently delete (irreversible)"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Recall timesheet"
        },
        "description": "Withdraw your submitted timesheet for a given month back to Draft (un-submit), reopening entries for editing. Only valid while the period is Submitted \u2014 after approval ask a manager to reopen it. Supply year and month (1-12).",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "9ab42ae6a6d3975f7a5fa5920bc9f25b6cada1fae6f5e50d18aad6e9f34b3c8a"
        },
        "name": "recall_timesheet",
        "title": "Recall timesheet"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Void and redraft invoice"
        },
        "description": "Void an issued invoice and clone it into a new editable Draft (void + reissue). The original is voided and retained for audit; the new Draft can be edited then re-issued. The void is IRREVERSIBLE. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to c",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "92a054f9c563efa7cd65da205f737d4e938f08671571e5a719085f2fcb78fa90"
        },
        "name": "reissue_invoice",
        "title": "Void and redraft invoice"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Reject timesheet"
        },
        "description": "Reject a submitted timesheet period, returning it to the reporter for correction. The period and its time reports revert to Rejected (editable). A rejection comment is required. Use confirm=true to proceed. Requires Manager or Admin/Owner role (Finance is excluded \u2014 timesheet approval is PM work, no",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "2e0685906e7015790c1ae15b1937216308ba4f68cd4065db001105bf61a561ea"
        },
        "name": "reject_timesheet",
        "title": "Reject timesheet"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Remove user from organization"
        },
        "description": "Permanently remove an organization member. This action is IRREVERSIBLE \u2014 the user must be re-invited to rejoin. Returns a preview; re-call with the confirm_token and an idempotency_key to commit.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "b9b2c00ee11505a68e045baae051a549664dc9d4adb6ad90919654594fdf8ed7"
        },
        "name": "remove_user",
        "title": "Remove user from organization"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Remove user from project"
        },
        "description": "Remove an organization member's assignment from a specific project. The user will no longer have direct visibility to that project (they may still see it via a customer assignment). Requires org_user_id and project_id. The organization is fixed by your context \u2014 never pass an organization id. You ca",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "2cc7678b82058095d9ffa06a97e49e4d63d0b075c00d06267f1867a4b7d23038"
        },
        "name": "remove_user_project",
        "title": "Remove user from project"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Reopen billing month"
        },
        "description": "Reopen a previously closed billing month, allowing time to be logged and edited again. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit. Reversible only by closing the month again.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "a825f1f966b24a86d16a54b3ce114486b3e3470c8ff75ba6bcca6d0b4c22f9ff"
        },
        "name": "reopen_month",
        "title": "Reopen billing month"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Reopen timesheet"
        },
        "description": "Reopen a Submitted or Approved timesheet period for corrections. The period and its time reports revert to Rejected (editable), allowing the reporter to edit and resubmit. Use this when an approved period needs fixing. An optional comment can be provided. Use confirm=true to proceed. Requires Manage",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "74ca993b0a496662a3e22276eca68e36893e0bbb67feaf91cc66175ef8b1b6fc"
        },
        "name": "reopen_timesheet",
        "title": "Reopen timesheet"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": false,
          "openWorldHint": true,
          "readOnlyHint": false,
          "title": "Resend invite"
        },
        "description": "Re-send a pending invitation email to the invitee and reset its status to Pending. Requires the invite_id (discover it via list of pending invites). The organization is fixed by your context \u2014 never pass an organization id.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "938ff9273dad45e2926b0f9841ebe1d53c293fffec642f8d5a66bab5634e5735"
        },
        "name": "resend_invite",
        "title": "Resend invite"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Restore from recycle bin"
        },
        "description": "Restore a soft-deleted entity (customer, project, task, or subtask) and all its children from the recycle bin. Requires Admin role. entity_type must be one of: Customer, Project, Task, SubTask. Refused (CONFLICT.STATE_CONFLICT, reason PARENT_IN_RECYCLE_BIN) while the customer, project or task it bel",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "0bf6aea4722b03065822907820c5b6e6e3c5dcae39ff3721aefb9d1daf9f4ae2"
        },
        "name": "restore_entity",
        "title": "Restore from recycle bin"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Mark invoice as sent"
        },
        "description": "Record that an issued invoice has been sent to the customer, by setting its status to Sent. It does not e-mail or deliver the invoice: use it after the user has sent the invoice themselves. The invoice must already be in Issued status. Returns a preview unless confirm=true is set.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "694ef82feba10142ed075067bd1350db538fef842496b177e2e20f42331ba2ed"
        },
        "name": "send_invoice",
        "title": "Mark invoice as sent"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Set budget thresholds"
        },
        "description": "Set the organization-level budget alert thresholds. budget_warning_threshold_percent is the utilization % at which a project is flagged At-Risk; budget_critical_threshold_percent is the % at which it is flagged Over-Budget. The warning threshold must be strictly less than the critical threshold. Sup",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "476b5a63af88af53bf80d6198206bfe1604d0b83996060c50be083640b9476ac"
        },
        "name": "set_budget_thresholds",
        "title": "Set budget thresholds"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Set custom field value"
        },
        "description": "Set the value of a custom field on a specific entity (a project, task, subtask, time report, or customer). The custom field must already be defined for that entity type. The organization is fixed by your context. You must have permission to update the target entity. The value is checked the way the ",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "7bc3314cfb807353c3023c68014b47413e1648f1e33e9c062c1960fb8ca8e058"
        },
        "name": "set_custom_field_value",
        "title": "Set custom field value"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Set organization work schedule"
        },
        "description": "Create or update a named organization-level work schedule (a weekly working-time profile). Provide schedule_id to update an existing one, or omit it to create a new one. weekly_schedule is a JSON object mapping lowercase day names to a working window, e.g. {\"monday\":{\"start\":\"09:00\",\"end\":\"18:00\"},\"",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "a47366af5464fe586decc9af67c2b97a7e4c3627cd9e24f0599276eb8711aded"
        },
        "name": "set_org_work_schedule",
        "title": "Set organization work schedule"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Set user cost rate"
        },
        "description": "Set the internal hourly COST rate for one member of your organization (used for profit/margin reporting). The organization is fixed by your context - never pass an organization id. You cannot set your own cost rate. The rate value is never echoed back.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "c3a6634d19aa155bb0805a0b785fb83d056a6f7db13235fd0383a27b8983dfc6"
        },
        "name": "set_user_cost_rate",
        "title": "Set user cost rate"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Start timer (replaces a running one)"
        },
        "description": "Start (or replace) your running timer on a subtask. There is at most one running timer per user; starting a new one replaces any existing. Stop it later with stop_timer to create a Draft time entry, or cancel it with cancel_timer to discard it. Supply subtask_id.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "2f8454b5d1d519d7f9eeb5b8d56b4e4a0ca5be936583e4b3195a3b31374a8c09"
        },
        "name": "start_timer",
        "title": "Start timer (replaces a running one)"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Stop timer"
        },
        "description": "Stop your running timer (a paused one too). The time it ran - its pauses left out - is saved as a Draft time entry automatically. Returns the created time entry. No arguments needed.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "5a43d82beb7ee99d4498190c9dab74dcec80aa75ad6ef1f3c1b7714a886ec56b"
        },
        "name": "stop_timer",
        "title": "Stop timer"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Submit timesheet"
        },
        "description": "Submit your time entries for a given month for manager approval. Draft and Rejected entries in the month are transitioned to Submitted. A billing-closed month cannot be submitted. Supply year and month (1-12).",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "893f54476680e03c36f4100f13f8df2af64b83e4069b5f0b6dbd669b897e26d5"
        },
        "name": "submit_timesheet",
        "title": "Submit timesheet"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true,
          "readOnlyHint": true,
          "title": "Suggest holiday profile"
        },
        "description": "Look up the official public/national holidays for a country (ISO-2 code, e.g. US, IL, GB) and year from an authoritative public source (Hebcal for Israel, Nager.Date for everywhere else). Returns a DRAFT list of holiday dates: each is either a full day off or a half/partial working day (with a start",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "162e22acb9f65fd79817e2f886631ba6948a47973931652d6bce477e0f9255bf"
        },
        "name": "suggest_holiday_profile",
        "title": "Suggest holiday profile"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Undo write-off"
        },
        "description": "Reverse the most-recent write-off on a time report, restoring the written-off hours to the billable pool. The billing month must still be open. Requires Finance role or above.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "25d006972d7bd16c31f2d19b87556ff843139fb56248b1245fd4232895b43335"
        },
        "name": "undo_write_off",
        "title": "Undo write-off"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Update custom field"
        },
        "description": "Update an existing custom field definition (title, type, options, or mandatory flag) in your organization. The organization is fixed by your context. You cannot change a field's field_id or the entity it applies to. Only the properties you supply are changed.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "624afa32eb8cd7f8572c6a8a962aa8df4d5176abc87942e1fef7382c22769c3e"
        },
        "name": "update_custom_field",
        "title": "Update custom field"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Update customer"
        },
        "description": "Update an existing billing customer in your organization. Only the fields you provide are changed; everything else is left as-is (PATCH semantics). Discover ids with find_billing_work - never ask the user for an id.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "2e08853a44c375495d61308e1e19dfecf9b0e5a58d46e3201fcbed73eef91545"
        },
        "name": "update_customer",
        "title": "Update customer"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Update draft invoice"
        },
        "description": "Update editable fields on a DRAFT invoice (notes, internal notes, payment terms, payment instructions, due date, purchase order number). Only valid while the invoice is still a Draft. Only the fields you send change; an empty value counts as not sent, so a field can be replaced but not cleared here ",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "b884c8a29dea3adc98c57a535842a472e66333579eb93af9a0c7f1534a86dac2"
        },
        "name": "update_draft_invoice",
        "title": "Update draft invoice"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Update frame order"
        },
        "description": "Update an Open frame order's editable fields (reference, description, caps, dates, currency, notes). Closed frame orders cannot be edited; use this only for Open frame orders.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "d16e1b5894585540c092948a0dd1da9634e5334850de4b28943a150c07f0cb79"
        },
        "name": "update_frame_order",
        "title": "Update frame order"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Update holiday profile"
        },
        "description": "Update an existing holiday profile in your organization (name, holiday list, default-for-countries, active flag, or notes). The organization is fixed by your context. A profile's year cannot be changed. Only the fields you supply are changed; supplying holidays REPLACES the profile's holiday list. H",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "0b3335809cfb4c06390792ee6a12761a7ca48daea450be3d495a561cd1c0dbb7"
        },
        "name": "update_holiday_profile",
        "title": "Update holiday profile"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Update organization settings"
        },
        "description": "Update core settings for your organization: name, country, default_time_zone, base_currency, first_day_of_month (1-28), auto_close_month_after_days, and the budget alert thresholds (budget_warning_threshold_percent must be less than budget_critical_threshold_percent). The organization is fixed by yo",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "675fcd623f2931a1190fcf7b3eaa87cd39b2a0fc5ae84788dfd44cc24629f0c8"
        },
        "name": "update_org_settings",
        "title": "Update organization settings"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Update project"
        },
        "description": "Update an existing billing project in your organization. Only the fields you provide are changed (PATCH semantics). You can rename the project, update its description, change its status, toggle which billing types are allowed (TM/Fix/OVH), and set per-type hour limits. Discover ids with find_billing",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "8ed44a72f88f7a3b60204f472ffd6422532bd38d71b94187c476032a69cf15f3"
        },
        "name": "update_project",
        "title": "Update project"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Update subtask"
        },
        "description": "Update an existing subtask in your organization. Only the fields you provide are changed (PATCH semantics). You can rename the subtask, update its description, change its status, billing type, and set an hour limit. Discover ids with find_billing_work - never ask the user for an id.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "dcad46ad29b68e0267cb417d98f89cd29d5ebbbb2a53d4e9b2587cb81d64f876"
        },
        "name": "update_subtask",
        "title": "Update subtask"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Update task"
        },
        "description": "Update an existing task in your organization. Only the fields you provide are changed (PATCH semantics). You can rename the task, update its description, change its status, and set per-type hour limits. Discover ids with find_billing_work - never ask the user for an id.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "86bf8b00c3a2106630c225df6d7cd222bbeaf7516322d906c0adbf86be3fc2e7"
        },
        "name": "update_task",
        "title": "Update task"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Update time entry"
        },
        "description": "Update fields on one of your own time entries (PATCH \u2014 only the fields you supply are changed; everything else is left as-is). Supply the time_report_id plus any combination of date, start_time, hours, and text.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "5b3742c795e9f2f9321ce7999c5305632ec564d24c8f32e4b122c69dca816eed"
        },
        "name": "update_time_report",
        "title": "Update time entry"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Update my preferences"
        },
        "description": "Update your own UI preferences: default time-entry view, sub-views, theme, and time format. Only the fields you provide are changed (PATCH semantics). Applies to your account globally across all organizations. The user is fixed by your context \u2014 you can only change your own preferences.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "570fcfcdbb031553630e10a9d142d656fb7e87c93507bb06792db67d8621038a"
        },
        "name": "update_user_preferences",
        "title": "Update my preferences"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Update team member profile"
        },
        "description": "Update a team member's organization-profile fields: first name, last name, country, timezone, and job title. Only the fields you provide are changed (PATCH semantics). Role changes are not supported here \u2014 use the dedicated role-change tool. The organization is fixed by your context \u2014 never pass an ",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "52179ace86b515cd6a9ad77de07f644f5e0a13d25392eb0c7c24b67109880943"
        },
        "name": "update_user_profile",
        "title": "Update team member profile"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Void invoice"
        },
        "description": "Void an issued invoice (reason required): releases source hours back to Approved and retains the immutable void record. IRREVERSIBLE. Call once with no token to preview; re-call with the returned confirm_token and an idempotency_key to commit.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "3d06912512bc2d2d9451f5b8177b136ebe294d44c3aaebb77477bbab80b02560"
        },
        "name": "void_invoice",
        "title": "Void invoice"
      },
      {
        "annotations": {
          "destructiveHint": true,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Write off time"
        },
        "description": "Write off hours from an approved time report, removing them from the billable pool without invoicing (e.g. discounts or goodwill). Requires Finance role or above.",
        "inputSchema": {
          "bytes": null,
          "published": "HASH_ONLY",
          "sha256": "3fc00b768b05c2f640c900210826133e69cfa8397e29742420679db58b066679"
        },
        "name": "write_off_time",
        "title": "Write off time"
      }
    ],
    "version": "1.0.0"
  },
  "status_history": [
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "f365de8010626ed25c14da35f2f4bb6c83f947f55a34afb91745fb8f51012cd9",
      "observed_at_utc": "2026-11-12T21:22:42Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "71b46000f76ff9d951874834cf493b5777f8d9d975c803b0a4c150c74c5e6173",
      "observed_at_utc": "2026-11-11T20:42:11Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "71b46000f76ff9d951874834cf493b5777f8d9d975c803b0a4c150c74c5e6173",
      "observed_at_utc": "2026-11-10T19:04:11Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "71b46000f76ff9d951874834cf493b5777f8d9d975c803b0a4c150c74c5e6173",
      "observed_at_utc": "2026-11-09T18:24:56Z",
      "protocol_version": "2025-11-25"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "aee546944b7db419066cbdfafe0051b7d94a8e2e22ac2402c7ba82956631999a",
      "observed_at_utc": "2026-11-08T17:36:18Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "aee546944b7db419066cbdfafe0051b7d94a8e2e22ac2402c7ba82956631999a",
      "observed_at_utc": "2026-11-07T16:08:52Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "aee546944b7db419066cbdfafe0051b7d94a8e2e22ac2402c7ba82956631999a",
      "observed_at_utc": "2026-11-06T14:36:20Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "aee546944b7db419066cbdfafe0051b7d94a8e2e22ac2402c7ba82956631999a",
      "observed_at_utc": "2026-11-05T12:37:57Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "aee546944b7db419066cbdfafe0051b7d94a8e2e22ac2402c7ba82956631999a",
      "observed_at_utc": "2026-11-04T11:50:56Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "c7241693a01968887fc1275d33b75e328947e22459136b0c79abbfed0b33395f",
      "observed_at_utc": "2026-11-03T10:21:22Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "20e92b3c100a564d792a7e632d2eab6c2ab26926929f36067a5ad70b5ad1df6c",
      "observed_at_utc": "2026-11-02T09:11:48Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "84001daa95de2cc8bdac27a7f2c0b1285a311f6dbd06524e14d6ed5bc9541584",
      "observed_at_utc": "2026-11-01T08:30:52Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "84001daa95de2cc8bdac27a7f2c0b1285a311f6dbd06524e14d6ed5bc9541584",
      "observed_at_utc": "2026-10-31T07:52:11Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "84001daa95de2cc8bdac27a7f2c0b1285a311f6dbd06524e14d6ed5bc9541584",
      "observed_at_utc": "2026-10-30T07:07:23Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "84001daa95de2cc8bdac27a7f2c0b1285a311f6dbd06524e14d6ed5bc9541584",
      "observed_at_utc": "2026-10-29T06:29:14Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "84001daa95de2cc8bdac27a7f2c0b1285a311f6dbd06524e14d6ed5bc9541584",
      "observed_at_utc": "2026-10-28T05:45:16Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "84001daa95de2cc8bdac27a7f2c0b1285a311f6dbd06524e14d6ed5bc9541584",
      "observed_at_utc": "2026-10-27T05:07:50Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "84001daa95de2cc8bdac27a7f2c0b1285a311f6dbd06524e14d6ed5bc9541584",
      "observed_at_utc": "2026-10-26T04:19:10Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "observed_at_utc": "2026-10-25T03:41:00Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "observed_at_utc": "2026-10-24T03:03:14Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "observed_at_utc": "2026-10-23T02:17:14Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "observed_at_utc": "2026-10-22T01:28:09Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "observed_at_utc": "2026-10-21T00:43:49Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "observed_at_utc": "2026-10-19T22:26:45Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "observed_at_utc": "2026-10-18T21:49:35Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "observed_at_utc": "2026-10-17T21:02:11Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "observed_at_utc": "2026-10-16T20:19:10Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "observed_at_utc": "2026-10-15T19:39:08Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "observed_at_utc": "2026-10-14T19:00:20Z",
      "protocol_version": "2025-06-18"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5318d92bc3d1525150956fe55ff0bd6f74ae1457f3499342c37f581767e4ad31",
      "observed_at_utc": "2026-10-13T18:20:35Z",
      "protocol_version": "2025-06-18"
    }
  ],
  "target": {
    "corrections_route": "https://www.gaipagents.com/v1/free/observatory/corrections",
    "first_seen_at_utc": "2026-09-29T02:55:24Z",
    "kind": "MCP_REMOTE",
    "last_observed_at_utc": "2026-11-12T21:22:42Z",
    "locator": "https://api.timix.ai/api/integration/v1/mcp",
    "name": "ai.timix/time-tracking",
    "source": "official-mcp-registry",
    "target_id": "obs_3730bc1cf11024c2399920c6"
  }
}