Tools for agents: Shared free-window finder

Find common free windows across agent schedules by combining busy intervals and filtering by required duration.

Connect with MCP

{
  "mcpServers": {
    "super-agent-tools": {
      "url": "https://app.getsupers.com/sites/agent-free-windows/mcp"
    }
  }
}
Streamable HTTP · No API key · Stateless

Use this URL in any client supporting remote Streamable HTTP MCP. Calls return structured JSON; inputs are processed without persistence.

Call find_shared_free_windows

Provide all known busy intervals for every participant, including an empty list for a fully free agent. Times require explicit UTC offsets or Z and are normalized to UTC. Intervals are half-open: an event ending at 10:00 does not block one starting at 10:00. Busy intervals are clipped to the requested window and overlaps are merged. Results are maximal free intervals meeting the duration, not enumerated appointment start times. There is no recurrence expansion, timezone-name/DST inference, calendar lookup or booking. Incomplete input schedules yield incomplete availability evidence.

Input and output schemas
{
  "name": "find_shared_free_windows",
  "title": "Shared free-window finder",
  "description": "Find maximal UTC windows where all named agents are free, subject to a minimum duration. Intervals are half-open [start,end). No calendar access or bookings.",
  "inputSchema": {
    "$defs": {
      "BusyInterval": {
        "properties": {
          "start": {
            "title": "Start",
            "type": "string"
          },
          "end": {
            "title": "End",
            "type": "string"
          }
        },
        "required": [
          "start",
          "end"
        ],
        "title": "BusyInterval",
        "type": "object"
      }
    },
    "properties": {
      "window_start": {
        "title": "Window Start",
        "type": "string"
      },
      "window_end": {
        "title": "Window End",
        "type": "string"
      },
      "busy_by_agent": {
        "additionalProperties": {
          "items": {
            "$ref": "#/$defs/BusyInterval"
          },
          "type": "array"
        },
        "title": "Busy By Agent",
        "type": "object"
      },
      "minimum_minutes": {
        "default": 30,
        "exclusiveMinimum": 0,
        "title": "Minimum Minutes",
        "type": "number"
      }
    },
    "required": [
      "window_start",
      "window_end",
      "busy_by_agent"
    ],
    "title": "find_shared_free_windowsArguments",
    "type": "object"
  },
  "outputSchema": {
    "additionalProperties": true,
    "title": "find_shared_free_windowsDictOutput",
    "type": "object"
  },
  "icons": null,
  "annotations": {
    "title": null,
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "meta": null,
  "execution": null
}

Run the example to see the actual result.

HTTP alternative

POST https://app.getsupers.com/sites/agent-free-windows/call
Content-Type: application/json

{
  "window_start": "2026-10-01T09:00:00Z",
  "window_end": "2026-10-01T13:00:00Z",
  "busy_by_agent": {
    "research": [
      {
        "start": "2026-10-01T09:30:00Z",
        "end": "2026-10-01T10:30:00Z"
      }
    ],
    "review": [
      {
        "start": "2026-10-01T06:00:00-04:00",
        "end": "2026-10-01T07:00:00-04:00"
      }
    ]
  },
  "minimum_minutes": 30
}

The HTTP and MCP interfaces execute the same implementation. Validation errors are returned explicitly. See the tool notes above for its supported inputs and behavior.

Shared free windows: normalize, merge and filter

Read the explanation

The saved shared-window form gives an overall window from nine to thirteen UTC on October first. Research is busy from nine thirty to ten thirty UTC. Review is busy from six to seven with a minus four hour offset, equivalent to ten to eleven UTC. Both intervals last one hour. The diagram places them on the same time axis, starting at nine UTC on the left, at two hundred twenty pixels per hour. Research begins one hundred ten pixels after the origin and review begins two hundred twenty pixels after it. Their half-hour overlap is one hundred ten pixels wide. Normalizing offsets before comparing intervals prevents six oclock in one timezone from being treated as six UTC. This is arithmetic derived from the visible example and documentation, not an observed HTTP or MCP result. The union of the two overlapping busy intervals is nine thirty through eleven UTC, ninety minutes. Its width is three hundred thirty pixels on this time axis. After eleven, the common free interval extends to thirteen, two hours or four hundred forty pixels. A second free interval exists before the busy union, from nine to nine thirty, lasting thirty minutes. Combining all busy intervals then taking the complement of the overall window gives times when every agent is free. Treating overlapping busy time as two separate subtraction operations must not double count the shared half hour. These intervals are interpreted as half open: the start is included and the end is excluded. The diagram teaches the documented interval contract, while live boundary and validation responses remain untested in this local run. At the saved minimum duration of thirty minutes, the first thirty minute free interval and the second one hundred twenty minute interval both qualify. Their length comparison uses three pixels per minute, giving ninety and three hundred sixty pixels. Raising the minimum to an illustrative forty five minutes removes the first whole interval and retains the second. It does not split or shorten the second interval. The visible input schema requires window start, window end and a mapping from agent identifiers to busy interval arrays. Minimum minutes defaults to thirty and must be strictly positive. Interval endpoints are strings in the schema; the documented tool applies datetime semantics. The copied form relies on a shared application script and service implementation that are unavailable here. The explainer therefore provides the exact visible example and mathematical reasoning, without claiming backend execution, current calendar access or a newly verified structured result.

Shared Free-Window Computation for Multi-Agent Calendaring

How does the tool calculate common free windows across autonomous agents from heterogeneous schedule intervals?

The tool computes shared availability across agents by parsing ISO 8601 timestamps into absolute UTC points, clipping busy intervals to an evaluation window, merging overlapping half-open spans [start, end), and computing the complement intervals that meet or exceed a specified minimum duration.

The implementation performs stateless in-memory interval arithmetic on provided strings. It does not look up live calendar APIs, expand recurrence rules (RRULE), parse named timezones (e.g. 'America/New_York' without explicit numeric offsets), or reserve bookings on target systems.

Try a worked example

Using the prefilled 09:00:00Z to 13:00:00Z evaluation window, submit the form with 'Run tool'. The research agent's busy span (09:30 to 10:30 UTC) and the review agent's busy span (06:00:00-04:00 to 07:00:00-04:00, which normalizes to 10:00 to 11:00 UTC) merge into a single contiguous busy block [09:30:00Z, 11:00:00Z). Subtracting this block from [09:00:00Z, 13:00:00Z) leaves two free windows meeting the 30-minute threshold: 09:00:00Z to 09:30:00Z (30 minutes) and 11:00:00Z to 13:00:00Z (120 minutes).

Timestamp Normalization and Offset Resolution

Every input timestamp requires an explicit UTC designator ('Z') or numeric timezone offset ('+HH:MM' or '-HH:MM'). As defined in RFC 3339, numeric offsets represent a fixed deviation from Coordinated Universal Time (UTC), allowing exact instantaneous ordering across disparate local clocks. RFC 3339: Date and Time on the Internet: Timestamps

The tool parses each ISO 8601 string into a UTC datetime instance, discarding local conventions and potential ambiguous wall-clock changes during daylight saving transitions. RFC 3339: Date and Time on the Internet: Timestamps

Half-Open Interval Semantics and Busy Merging

Calendar scheduling protocols such as RFC 5545 (iCalendar VFREEBUSY) model busy spans as half-open intervals [start, end), meaning that the end timestamp is non-inclusive. Under this definition, an event concluding at 10:00:00 does not conflict with an adjacent event beginning at 10:00:00. RFC 5545: Internet Calendaring and Scheduling Core Object Specification (iCalendar)

After sorting all busy spans across all agents, any intervals that overlap or touch (a <= previous_end) merge into unified busy blocks. The tool then walks a timeline cursor from window_start to window_end across the merged union, collecting gaps whose duration satisfies the minimum_minutes parameter. RFC 5545: Internet Calendaring and Scheduling Core Object Specification (iCalendar)

Sources and further reading