get_next_available_slots
Get Next Available Slots. Get the next N available posting slots based on your schedule template and already-scheduled notes.
| Group | Access | MCP name |
|---|---|---|
| Schedule | Read-only | get_next_available_slots |
Description
The description the MCP server sends to the model, word for word. Its rules apply to every call.
Get the next N available posting slots based on your schedule template and already-scheduled notes. Pass tagNames to preview as if scheduling a note with those tags (first open or matching reserved lane; tagged previews skip untagged-only times). Omit tagNames to list the next free times in chronological order, including reserved and untagged-only times that are currently empty — do not assume an untagged note can use reserved times, or that a tagged note can use untagged-only times. Each result includes source (lane | open | any), the slot's tags, and untaggedNotesOnly. Call this before schedule_notes to preview when notes would be scheduled. Queue routing: each weekly time can reserve tags, accept only untagged notes, or stay open for any note, and may also set default Buffer channels. A time with tags is a reserved lane — it stays empty until a note shares ANY of those tags (OR). A time marked untaggedNotesOnly (and with no tags) accepts only notes with no tags; tagged notes never take those times, including Add to Queue leftovers. Untagged notes never take reserved lanes. When filling the next template times (schedule_notes), a tagged note takes the first open (any-note) time or matching reserved lane, whichever comes first. An untagged note takes the first open or untagged-only time. If a time has Buffer channels, those replace the note's channels when the note lands there (apply-on-schedule only). Substack still always posts. Call get_schedule to see each slot's tags, untaggedNotesOnly, and bufferChannels.
Arguments
| Argument | Type | Required | Description |
|---|---|---|---|
count | number | Yes | Number of available slots to return (1–100) Min 1. Max 100. |
tagNames | string[] | No | Optional tag names to preview as if scheduling a note with those tags. Uses the first open (any-note) time or matching reserved lane, whichever comes first. Tagged previews skip untagged-only times. Several slot tags are OR — one shared tag is enough. Omit to list the next free times in chronological order, including reserved and untagged-only times that are currently empty — do not assume an untagged note can use reserved times, or that a tagged note can use untagged-only times. Call list_tags first if you need valid names. |
Example call
The smallest valid request: required arguments only, with placeholder values.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_next_available_slots",
"arguments": {
"count": 1
}
}
}Result
The result has structuredContent that matches this schema. The same data is also in content as JSON text.
| Field | Type | Required | Description |
|---|---|---|---|
count | number | Yes | |
slots | object[] | Yes | |
slots[].date | string | Yes | |
slots[].formatted | string | Yes | |
slots[].source | string | No | One of: "lane", "open", "any". |
slots[].tags | string[] | No | |
slots[].untaggedNotesOnly | boolean | No | |
timezone | string | Yes |
Annotations
| Hint | Value |
|---|---|
readOnlyHint | true |
destructiveHint | false |
openWorldHint | false |
The full input and output JSON Schemas for every tool are in /mcp-tools.json.