{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_wpj2qx82r3gy","handle":"volunteerreminder","url":"https://wellknown.network/agents/volunteerreminder","links":{"self":"https://wellknown.network/agents/volunteerreminder/record.json","html":"https://wellknown.network/agents/volunteerreminder","markdown":"https://wellknown.network/agents/volunteerreminder/record.md","api":"https://wellknown.network/api/v1/agents/volunteerreminder","status":"https://wellknown.network/api/v1/agents/volunteerreminder/status","claim":"https://wellknown.network/agents/volunteerreminder/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/volunteerreminder/claim.json","badge":"https://wellknown.network/agents/volunteerreminder/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/volunteerreminder/history","tools":"https://wellknown.network/api/v1/agents/volunteerreminder/tools"},"ard":{"identifier":"urn:air:mcp.volunteerreminder.com:server:volunteerreminder","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"VolunteerReminder","summary":"Import a volunteer roster and preview shifts. Test-mode until a human enables live SMS.","description":"Import a volunteer roster and preview shifts. Test-mode until a human enables live SMS.","publisher":{"name":"com.volunteerreminder","url":null},"homepage":"https://volunteerreminder.com/docs/agents","repository":"https://github.com/talltimbersgroup/VolunteerReminder","version":"0.3.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.volunteerreminder.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-07T23:08:48.268418Z","publishedAt":"2026-09-07T23:08:48.268418Z","registryName":"com.volunteerreminder/mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"commerce.payments","name":"Payments","confidence":1,"provenance":"derived"},{"slug":"communication.sms-voice","name":"SMS & Voice","confidence":1,"provenance":"derived"},{"slug":"productivity.tasks","name":"Tasks & To-do","confidence":0.54,"provenance":"derived"},{"slug":"automation.scheduling","name":"Scheduling & Cron","confidence":0.54,"provenance":"derived"},{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":0.525,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.51,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":0.51,"provenance":"derived"},{"slug":"communication.chat","name":"Team Chat","confidence":0.51,"provenance":"derived"}],"categories":["automation","commerce","communication","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 6m ago.","lastOkAt":"2026-10-10T01:24:48.293Z","lastProbedAt":"2026-10-10T01:24:48.293Z","statusComputedAt":"2026-10-10T01:26:06.523Z","reliability30d":{"probes":108,"successRate":1,"p50Ms":36,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":108,"ok":108,"authBoundaryOk":0,"serviceOk":108,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T01:24:48.293Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":19,"error":null,"detail":{"tools":[{"name":"get_account_overview","description":"Read the current VolunteerReminder account: organization name, plan and entitlements, current reminder send mode, and volunteer usage vs the plan limit. Call th"},{"name":"list_schedules","description":"List all active (non-archived) schedules on the account, each with its description, job/role, next upcoming occurrence, and how many volunteers are rostered. Re"},{"name":"get_schedule","description":"Get one schedule's full configuration: recurrence settings, job/role, group, roster (contact ids), start/end dates, and notes. Requires the `read` scope."},{"name":"preview_schedule_occurrences","description":"PURE and side-effect-free: computes the next occurrence dates a recurrence configuration WOULD produce, without creating anything. Use this to show the user the"},{"name":"get_upcoming_shifts","description":"List a schedule's upcoming occurrences (shifts) in a date range, each with its date/time, whether the roster is attending that date, and the assigned volunteers"},{"name":"create_schedule","description":"Create a recurring (or custom-date) schedule and materialize its upcoming occurrences. Best practice: call preview_schedule_occurrences with the same recurrence"},{"name":"update_schedule","description":"Partially update a schedule — send only the fields you want to change; unset fields keep their current value. Changing recurrence fields recomputes and re-mater"},{"name":"archive_schedule","description":"Archive (soft-delete) a schedule. It stops appearing in the active list and no further reminders go out for it, but past reminder history is preserved. This is "},{"name":"list_contacts","description":"List all volunteers on the account's roster, each with contact details and group. Requires the `read` scope."},{"name":"add_contacts","description":"Add one or more volunteers to the roster in a single call. ALL-OR-NOTHING: if the batch would push the account past its plan's volunteer limit, or any contact r"},{"name":"update_contact","description":"Update a volunteer's details. Send only the fields you want to change; a field set to null clears it. Requires the `contacts:write` scope."},{"name":"remove_contact","description":"Remove (soft-delete) a volunteer from the roster. This frees a volunteer-cap slot and removes them from any schedule rosters they were on. Confirm with the user"},{"name":"assign_contacts_to_schedule","description":"Assign volunteers to a schedule. This REPLACES the schedule's entire roster — send the COMPLETE desired set of contact ids, not a delta (pass an empty array to "},{"name":"import_volunteer_schedule","description":"Parse a pasted or uploaded volunteer roster + schedule (CSV or a table with columns like name, phone, email, job/role, day, start, end) and either PREVIEW or CR"},{"name":"get_open_days","description":"List calendar days in the look-ahead window that have no attendable shift yet, plus recurring monthly slots not yet claimed by a schedule — i.e. where the accou"},{"name":"get_reminder_settings","description":"Read the account's reminder lead times (the account-wide default plus any per-job overrides) and which channels (email / SMS) are available on the current plan."},{"name":"get_send_history","description":"Read recent reminder outcomes — which reminders were sent and which failed — newest first, paginated. Use this to confirm reminders actually went out. Requires "},{"name":"set_reminder_rule","description":"Set the reminder lead time: the account-wide default and/or a per-job override. Provide at least one of `global_default` or `job_override`, and set at least one"},{"name":"remove_reminder_rule","description":"Remove a reminder lead-time rule. Provide `job_id` to remove that job's override; omit it to clear the account-wide default. Returns the updated reminder settin"},{"name":"send_test_reminder","description":"Send a single TEST reminder to the account owner's own email/phone so they can preview what a reminder looks like. This never reaches volunteers — it always rer"},{"name":"get_pricing","description":"Read VolunteerReminder's public plan catalog: each plan's monthly and annual price (USD), volunteer limit, and included features (SMS reminders are included wit"},{"name":"create_account","description":"Start a new VolunteerReminder account for a human, using their email address. This does NOT finish signup and does NOT return an API key: it emails the person a"},{"name":"start_checkout","description":"Get a Stripe-hosted Checkout URL for the account to subscribe to a paid plan, then HAND THE URL TO THE HUMAN to open and complete payment. You never take paymen"}],"toolCount":23,"toolsHash":"4f15f9e9cddc3dbf1749bfdf0629038cd2d53f6e4cf97f6a6858872c7ebe546b","serverName":"volunteerreminder","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T18:25:09.249Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":37,"error":null,"detail":{"tools":[{"name":"get_account_overview","description":"Read the current VolunteerReminder account: organization name, plan and entitlements, current reminder send mode, and volunteer usage vs the plan limit. Call th"},{"name":"list_schedules","description":"List all active (non-archived) schedules on the account, each with its description, job/role, next upcoming occurrence, and how many volunteers are rostered. Re"},{"name":"get_schedule","description":"Get one schedule's full configuration: recurrence settings, job/role, group, roster (contact ids), start/end dates, and notes. Requires the `read` scope."},{"name":"preview_schedule_occurrences","description":"PURE and side-effect-free: computes the next occurrence dates a recurrence configuration WOULD produce, without creating anything. Use this to show the user the"},{"name":"get_upcoming_shifts","description":"List a schedule's upcoming occurrences (shifts) in a date range, each with its date/time, whether the roster is attending that date, and the assigned volunteers"},{"name":"create_schedule","description":"Create a recurring (or custom-date) schedule and materialize its upcoming occurrences. Best practice: call preview_schedule_occurrences with the same recurrence"},{"name":"update_schedule","description":"Partially update a schedule — send only the fields you want to change; unset fields keep their current value. Changing recurrence fields recomputes and re-mater"},{"name":"archive_schedule","description":"Archive (soft-delete) a schedule. It stops appearing in the active list and no further reminders go out for it, but past reminder history is preserved. This is "},{"name":"list_contacts","description":"List all volunteers on the account's roster, each with contact details and group. Requires the `read` scope."},{"name":"add_contacts","description":"Add one or more volunteers to the roster in a single call. ALL-OR-NOTHING: if the batch would push the account past its plan's volunteer limit, or any contact r"},{"name":"update_contact","description":"Update a volunteer's details. Send only the fields you want to change; a field set to null clears it. Requires the `contacts:write` scope."},{"name":"remove_contact","description":"Remove (soft-delete) a volunteer from the roster. This frees a volunteer-cap slot and removes them from any schedule rosters they were on. Confirm with the user"},{"name":"assign_contacts_to_schedule","description":"Assign volunteers to a schedule. This REPLACES the schedule's entire roster — send the COMPLETE desired set of contact ids, not a delta (pass an empty array to "},{"name":"import_volunteer_schedule","description":"Parse a pasted or uploaded volunteer roster + schedule (CSV or a table with columns like name, phone, email, job/role, day, start, end) and either PREVIEW or CR"},{"name":"get_open_days","description":"List calendar days in the look-ahead window that have no attendable shift yet, plus recurring monthly slots not yet claimed by a schedule — i.e. where the accou"},{"name":"get_reminder_settings","description":"Read the account's reminder lead times (the account-wide default plus any per-job overrides) and which channels (email / SMS) are available on the current plan."},{"name":"get_send_history","description":"Read recent reminder outcomes — which reminders were sent and which failed — newest first, paginated. Use this to confirm reminders actually went out. Requires "},{"name":"set_reminder_rule","description":"Set the reminder lead time: the account-wide default and/or a per-job override. Provide at least one of `global_default` or `job_override`, and set at least one"},{"name":"remove_reminder_rule","description":"Remove a reminder lead-time rule. Provide `job_id` to remove that job's override; omit it to clear the account-wide default. Returns the updated reminder settin"},{"name":"send_test_reminder","description":"Send a single TEST reminder to the account owner's own email/phone so they can preview what a reminder looks like. This never reaches volunteers — it always rer"},{"name":"get_pricing","description":"Read VolunteerReminder's public plan catalog: each plan's monthly and annual price (USD), volunteer limit, and included features (SMS reminders are included wit"},{"name":"create_account","description":"Start a new VolunteerReminder account for a human, using their email address. This does NOT finish signup and does NOT return an API key: it emails the person a"},{"name":"start_checkout","description":"Get a Stripe-hosted Checkout URL for the account to subscribe to a paid plan, then HAND THE URL TO THE HUMAN to open and complete payment. You never take paymen"}],"toolCount":23,"toolsHash":"4f15f9e9cddc3dbf1749bfdf0629038cd2d53f6e4cf97f6a6858872c7ebe546b","serverName":"volunteerreminder","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T11:26:58.964Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":39,"error":null,"detail":{"tools":[{"name":"get_account_overview","description":"Read the current VolunteerReminder account: organization name, plan and entitlements, current reminder send mode, and volunteer usage vs the plan limit. Call th"},{"name":"list_schedules","description":"List all active (non-archived) schedules on the account, each with its description, job/role, next upcoming occurrence, and how many volunteers are rostered. Re"},{"name":"get_schedule","description":"Get one schedule's full configuration: recurrence settings, job/role, group, roster (contact ids), start/end dates, and notes. Requires the `read` scope."},{"name":"preview_schedule_occurrences","description":"PURE and side-effect-free: computes the next occurrence dates a recurrence configuration WOULD produce, without creating anything. Use this to show the user the"},{"name":"get_upcoming_shifts","description":"List a schedule's upcoming occurrences (shifts) in a date range, each with its date/time, whether the roster is attending that date, and the assigned volunteers"},{"name":"create_schedule","description":"Create a recurring (or custom-date) schedule and materialize its upcoming occurrences. Best practice: call preview_schedule_occurrences with the same recurrence"},{"name":"update_schedule","description":"Partially update a schedule — send only the fields you want to change; unset fields keep their current value. Changing recurrence fields recomputes and re-mater"},{"name":"archive_schedule","description":"Archive (soft-delete) a schedule. It stops appearing in the active list and no further reminders go out for it, but past reminder history is preserved. This is "},{"name":"list_contacts","description":"List all volunteers on the account's roster, each with contact details and group. Requires the `read` scope."},{"name":"add_contacts","description":"Add one or more volunteers to the roster in a single call. ALL-OR-NOTHING: if the batch would push the account past its plan's volunteer limit, or any contact r"},{"name":"update_contact","description":"Update a volunteer's details. Send only the fields you want to change; a field set to null clears it. Requires the `contacts:write` scope."},{"name":"remove_contact","description":"Remove (soft-delete) a volunteer from the roster. This frees a volunteer-cap slot and removes them from any schedule rosters they were on. Confirm with the user"},{"name":"assign_contacts_to_schedule","description":"Assign volunteers to a schedule. This REPLACES the schedule's entire roster — send the COMPLETE desired set of contact ids, not a delta (pass an empty array to "},{"name":"import_volunteer_schedule","description":"Parse a pasted or uploaded volunteer roster + schedule (CSV or a table with columns like name, phone, email, job/role, day, start, end) and either PREVIEW or CR"},{"name":"get_open_days","description":"List calendar days in the look-ahead window that have no attendable shift yet, plus recurring monthly slots not yet claimed by a schedule — i.e. where the accou"},{"name":"get_reminder_settings","description":"Read the account's reminder lead times (the account-wide default plus any per-job overrides) and which channels (email / SMS) are available on the current plan."},{"name":"get_send_history","description":"Read recent reminder outcomes — which reminders were sent and which failed — newest first, paginated. Use this to confirm reminders actually went out. Requires "},{"name":"set_reminder_rule","description":"Set the reminder lead time: the account-wide default and/or a per-job override. Provide at least one of `global_default` or `job_override`, and set at least one"},{"name":"remove_reminder_rule","description":"Remove a reminder lead-time rule. Provide `job_id` to remove that job's override; omit it to clear the account-wide default. Returns the updated reminder settin"},{"name":"send_test_reminder","description":"Send a single TEST reminder to the account owner's own email/phone so they can preview what a reminder looks like. This never reaches volunteers — it always rer"},{"name":"get_pricing","description":"Read VolunteerReminder's public plan catalog: each plan's monthly and annual price (USD), volunteer limit, and included features (SMS reminders are included wit"},{"name":"create_account","description":"Start a new VolunteerReminder account for a human, using their email address. This does NOT finish signup and does NOT return an API key: it emails the person a"},{"name":"start_checkout","description":"Get a Stripe-hosted Checkout URL for the account to subscribe to a paid plan, then HAND THE URL TO THE HUMAN to open and complete payment. You never take paymen"}],"toolCount":23,"toolsHash":"4f15f9e9cddc3dbf1749bfdf0629038cd2d53f6e4cf97f6a6858872c7ebe546b","serverName":"volunteerreminder","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T05:26:35.292Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":43,"error":null,"detail":{"tools":[{"name":"get_account_overview","description":"Read the current VolunteerReminder account: organization name, plan and entitlements, current reminder send mode, and volunteer usage vs the plan limit. Call th"},{"name":"list_schedules","description":"List all active (non-archived) schedules on the account, each with its description, job/role, next upcoming occurrence, and how many volunteers are rostered. Re"},{"name":"get_schedule","description":"Get one schedule's full configuration: recurrence settings, job/role, group, roster (contact ids), start/end dates, and notes. Requires the `read` scope."},{"name":"preview_schedule_occurrences","description":"PURE and side-effect-free: computes the next occurrence dates a recurrence configuration WOULD produce, without creating anything. Use this to show the user the"},{"name":"get_upcoming_shifts","description":"List a schedule's upcoming occurrences (shifts) in a date range, each with its date/time, whether the roster is attending that date, and the assigned volunteers"},{"name":"create_schedule","description":"Create a recurring (or custom-date) schedule and materialize its upcoming occurrences. Best practice: call preview_schedule_occurrences with the same recurrence"},{"name":"update_schedule","description":"Partially update a schedule — send only the fields you want to change; unset fields keep their current value. Changing recurrence fields recomputes and re-mater"},{"name":"archive_schedule","description":"Archive (soft-delete) a schedule. It stops appearing in the active list and no further reminders go out for it, but past reminder history is preserved. This is "},{"name":"list_contacts","description":"List all volunteers on the account's roster, each with contact details and group. Requires the `read` scope."},{"name":"add_contacts","description":"Add one or more volunteers to the roster in a single call. ALL-OR-NOTHING: if the batch would push the account past its plan's volunteer limit, or any contact r"},{"name":"update_contact","description":"Update a volunteer's details. Send only the fields you want to change; a field set to null clears it. Requires the `contacts:write` scope."},{"name":"remove_contact","description":"Remove (soft-delete) a volunteer from the roster. This frees a volunteer-cap slot and removes them from any schedule rosters they were on. Confirm with the user"},{"name":"assign_contacts_to_schedule","description":"Assign volunteers to a schedule. This REPLACES the schedule's entire roster — send the COMPLETE desired set of contact ids, not a delta (pass an empty array to "},{"name":"import_volunteer_schedule","description":"Parse a pasted or uploaded volunteer roster + schedule (CSV or a table with columns like name, phone, email, job/role, day, start, end) and either PREVIEW or CR"},{"name":"get_open_days","description":"List calendar days in the look-ahead window that have no attendable shift yet, plus recurring monthly slots not yet claimed by a schedule — i.e. where the accou"},{"name":"get_reminder_settings","description":"Read the account's reminder lead times (the account-wide default plus any per-job overrides) and which channels (email / SMS) are available on the current plan."},{"name":"get_send_history","description":"Read recent reminder outcomes — which reminders were sent and which failed — newest first, paginated. Use this to confirm reminders actually went out. Requires "},{"name":"set_reminder_rule","description":"Set the reminder lead time: the account-wide default and/or a per-job override. Provide at least one of `global_default` or `job_override`, and set at least one"},{"name":"remove_reminder_rule","description":"Remove a reminder lead-time rule. Provide `job_id` to remove that job's override; omit it to clear the account-wide default. Returns the updated reminder settin"},{"name":"send_test_reminder","description":"Send a single TEST reminder to the account owner's own email/phone so they can preview what a reminder looks like. This never reaches volunteers — it always rer"},{"name":"get_pricing","description":"Read VolunteerReminder's public plan catalog: each plan's monthly and annual price (USD), volunteer limit, and included features (SMS reminders are included wit"},{"name":"create_account","description":"Start a new VolunteerReminder account for a human, using their email address. This does NOT finish signup and does NOT return an API key: it emails the person a"},{"name":"start_checkout","description":"Get a Stripe-hosted Checkout URL for the account to subscribe to a paid plan, then HAND THE URL TO THE HUMAN to open and complete payment. You never take paymen"}],"toolCount":23,"toolsHash":"4f15f9e9cddc3dbf1749bfdf0629038cd2d53f6e4cf97f6a6858872c7ebe546b","serverName":"volunteerreminder","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T23:23:01.524Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":19,"error":null,"detail":{"tools":[{"name":"get_account_overview","description":"Read the current VolunteerReminder account: organization name, plan and entitlements, current reminder send mode, and volunteer usage vs the plan limit. Call th"},{"name":"list_schedules","description":"List all active (non-archived) schedules on the account, each with its description, job/role, next upcoming occurrence, and how many volunteers are rostered. Re"},{"name":"get_schedule","description":"Get one schedule's full configuration: recurrence settings, job/role, group, roster (contact ids), start/end dates, and notes. Requires the `read` scope."},{"name":"preview_schedule_occurrences","description":"PURE and side-effect-free: computes the next occurrence dates a recurrence configuration WOULD produce, without creating anything. Use this to show the user the"},{"name":"get_upcoming_shifts","description":"List a schedule's upcoming occurrences (shifts) in a date range, each with its date/time, whether the roster is attending that date, and the assigned volunteers"},{"name":"create_schedule","description":"Create a recurring (or custom-date) schedule and materialize its upcoming occurrences. Best practice: call preview_schedule_occurrences with the same recurrence"},{"name":"update_schedule","description":"Partially update a schedule — send only the fields you want to change; unset fields keep their current value. Changing recurrence fields recomputes and re-mater"},{"name":"archive_schedule","description":"Archive (soft-delete) a schedule. It stops appearing in the active list and no further reminders go out for it, but past reminder history is preserved. This is "},{"name":"list_contacts","description":"List all volunteers on the account's roster, each with contact details and group. Requires the `read` scope."},{"name":"add_contacts","description":"Add one or more volunteers to the roster in a single call. ALL-OR-NOTHING: if the batch would push the account past its plan's volunteer limit, or any contact r"},{"name":"update_contact","description":"Update a volunteer's details. Send only the fields you want to change; a field set to null clears it. Requires the `contacts:write` scope."},{"name":"remove_contact","description":"Remove (soft-delete) a volunteer from the roster. This frees a volunteer-cap slot and removes them from any schedule rosters they were on. Confirm with the user"},{"name":"assign_contacts_to_schedule","description":"Assign volunteers to a schedule. This REPLACES the schedule's entire roster — send the COMPLETE desired set of contact ids, not a delta (pass an empty array to "},{"name":"import_volunteer_schedule","description":"Parse a pasted or uploaded volunteer roster + schedule (CSV or a table with columns like name, phone, email, job/role, day, start, end) and either PREVIEW or CR"},{"name":"get_open_days","description":"List calendar days in the look-ahead window that have no attendable shift yet, plus recurring monthly slots not yet claimed by a schedule — i.e. where the accou"},{"name":"get_reminder_settings","description":"Read the account's reminder lead times (the account-wide default plus any per-job overrides) and which channels (email / SMS) are available on the current plan."},{"name":"get_send_history","description":"Read recent reminder outcomes — which reminders were sent and which failed — newest first, paginated. Use this to confirm reminders actually went out. Requires "},{"name":"set_reminder_rule","description":"Set the reminder lead time: the account-wide default and/or a per-job override. Provide at least one of `global_default` or `job_override`, and set at least one"},{"name":"remove_reminder_rule","description":"Remove a reminder lead-time rule. Provide `job_id` to remove that job's override; omit it to clear the account-wide default. Returns the updated reminder settin"},{"name":"send_test_reminder","description":"Send a single TEST reminder to the account owner's own email/phone so they can preview what a reminder looks like. This never reaches volunteers — it always rer"},{"name":"get_pricing","description":"Read VolunteerReminder's public plan catalog: each plan's monthly and annual price (USD), volunteer limit, and included features (SMS reminders are included wit"},{"name":"create_account","description":"Start a new VolunteerReminder account for a human, using their email address. This does NOT finish signup and does NOT return an API key: it emails the person a"},{"name":"start_checkout","description":"Get a Stripe-hosted Checkout URL for the account to subscribe to a paid plan, then HAND THE URL TO THE HUMAN to open and complete payment. You never take paymen"}],"toolCount":23,"toolsHash":"4f15f9e9cddc3dbf1749bfdf0629038cd2d53f6e4cf97f6a6858872c7ebe546b","serverName":"volunteerreminder","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T17:26:28.743Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":23,"error":null,"detail":{"tools":[{"name":"get_account_overview","description":"Read the current VolunteerReminder account: organization name, plan and entitlements, current reminder send mode, and volunteer usage vs the plan limit. Call th"},{"name":"list_schedules","description":"List all active (non-archived) schedules on the account, each with its description, job/role, next upcoming occurrence, and how many volunteers are rostered. Re"},{"name":"get_schedule","description":"Get one schedule's full configuration: recurrence settings, job/role, group, roster (contact ids), start/end dates, and notes. Requires the `read` scope."},{"name":"preview_schedule_occurrences","description":"PURE and side-effect-free: computes the next occurrence dates a recurrence configuration WOULD produce, without creating anything. Use this to show the user the"},{"name":"get_upcoming_shifts","description":"List a schedule's upcoming occurrences (shifts) in a date range, each with its date/time, whether the roster is attending that date, and the assigned volunteers"},{"name":"create_schedule","description":"Create a recurring (or custom-date) schedule and materialize its upcoming occurrences. Best practice: call preview_schedule_occurrences with the same recurrence"},{"name":"update_schedule","description":"Partially update a schedule — send only the fields you want to change; unset fields keep their current value. Changing recurrence fields recomputes and re-mater"},{"name":"archive_schedule","description":"Archive (soft-delete) a schedule. It stops appearing in the active list and no further reminders go out for it, but past reminder history is preserved. This is "},{"name":"list_contacts","description":"List all volunteers on the account's roster, each with contact details and group. Requires the `read` scope."},{"name":"add_contacts","description":"Add one or more volunteers to the roster in a single call. ALL-OR-NOTHING: if the batch would push the account past its plan's volunteer limit, or any contact r"},{"name":"update_contact","description":"Update a volunteer's details. Send only the fields you want to change; a field set to null clears it. Requires the `contacts:write` scope."},{"name":"remove_contact","description":"Remove (soft-delete) a volunteer from the roster. This frees a volunteer-cap slot and removes them from any schedule rosters they were on. Confirm with the user"},{"name":"assign_contacts_to_schedule","description":"Assign volunteers to a schedule. This REPLACES the schedule's entire roster — send the COMPLETE desired set of contact ids, not a delta (pass an empty array to "},{"name":"import_volunteer_schedule","description":"Parse a pasted or uploaded volunteer roster + schedule (CSV or a table with columns like name, phone, email, job/role, day, start, end) and either PREVIEW or CR"},{"name":"get_open_days","description":"List calendar days in the look-ahead window that have no attendable shift yet, plus recurring monthly slots not yet claimed by a schedule — i.e. where the accou"},{"name":"get_reminder_settings","description":"Read the account's reminder lead times (the account-wide default plus any per-job overrides) and which channels (email / SMS) are available on the current plan."},{"name":"get_send_history","description":"Read recent reminder outcomes — which reminders were sent and which failed — newest first, paginated. Use this to confirm reminders actually went out. Requires "},{"name":"set_reminder_rule","description":"Set the reminder lead time: the account-wide default and/or a per-job override. Provide at least one of `global_default` or `job_override`, and set at least one"},{"name":"remove_reminder_rule","description":"Remove a reminder lead-time rule. Provide `job_id` to remove that job's override; omit it to clear the account-wide default. Returns the updated reminder settin"},{"name":"send_test_reminder","description":"Send a single TEST reminder to the account owner's own email/phone so they can preview what a reminder looks like. This never reaches volunteers — it always rer"},{"name":"get_pricing","description":"Read VolunteerReminder's public plan catalog: each plan's monthly and annual price (USD), volunteer limit, and included features (SMS reminders are included wit"},{"name":"create_account","description":"Start a new VolunteerReminder account for a human, using their email address. This does NOT finish signup and does NOT return an API key: it emails the person a"},{"name":"start_checkout","description":"Get a Stripe-hosted Checkout URL for the account to subscribe to a paid plan, then HAND THE URL TO THE HUMAN to open and complete payment. You never take paymen"}],"toolCount":23,"toolsHash":"4f15f9e9cddc3dbf1749bfdf0629038cd2d53f6e4cf97f6a6858872c7ebe546b","serverName":"volunteerreminder","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T10:23:56.994Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":229,"error":null,"detail":{"tools":[{"name":"get_account_overview","description":"Read the current VolunteerReminder account: organization name, plan and entitlements, current reminder send mode, and volunteer usage vs the plan limit. Call th"},{"name":"list_schedules","description":"List all active (non-archived) schedules on the account, each with its description, job/role, next upcoming occurrence, and how many volunteers are rostered. Re"},{"name":"get_schedule","description":"Get one schedule's full configuration: recurrence settings, job/role, group, roster (contact ids), start/end dates, and notes. Requires the `read` scope."},{"name":"preview_schedule_occurrences","description":"PURE and side-effect-free: computes the next occurrence dates a recurrence configuration WOULD produce, without creating anything. Use this to show the user the"},{"name":"get_upcoming_shifts","description":"List a schedule's upcoming occurrences (shifts) in a date range, each with its date/time, whether the roster is attending that date, and the assigned volunteers"},{"name":"create_schedule","description":"Create a recurring (or custom-date) schedule and materialize its upcoming occurrences. Best practice: call preview_schedule_occurrences with the same recurrence"},{"name":"update_schedule","description":"Partially update a schedule — send only the fields you want to change; unset fields keep their current value. Changing recurrence fields recomputes and re-mater"},{"name":"archive_schedule","description":"Archive (soft-delete) a schedule. It stops appearing in the active list and no further reminders go out for it, but past reminder history is preserved. This is "},{"name":"list_contacts","description":"List all volunteers on the account's roster, each with contact details and group. Requires the `read` scope."},{"name":"add_contacts","description":"Add one or more volunteers to the roster in a single call. ALL-OR-NOTHING: if the batch would push the account past its plan's volunteer limit, or any contact r"},{"name":"update_contact","description":"Update a volunteer's details. Send only the fields you want to change; a field set to null clears it. Requires the `contacts:write` scope."},{"name":"remove_contact","description":"Remove (soft-delete) a volunteer from the roster. This frees a volunteer-cap slot and removes them from any schedule rosters they were on. Confirm with the user"},{"name":"assign_contacts_to_schedule","description":"Assign volunteers to a schedule. This REPLACES the schedule's entire roster — send the COMPLETE desired set of contact ids, not a delta (pass an empty array to "},{"name":"import_volunteer_schedule","description":"Parse a pasted or uploaded volunteer roster + schedule (CSV or a table with columns like name, phone, email, job/role, day, start, end) and either PREVIEW or CR"},{"name":"get_open_days","description":"List calendar days in the look-ahead window that have no attendable shift yet, plus recurring monthly slots not yet claimed by a schedule — i.e. where the accou"},{"name":"get_reminder_settings","description":"Read the account's reminder lead times (the account-wide default plus any per-job overrides) and which channels (email / SMS) are available on the current plan."},{"name":"get_send_history","description":"Read recent reminder outcomes — which reminders were sent and which failed — newest first, paginated. Use this to confirm reminders actually went out. Requires "},{"name":"set_reminder_rule","description":"Set the reminder lead time: the account-wide default and/or a per-job override. Provide at least one of `global_default` or `job_override`, and set at least one"},{"name":"remove_reminder_rule","description":"Remove a reminder lead-time rule. Provide `job_id` to remove that job's override; omit it to clear the account-wide default. Returns the updated reminder settin"},{"name":"send_test_reminder","description":"Send a single TEST reminder to the account owner's own email/phone so they can preview what a reminder looks like. This never reaches volunteers — it always rer"},{"name":"get_pricing","description":"Read VolunteerReminder's public plan catalog: each plan's monthly and annual price (USD), volunteer limit, and included features (SMS reminders are included wit"},{"name":"create_account","description":"Start a new VolunteerReminder account for a human, using their email address. This does NOT finish signup and does NOT return an API key: it emails the person a"},{"name":"start_checkout","description":"Get a Stripe-hosted Checkout URL for the account to subscribe to a paid plan, then HAND THE URL TO THE HUMAN to open and complete payment. You never take paymen"}],"toolCount":23,"toolsHash":"4f15f9e9cddc3dbf1749bfdf0629038cd2d53f6e4cf97f6a6858872c7ebe546b","serverName":"volunteerreminder","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T03:24:22.764Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":21,"error":null,"detail":{"tools":[{"name":"get_account_overview","description":"Read the current VolunteerReminder account: organization name, plan and entitlements, current reminder send mode, and volunteer usage vs the plan limit. Call th"},{"name":"list_schedules","description":"List all active (non-archived) schedules on the account, each with its description, job/role, next upcoming occurrence, and how many volunteers are rostered. Re"},{"name":"get_schedule","description":"Get one schedule's full configuration: recurrence settings, job/role, group, roster (contact ids), start/end dates, and notes. Requires the `read` scope."},{"name":"preview_schedule_occurrences","description":"PURE and side-effect-free: computes the next occurrence dates a recurrence configuration WOULD produce, without creating anything. Use this to show the user the"},{"name":"get_upcoming_shifts","description":"List a schedule's upcoming occurrences (shifts) in a date range, each with its date/time, whether the roster is attending that date, and the assigned volunteers"},{"name":"create_schedule","description":"Create a recurring (or custom-date) schedule and materialize its upcoming occurrences. Best practice: call preview_schedule_occurrences with the same recurrence"},{"name":"update_schedule","description":"Partially update a schedule — send only the fields you want to change; unset fields keep their current value. Changing recurrence fields recomputes and re-mater"},{"name":"archive_schedule","description":"Archive (soft-delete) a schedule. It stops appearing in the active list and no further reminders go out for it, but past reminder history is preserved. This is "},{"name":"list_contacts","description":"List all volunteers on the account's roster, each with contact details and group. Requires the `read` scope."},{"name":"add_contacts","description":"Add one or more volunteers to the roster in a single call. ALL-OR-NOTHING: if the batch would push the account past its plan's volunteer limit, or any contact r"},{"name":"update_contact","description":"Update a volunteer's details. Send only the fields you want to change; a field set to null clears it. Requires the `contacts:write` scope."},{"name":"remove_contact","description":"Remove (soft-delete) a volunteer from the roster. This frees a volunteer-cap slot and removes them from any schedule rosters they were on. Confirm with the user"},{"name":"assign_contacts_to_schedule","description":"Assign volunteers to a schedule. This REPLACES the schedule's entire roster — send the COMPLETE desired set of contact ids, not a delta (pass an empty array to "},{"name":"import_volunteer_schedule","description":"Parse a pasted or uploaded volunteer roster + schedule (CSV or a table with columns like name, phone, email, job/role, day, start, end) and either PREVIEW or CR"},{"name":"get_open_days","description":"List calendar days in the look-ahead window that have no attendable shift yet, plus recurring monthly slots not yet claimed by a schedule — i.e. where the accou"},{"name":"get_reminder_settings","description":"Read the account's reminder lead times (the account-wide default plus any per-job overrides) and which channels (email / SMS) are available on the current plan."},{"name":"get_send_history","description":"Read recent reminder outcomes — which reminders were sent and which failed — newest first, paginated. Use this to confirm reminders actually went out. Requires "},{"name":"set_reminder_rule","description":"Set the reminder lead time: the account-wide default and/or a per-job override. Provide at least one of `global_default` or `job_override`, and set at least one"},{"name":"remove_reminder_rule","description":"Remove a reminder lead-time rule. Provide `job_id` to remove that job's override; omit it to clear the account-wide default. Returns the updated reminder settin"},{"name":"send_test_reminder","description":"Send a single TEST reminder to the account owner's own email/phone so they can preview what a reminder looks like. This never reaches volunteers — it always rer"},{"name":"get_pricing","description":"Read VolunteerReminder's public plan catalog: each plan's monthly and annual price (USD), volunteer limit, and included features (SMS reminders are included wit"},{"name":"create_account","description":"Start a new VolunteerReminder account for a human, using their email address. This does NOT finish signup and does NOT return an API key: it emails the person a"},{"name":"start_checkout","description":"Get a Stripe-hosted Checkout URL for the account to subscribe to a paid plan, then HAND THE URL TO THE HUMAN to open and complete payment. You never take paymen"}],"toolCount":23,"toolsHash":"4f15f9e9cddc3dbf1749bfdf0629038cd2d53f6e4cf97f6a6858872c7ebe546b","serverName":"volunteerreminder","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T21:27:38.048Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":26,"error":null,"detail":{"tools":[{"name":"get_account_overview","description":"Read the current VolunteerReminder account: organization name, plan and entitlements, current reminder send mode, and volunteer usage vs the plan limit. Call th"},{"name":"list_schedules","description":"List all active (non-archived) schedules on the account, each with its description, job/role, next upcoming occurrence, and how many volunteers are rostered. Re"},{"name":"get_schedule","description":"Get one schedule's full configuration: recurrence settings, job/role, group, roster (contact ids), start/end dates, and notes. Requires the `read` scope."},{"name":"preview_schedule_occurrences","description":"PURE and side-effect-free: computes the next occurrence dates a recurrence configuration WOULD produce, without creating anything. Use this to show the user the"},{"name":"get_upcoming_shifts","description":"List a schedule's upcoming occurrences (shifts) in a date range, each with its date/time, whether the roster is attending that date, and the assigned volunteers"},{"name":"create_schedule","description":"Create a recurring (or custom-date) schedule and materialize its upcoming occurrences. Best practice: call preview_schedule_occurrences with the same recurrence"},{"name":"update_schedule","description":"Partially update a schedule — send only the fields you want to change; unset fields keep their current value. Changing recurrence fields recomputes and re-mater"},{"name":"archive_schedule","description":"Archive (soft-delete) a schedule. It stops appearing in the active list and no further reminders go out for it, but past reminder history is preserved. This is "},{"name":"list_contacts","description":"List all volunteers on the account's roster, each with contact details and group. Requires the `read` scope."},{"name":"add_contacts","description":"Add one or more volunteers to the roster in a single call. ALL-OR-NOTHING: if the batch would push the account past its plan's volunteer limit, or any contact r"},{"name":"update_contact","description":"Update a volunteer's details. Send only the fields you want to change; a field set to null clears it. Requires the `contacts:write` scope."},{"name":"remove_contact","description":"Remove (soft-delete) a volunteer from the roster. This frees a volunteer-cap slot and removes them from any schedule rosters they were on. Confirm with the user"},{"name":"assign_contacts_to_schedule","description":"Assign volunteers to a schedule. This REPLACES the schedule's entire roster — send the COMPLETE desired set of contact ids, not a delta (pass an empty array to "},{"name":"import_volunteer_schedule","description":"Parse a pasted or uploaded volunteer roster + schedule (CSV or a table with columns like name, phone, email, job/role, day, start, end) and either PREVIEW or CR"},{"name":"get_open_days","description":"List calendar days in the look-ahead window that have no attendable shift yet, plus recurring monthly slots not yet claimed by a schedule — i.e. where the accou"},{"name":"get_reminder_settings","description":"Read the account's reminder lead times (the account-wide default plus any per-job overrides) and which channels (email / SMS) are available on the current plan."},{"name":"get_send_history","description":"Read recent reminder outcomes — which reminders were sent and which failed — newest first, paginated. Use this to confirm reminders actually went out. Requires "},{"name":"set_reminder_rule","description":"Set the reminder lead time: the account-wide default and/or a per-job override. Provide at least one of `global_default` or `job_override`, and set at least one"},{"name":"remove_reminder_rule","description":"Remove a reminder lead-time rule. Provide `job_id` to remove that job's override; omit it to clear the account-wide default. Returns the updated reminder settin"},{"name":"send_test_reminder","description":"Send a single TEST reminder to the account owner's own email/phone so they can preview what a reminder looks like. This never reaches volunteers — it always rer"},{"name":"get_pricing","description":"Read VolunteerReminder's public plan catalog: each plan's monthly and annual price (USD), volunteer limit, and included features (SMS reminders are included wit"},{"name":"create_account","description":"Start a new VolunteerReminder account for a human, using their email address. This does NOT finish signup and does NOT return an API key: it emails the person a"},{"name":"start_checkout","description":"Get a Stripe-hosted Checkout URL for the account to subscribe to a paid plan, then HAND THE URL TO THE HUMAN to open and complete payment. You never take paymen"}],"toolCount":23,"toolsHash":"4f15f9e9cddc3dbf1749bfdf0629038cd2d53f6e4cf97f6a6858872c7ebe546b","serverName":"volunteerreminder","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T14:30:38.048Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":35,"error":null,"detail":{"tools":[{"name":"get_account_overview","description":"Read the current VolunteerReminder account: organization name, plan and entitlements, current reminder send mode, and volunteer usage vs the plan limit. Call th"},{"name":"list_schedules","description":"List all active (non-archived) schedules on the account, each with its description, job/role, next upcoming occurrence, and how many volunteers are rostered. Re"},{"name":"get_schedule","description":"Get one schedule's full configuration: recurrence settings, job/role, group, roster (contact ids), start/end dates, and notes. Requires the `read` scope."},{"name":"preview_schedule_occurrences","description":"PURE and side-effect-free: computes the next occurrence dates a recurrence configuration WOULD produce, without creating anything. Use this to show the user the"},{"name":"get_upcoming_shifts","description":"List a schedule's upcoming occurrences (shifts) in a date range, each with its date/time, whether the roster is attending that date, and the assigned volunteers"},{"name":"create_schedule","description":"Create a recurring (or custom-date) schedule and materialize its upcoming occurrences. Best practice: call preview_schedule_occurrences with the same recurrence"},{"name":"update_schedule","description":"Partially update a schedule — send only the fields you want to change; unset fields keep their current value. Changing recurrence fields recomputes and re-mater"},{"name":"archive_schedule","description":"Archive (soft-delete) a schedule. It stops appearing in the active list and no further reminders go out for it, but past reminder history is preserved. This is "},{"name":"list_contacts","description":"List all volunteers on the account's roster, each with contact details and group. Requires the `read` scope."},{"name":"add_contacts","description":"Add one or more volunteers to the roster in a single call. ALL-OR-NOTHING: if the batch would push the account past its plan's volunteer limit, or any contact r"},{"name":"update_contact","description":"Update a volunteer's details. Send only the fields you want to change; a field set to null clears it. Requires the `contacts:write` scope."},{"name":"remove_contact","description":"Remove (soft-delete) a volunteer from the roster. This frees a volunteer-cap slot and removes them from any schedule rosters they were on. Confirm with the user"},{"name":"assign_contacts_to_schedule","description":"Assign volunteers to a schedule. This REPLACES the schedule's entire roster — send the COMPLETE desired set of contact ids, not a delta (pass an empty array to "},{"name":"import_volunteer_schedule","description":"Parse a pasted or uploaded volunteer roster + schedule (CSV or a table with columns like name, phone, email, job/role, day, start, end) and either PREVIEW or CR"},{"name":"get_open_days","description":"List calendar days in the look-ahead window that have no attendable shift yet, plus recurring monthly slots not yet claimed by a schedule — i.e. where the accou"},{"name":"get_reminder_settings","description":"Read the account's reminder lead times (the account-wide default plus any per-job overrides) and which channels (email / SMS) are available on the current plan."},{"name":"get_send_history","description":"Read recent reminder outcomes — which reminders were sent and which failed — newest first, paginated. Use this to confirm reminders actually went out. Requires "},{"name":"set_reminder_rule","description":"Set the reminder lead time: the account-wide default and/or a per-job override. Provide at least one of `global_default` or `job_override`, and set at least one"},{"name":"remove_reminder_rule","description":"Remove a reminder lead-time rule. Provide `job_id` to remove that job's override; omit it to clear the account-wide default. Returns the updated reminder settin"},{"name":"send_test_reminder","description":"Send a single TEST reminder to the account owner's own email/phone so they can preview what a reminder looks like. This never reaches volunteers — it always rer"},{"name":"get_pricing","description":"Read VolunteerReminder's public plan catalog: each plan's monthly and annual price (USD), volunteer limit, and included features (SMS reminders are included wit"},{"name":"create_account","description":"Start a new VolunteerReminder account for a human, using their email address. This does NOT finish signup and does NOT return an API key: it emails the person a"},{"name":"start_checkout","description":"Get a Stripe-hosted Checkout URL for the account to subscribe to a paid plan, then HAND THE URL TO THE HUMAN to open and complete payment. You never take paymen"}],"toolCount":23,"toolsHash":"4f15f9e9cddc3dbf1749bfdf0629038cd2d53f6e4cf97f6a6858872c7ebe546b","serverName":"volunteerreminder","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"get_account_overview","description":"Read the current VolunteerReminder account: organization name, plan and entitlements, current reminder send mode, and volunteer usage vs the plan limit. Call th"},{"name":"list_schedules","description":"List all active (non-archived) schedules on the account, each with its description, job/role, next upcoming occurrence, and how many volunteers are rostered. Re"},{"name":"get_schedule","description":"Get one schedule's full configuration: recurrence settings, job/role, group, roster (contact ids), start/end dates, and notes. Requires the `read` scope."},{"name":"preview_schedule_occurrences","description":"PURE and side-effect-free: computes the next occurrence dates a recurrence configuration WOULD produce, without creating anything. Use this to show the user the"},{"name":"get_upcoming_shifts","description":"List a schedule's upcoming occurrences (shifts) in a date range, each with its date/time, whether the roster is attending that date, and the assigned volunteers"},{"name":"create_schedule","description":"Create a recurring (or custom-date) schedule and materialize its upcoming occurrences. Best practice: call preview_schedule_occurrences with the same recurrence"},{"name":"update_schedule","description":"Partially update a schedule — send only the fields you want to change; unset fields keep their current value. Changing recurrence fields recomputes and re-mater"},{"name":"archive_schedule","description":"Archive (soft-delete) a schedule. It stops appearing in the active list and no further reminders go out for it, but past reminder history is preserved. This is "},{"name":"list_contacts","description":"List all volunteers on the account's roster, each with contact details and group. Requires the `read` scope."},{"name":"add_contacts","description":"Add one or more volunteers to the roster in a single call. ALL-OR-NOTHING: if the batch would push the account past its plan's volunteer limit, or any contact r"},{"name":"update_contact","description":"Update a volunteer's details. Send only the fields you want to change; a field set to null clears it. Requires the `contacts:write` scope."},{"name":"remove_contact","description":"Remove (soft-delete) a volunteer from the roster. This frees a volunteer-cap slot and removes them from any schedule rosters they were on. Confirm with the user"},{"name":"assign_contacts_to_schedule","description":"Assign volunteers to a schedule. This REPLACES the schedule's entire roster — send the COMPLETE desired set of contact ids, not a delta (pass an empty array to "},{"name":"import_volunteer_schedule","description":"Parse a pasted or uploaded volunteer roster + schedule (CSV or a table with columns like name, phone, email, job/role, day, start, end) and either PREVIEW or CR"},{"name":"get_open_days","description":"List calendar days in the look-ahead window that have no attendable shift yet, plus recurring monthly slots not yet claimed by a schedule — i.e. where the accou"},{"name":"get_reminder_settings","description":"Read the account's reminder lead times (the account-wide default plus any per-job overrides) and which channels (email / SMS) are available on the current plan."},{"name":"get_send_history","description":"Read recent reminder outcomes — which reminders were sent and which failed — newest first, paginated. Use this to confirm reminders actually went out. Requires "},{"name":"set_reminder_rule","description":"Set the reminder lead time: the account-wide default and/or a per-job override. Provide at least one of `global_default` or `job_override`, and set at least one"},{"name":"remove_reminder_rule","description":"Remove a reminder lead-time rule. Provide `job_id` to remove that job's override; omit it to clear the account-wide default. Returns the updated reminder settin"},{"name":"send_test_reminder","description":"Send a single TEST reminder to the account owner's own email/phone so they can preview what a reminder looks like. This never reaches volunteers — it always rer"},{"name":"get_pricing","description":"Read VolunteerReminder's public plan catalog: each plan's monthly and annual price (USD), volunteer limit, and included features (SMS reminders are included wit"},{"name":"create_account","description":"Start a new VolunteerReminder account for a human, using their email address. This does NOT finish signup and does NOT return an API key: it emails the person a"},{"name":"start_checkout","description":"Get a Stripe-hosted Checkout URL for the account to subscribe to a paid plan, then HAND THE URL TO THE HUMAN to open and complete payment. You never take paymen"}],"package":null,"toolSurface":{"id":"ts_nu5w8x77kqvg","endpointId":"ep_ve7d7rv7vurw","hash":"4f15f9e9cddc3dbf1749bfdf0629038cd2d53f6e4cf97f6a6858872c7ebe546b","toolCount":23,"serverName":"volunteerreminder","serverVersion":"0.3.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-01T19:30:15.407Z","lastSeenAt":"2026-10-10T01:24:48.302Z","observations":31,"toolNames":["get_account_overview","list_schedules","get_schedule","preview_schedule_occurrences","get_upcoming_shifts","create_schedule","update_schedule","archive_schedule","list_contacts","add_contacts","update_contact","remove_contact","assign_contacts_to_schedule","import_volunteer_schedule","get_open_days","get_reminder_settings","get_send_history","set_reminder_rule","remove_reminder_rule","send_test_reminder","get_pricing","create_account","start_checkout"],"distinctSurfaces":2},"endpointFacts":[{"id":"ep_ve7d7rv7vurw","url":"https://mcp.volunteerreminder.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-09T18:25:09.265Z","auth":{"observedAt":"2026-10-09T18:25:09.910Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://mcp.volunteerreminder.com/.well-known/oauth-protected-resource/mcp","resource":"https://mcp.volunteerreminder.com/mcp","authorizationServers":["https://volunteerreminder.com"],"scopesSupported":["read","schedules:write","contacts:write","reminders:write"]},"authorizationServer":{"url":"https://volunteerreminder.com/.well-known/oauth-authorization-server","issuer":"https://volunteerreminder.com","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-09T18:25:09.933Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"volunteerreminder.com","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-10T14:08:21.000Z","validTo":"2026-12-09T15:08:18.000Z","daysToExpiry":60,"sanCount":3,"fingerprint256":"87:38:DC:63:62:27:42:00:FE:D2:A3:15:2A:B7:EE:A4:AF:84:CF:A2:E0:56:E1:83:55:FD:A5:29:85:A9:A7:7C"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.volunteerreminder/mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/com.volunteerreminder%2Fmcp","firstSeenAt":"2026-09-09T20:22:34.529Z","fetchedAt":"2026-10-09T12:22:16.763Z","normalizedAt":"2026-10-09T12:22:16.763Z"}]},"firstSeenAt":"2026-09-09T20:22:34.529Z","updatedAt":"2026-10-10T01:26:59.767Z"}