# Smart Calendars AI (remote · api.smartcalendars.ai)

Create and update subscription calendars from ChatGPT, Claude, or Codex.

- Trust score: 84/100 (high trust)
- Change this week: +6
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `api.smartcalendars.ai`: 84/100 (this document), [markdown](https://verifymcp.io/servers/ai-smartcalendars-smart-calendars-ai/api.md), [page](https://verifymcp.io/servers/ai-smartcalendars-smart-calendars-ai/api)

## Channel facts

- Endpoint: `https://api.smartcalendars.ai/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `2.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 97/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 60/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3522 tokens (~503/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 43/100
  - Stability observed for 13 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the Smart Calendars AI MCP server?

Smart Calendars AI is a hosted endpoint at https://api.smartcalendars.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http ai-smartcalendars-smart-calendars-ai 'https://api.smartcalendars.ai/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "ai-smartcalendars-smart-calendars-ai": {
      "url": "https://api.smartcalendars.ai/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "ai-smartcalendars-smart-calendars-ai": {
      "type": "http",
      "url": "https://api.smartcalendars.ai/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.ai-smartcalendars-smart-calendars-ai]
url = "https://api.smartcalendars.ai/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-smartcalendars-smart-calendars-ai": {
      "type": "remote",
      "url": "https://api.smartcalendars.ai/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-smartcalendars-smart-calendars-ai --url 'https://api.smartcalendars.ai/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-smartcalendars-smart-calendars-ai:
    url: "https://api.smartcalendars.ai/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "ai-smartcalendars-smart-calendars-ai": {
      "Transport": "http",
      "Url": "https://api.smartcalendars.ai/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add ai-smartcalendars-smart-calendars-ai -t streamable-http -u 'https://api.smartcalendars.ai/mcp'
```

### Other

```json
{
  "mcpServers": {
    "ai-smartcalendars-smart-calendars-ai": {
      "type": "http",
      "url": "https://api.smartcalendars.ai/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 84, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-03 (score 83, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 82, +3)

- [functional regression] Schema quality: 443 → 503
- [functional improvement] Tool coverage: 48% → 100%
- [functional] Schema quality: good → excellent
- [cosmetic] “apply_feed_changes” reworded the description of “dry_run”
- [cosmetic] “apply_feed_changes” reworded the description of “feed_patch”
- [cosmetic] “apply_feed_changes” reworded the description of “operations”
- [cosmetic] “create_feed” reworded the description of “activate”
- [cosmetic] “create_feed” reworded the description of “events”
- [cosmetic] “create_feed” reworded the description of “title”
- [cosmetic] “get_feed” reworded the description of “event_ids”
- [cosmetic] “get_feed” reworded the description of “external_keys”
- [cosmetic] “get_feed” reworded the description of “feed_id”
- [cosmetic] “get_feed” reworded the description of “from”
- [cosmetic] “get_feed” reworded the description of “limit”
- [cosmetic] “get_feed” reworded the description of “offset”
- [cosmetic] “get_feed” reworded the description of “removal_state”
- [cosmetic] “get_feed” reworded the description of “to”
- [cosmetic] “get_feed_status” reworded the description of “feed_id”
- [cosmetic] “list_feeds” reworded the description of “limit”
- [cosmetic] “list_feeds” reworded the description of “offset”

### 2026-10-31 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-30 (score 78, 0)

- [security] Tool “apply_feed_changes” rewrote its description, which is the text the model reads
- [security] Tool “create_feed” rewrote its description, which is the text the model reads
- [security] Tool “deactivate_feed” rewrote its description, which is the text the model reads
- [security] Tool “get_feed” rewrote its description, which is the text the model reads
- [security] Tool “get_feed_status” rewrote its description, which is the text the model reads
- [security] Tool “list_feeds” rewrote its description, which is the text the model reads
- [security] Tool “reactivate_feed” rewrote its description, which is the text the model reads
- [functional improvement] Schema quality: 535 → 443
- [cosmetic] “apply_feed_changes” reworded the description of “confirm_credit_charge”
- [cosmetic] “apply_feed_changes” reworded the description of “feed_id”
- [cosmetic] “apply_feed_changes” reworded the description of “preview_receipt”
- [cosmetic] “apply_feed_changes” reworded the description of “recover_preview”
- [cosmetic] “apply_feed_changes” reworded the description of “request_id”
- [cosmetic] “create_feed” reworded the description of “request_id”
- [cosmetic] “deactivate_feed” reworded the description of “feed_id”
- [cosmetic] “deactivate_feed” reworded the description of “request_id”
- [cosmetic] “get_feed” reworded the description of “filters”
- [cosmetic] “get_feed” reworded the description of “include_facets”
- [cosmetic] “reactivate_feed” reworded the description of “feed_id”
- [cosmetic] “reactivate_feed” reworded the description of “request_id”

### 2026-10-29 (score 78, +1)

- [security] Tool “apply_feed_changes” rewrote its description, which is the text the model reads
- [cosmetic] Tool “create_feed” changed its title: Create a subscription calendar
- [cosmetic] Tool “deactivate_feed” changed its title: Deactivate a calendar
- [cosmetic] Tool “get_feed” changed its title: Read calendar events
- [cosmetic] Tool “get_feed_status” changed its title: Check calendar status
- [cosmetic] Tool “list_feeds” changed its title: List calendars
- [cosmetic] Tool “reactivate_feed” changed its title: Reactivate a calendar

### 2026-10-27 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-24 (score 76, +1)

- [functional improvement] Stability: unverified → 0.03

## MCP tools (7)

### `create_feed` (~408 tokens)

Create a subscription calendar

Creates a subscription calendar from user-reviewed structured events and optionally activates it. Intended for an explicit request to save a schedule. The caller supplies the events; source-document extraction and automatic monitoring are not performed. Existing account feed and creation allowances apply. Identical retries retain the original request_id and payload. publication.status reports calendar-file preparation, not subscription access. distribution_ready reports subscription availability at the returned revision; availability may change afterward. Scope is limited to the connected account’s Smart Calendars AI feeds. No mailbox access, source-document retrieval, automatic source monitoring, scheduled PDF checks or document refresh is provided. Structured schedule content is supplied explicitly by the caller. Result links: subscription_open_url is the exact HTTPS handoff to the default calendar app via webcal; subscription_options_url provides Apple/default, Google, Outlook and copy-link choices; subscription_url is the copyable HTTPS calendar-file fallback; manage_url opens the feed dashboard. URL hosts, paths and tokens identify the returned resource and are not interchangeable. A filtered_subscription has its own links for that selection; top-level links remain unfiltered. Subscription access requires distribution_ready=true. Opening a link does not confirm a subscription; confirmation occurs in the user’s calendar app.

Input parameters:

- `activate` (boolean): Whether to activate the new calendar immediately, subject to the account active-feed allowance; defaults to true. False creates a saved inactive preview without subscription access.
- `description` (string|null): A short description of this calendar, not the conversation or user profile.
- `events` (array, required): One to 250 reviewed schedule entries. Each entry contains event fields and may include a source-stable external_key; the caller supplies this content.
- `request_id` (string, required): Opaque, non-personal idempotency key for this operation. Identical retries retain the same key and payload to prevent duplicate changes. User identifiers, chat/session IDs, telemetry and personal dat…
- `title` (string, required): Calendar title for the reviewed schedule.

### `list_feeds` (~274 tokens)

List calendars

Lists the connected account’s feeds, management links and shared active-feed allowance for a requested calendar lookup. Only feeds marked counts_towards_active_limit use a slot; this page’s length is not the account’s usage. Reading changes no feeds or subscription access. Scope is limited to the connected account’s Smart Calendars AI feeds. No mailbox access, source-document retrieval, automatic source monitoring, scheduled PDF checks or document refresh is provided. Structured schedule content is supplied explicitly by the caller. Result links: subscription_open_url is the exact HTTPS handoff to the default calendar app via webcal; subscription_options_url provides Apple/default, Google, Outlook and copy-link choices; subscription_url is the copyable HTTPS calendar-file fallback; manage_url opens the feed dashboard. URL hosts, paths and tokens identify the returned resource and are not interchangeable. A filtered_subscription has its own links for that selection; top-level links remain unfiltered. Subscription access requires distribution_ready=true. Opening a link does not confirm a subscription; confirmation occurs in the user’s calendar app.

Input parameters:

- `limit` (integer): Maximum calendars returned on this page, from 1 to 100; defaults to 50.
- `offset` (integer): Number of matching results skipped before this page; defaults to 0. The response next_offset identifies the next page when present.

### `get_feed` (~732 tokens)

Read calendar events

Reads events and the current revision of a selected feed for a requested schedule lookup or revision. include_facets=true provides known facet values for label selection. Facets describe the entire published active feed, independent of read filters or pagination. Nonempty filters also return filtered_subscription with canonical filters, matching_event_count and unmatched_filter_values. Its nested URLs address that selection; top-level subscription URLs remain unfiltered. Event IDs, external keys, dates, removal state and pagination narrow only the read, never the subscription. Filtering changes no events and creates no cloned feed. A complete unfiltered read is a prerequisite for assessing cancellations from a revised schedule; omission from a filtered or paginated result is not evidence of deletion. Scope is limited to the connected account’s Smart Calendars AI feeds. No mailbox access, source-document retrieval, automatic source monitoring, scheduled PDF checks or document refresh is provided. Structured schedule content is supplied explicitly by the caller. Result links: subscription_open_url is the exact HTTPS handoff to the default calendar app via webcal; subscription_options_url provides Apple/default, Google, Outlook and copy-link choices; subscription_url is the copyable HTTPS calendar-file fallback; manage_url opens the feed dashboard. URL hosts, paths and tokens identify the returned resource and are not interchangeable. A filtered_subscription has its own links for that selection; top-level links remain unfiltered. Subscription access requires distribution_ready=true. Opening a link does not confirm a subscription; confirmation occurs in the user’s calendar app. Filter privacy: filters select events, not who can access them; anyone with the link can remove the filters and read the full published calendar.

Input parameters:

- `event_ids` (array): Optional selection of up to 250 existing event IDs. Omitted or empty means no event-ID restriction. This narrows only the read.
- `external_keys` (array): Optional selection of up to 250 source-stable external keys. Omitted or empty means no external-key restriction. Combined with other read filters.
- `feed_id` (string, required): Identity of the selected calendar returned in feed results.
- `filters` (object): Values identify known labels from available_facets; include_facets=true provides that vocabulary. Values are trimmed and case-insensitive; format accepts attendance-mode aliases. Values within a fiel…
- `from` (string): Inclusive lower date bound in YYYY-MM-DD format. Events whose date span overlaps the requested range can match; omission leaves the lower bound open.
- `include_facets` (boolean): Includes available_facets ({value,label,count} entries), facet_coverage ({tagged_events,fallback_events,missing_events}), facets_truncated and facet_scope=published_active_events. Coverage distinguis…
- `limit` (integer): Maximum events returned on this page, from 1 to 250; defaults to 100.
- `offset` (integer): Number of matching results skipped before this page; defaults to 0. The response next_offset identifies the next page when present.
- `removal_state` (string): Event cancellation state to return: active excludes canceled events, removed returns canceled events, and all includes both. Defaults to active.
- `to` (string): Inclusive upper date bound in YYYY-MM-DD format. Events whose date span overlaps the requested range can match; omission leaves the upper bound open.

### `get_feed_status` (~219 tokens)

Check calendar status

Reads a selected feed’s last update, current subscription availability (distribution_ready), editing access and configured monitoring status for a requested status check. This does not refresh, save or charge. Scope is limited to the connected account’s Smart Calendars AI feeds. No mailbox access, source-document retrieval, automatic source monitoring, scheduled PDF checks or document refresh is provided. Structured schedule content is supplied explicitly by the caller. Result links: subscription_open_url is the exact HTTPS handoff to the default calendar app via webcal; subscription_options_url provides Apple/default, Google, Outlook and copy-link choices; subscription_url is the copyable HTTPS calendar-file fallback; manage_url opens the feed dashboard. URL hosts, paths and tokens identify the returned resource and are not interchangeable. A filtered_subscription has its own links for that selection; top-level links remain unfiltered. Subscription access requires distribution_ready=true. Opening a link does not confirm a subscription; confirmation occurs in the user’s calendar app.

Input parameters:

- `feed_id` (string, required): Identity of the selected calendar returned in feed results.

### `apply_feed_changes` (~1250 tokens)

Save a calendar revision

Saves one revision to one existing calendar feed owned by the connected account for a user-approved schedule change. Accepts one fixed-schema change set with up to 250 event changes and/or a feed title or description change; all stored calendar changes commit together in one transaction, or none are saved. The schema declares every supported change: add creates an event; update changes selected fields or uses reset_fields to restore saved field baselines; delete marks an existing event canceled without permanently erasing it; restore reinstates that same event and may update selected fields; feed_patch changes only the calendar title or description. No dynamic operation discovery, fetched schemas, arbitrary commands or arbitrary endpoints are supported. dry_run=true validates and previews the proposed change set without saving calendar changes, advancing the revision or spending credits. The response contains the exact before/after changes and any billing quote. User approval of that exact preview is a prerequisite for saving with dry_run=false. Saving requires the returned preview_receipt and the identical feed_id, expected_revision, request_id, operations and feed_patch. The receipt binds that validated preview, not user consent. Changed proposals or expired previews require a new preview and approval; revision conflicts require current feed data and a new preview. Omitted events and fields remain unchanged. Cancellation assessment from a revised schedule requires the complete unfiltered event set; unrelated events and manual fields remain unchanged unless explicitly included in the approved changes. Uncertain event matches require user clarification. Updates address matched event IDs; a duplicate add is not an update. A recurring-series target is series_id with scope=occurrence, following or series; occurrence/following uses the original scheduled occurrence_date, including moved occurrences. reset_fields can include cancellation to restore source cancellation p…

Input parameters:

- `confirm_credit_charge` (boolean): True only for explicit user authorization of the current quoted credit deduction and resulting balance. Preview approval alone, a recovered receipt or an automation default does not authorize credit…
- `dry_run` (boolean): True previews and validates the exact proposed changes without changing calendar events, advancing the revision or spending credits. The preview returns before/after changes, any billing quote and a…
- `expected_revision` (integer): Last read feed revision; prevents overwriting concurrent edits.
- `feed_id` (string, required): Identity of the selected calendar, as returned in feed results.
- `feed_patch` (object): Proposed calendar title and/or description changes for this revision. Omitted fields stay unchanged.
- `operations` (array): Proposed event additions, updates, cancellations or restorations for this revision, with at most 250 operations. Saved operations and feed_patch commit together or none are saved.
- `preview_receipt` (string): Opaque receipt returned by a successful dry_run=true preview. Saving with dry_run=false requires the unchanged receipt and identical feed, revision, request_id and proposed changes. The receipt prove…
- `recover_preview` (boolean): Recovery of the exact unexpired preview by its original request_id. Requires only feed_id, the original request_id, dry_run=true and recover_preview=true; all other arguments are invalid. Recovery do…
- `request_id` (string, required): Opaque, non-personal idempotency key for this operation. Identical retries retain the same key and payload to prevent duplicate changes. User identifiers, chat/session IDs, telemetry and personal dat…

### `deactivate_feed` (~323 tokens)

Deactivate a calendar

Deactivates a feed for an explicit user request to interrupt its subscription access, without deleting events or resetting editing windows. User approval of that access interruption is required. A counted active feed releases its allowance slot. publication.status reports calendar-file preparation, not subscription access. distribution_ready reports subscription availability at the returned revision; availability may change afterward. Scope is limited to the connected account’s Smart Calendars AI feeds. No mailbox access, source-document retrieval, automatic source monitoring, scheduled PDF checks or document refresh is provided. Structured schedule content is supplied explicitly by the caller. Result links: subscription_open_url is the exact HTTPS handoff to the default calendar app via webcal; subscription_options_url provides Apple/default, Google, Outlook and copy-link choices; subscription_url is the copyable HTTPS calendar-file fallback; manage_url opens the feed dashboard. URL hosts, paths and tokens identify the returned resource and are not interchangeable. A filtered_subscription has its own links for that selection; top-level links remain unfiltered. Subscription access requires distribution_ready=true. Opening a link does not confirm a subscription; confirmation occurs in the user’s calendar app.

Input parameters:

- `expected_revision` (integer, required): Last read feed revision; prevents overwriting concurrent edits.
- `feed_id` (string, required): Identity of the selected calendar, as returned in feed results.
- `request_id` (string, required): Opaque, non-personal idempotency key for this operation. Identical retries retain the same key and payload to prevent duplicate changes. User identifiers, chat/session IDs, telemetry and personal dat…

### `reactivate_feed` (~316 tokens)

Reactivate a calendar

Reactivates an existing feed for an explicit user request to restore its subscription access, subject to existing account allowances. Does not reset the original editing window or modify events. publication.status reports calendar-file preparation, not subscription access. distribution_ready reports subscription availability at the returned revision; availability may change afterward. Scope is limited to the connected account’s Smart Calendars AI feeds. No mailbox access, source-document retrieval, automatic source monitoring, scheduled PDF checks or document refresh is provided. Structured schedule content is supplied explicitly by the caller. Result links: subscription_open_url is the exact HTTPS handoff to the default calendar app via webcal; subscription_options_url provides Apple/default, Google, Outlook and copy-link choices; subscription_url is the copyable HTTPS calendar-file fallback; manage_url opens the feed dashboard. URL hosts, paths and tokens identify the returned resource and are not interchangeable. A filtered_subscription has its own links for that selection; top-level links remain unfiltered. Subscription access requires distribution_ready=true. Opening a link does not confirm a subscription; confirmation occurs in the user’s calendar app.

Input parameters:

- `expected_revision` (integer, required): Last read feed revision; prevents overwriting concurrent edits.
- `feed_id` (string, required): Identity of the selected calendar, as returned in feed results.
- `request_id` (string, required): Opaque, non-personal idempotency key for this operation. Identical retries retain the same key and payload to prevent duplicate changes. User identifiers, chat/session IDs, telemetry and personal dat…

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ai-smartcalendars-smart-calendars-ai/api#diagnostics

## Score history

- 2026-11-05: 84
- 2026-11-04: 83
- 2026-11-03: 83
- 2026-11-02: 82
- 2026-11-01: 82
- 2026-10-31: 79
- 2026-10-30: 78
- 2026-10-29: 78
- 2026-10-28: 77
- 2026-10-27: 77
- 2026-10-26: 76
- 2026-10-25: 76
- 2026-10-24: 76
- 2026-10-23: 75

## Common questions

### What is the Smart Calendars AI MCP server?

Smart Calendars AI is an MCP server listed in the public MCP registry as ai.smartcalendars/smart-calendars-ai. Create and update subscription calendars from ChatGPT, Claude, or Codex. This page covers its hosted endpoint (https://api.smartcalendars.ai/mcp).

### Is the Smart Calendars AI MCP server safe to use?

Smart Calendars AI scores 84 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Smart Calendars AI MCP server expose?

Smart Calendars AI exposes 7 tools: create_feed, list_feeds, get_feed, get_feed_status, apply_feed_changes, and 2 more. Their descriptions and schemas cost roughly 3,522 tokens of context every time the server is loaded.

### Does the Smart Calendars AI MCP server require authentication?

Yes. Smart Calendars AI asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the Smart Calendars AI MCP server still maintained?

Smart Calendars AI is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://api.smartcalendars.ai/mcp
- Website: https://www.smartcalendars.ai/en/mcp
- Changelog RSS feed: https://verifymcp.io/servers/ai-smartcalendars-smart-calendars-ai/api.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-smartcalendars-smart-calendars-ai/api.json
- HTML version of this page: https://verifymcp.io/servers/ai-smartcalendars-smart-calendars-ai/api
