{
  "data": {
    "a": {
      "slug": "cronofy",
      "name": "Cronofy API",
      "vendor": "Cronofy",
      "vendorUrl": "https://www.cronofy.com",
      "kind": "http-api",
      "category": "scheduling",
      "summary": "Calendar sync and scheduling API from a UK company.",
      "url": "https://www.anchorterminal.com/tools/cronofy",
      "markdownUrl": "https://www.anchorterminal.com/tools/cronofy.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/cronofy.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/cronofy.json",
      "dns": "cronofy.grade.anchorterminal.com",
      "repo": "https://github.com/cronofy/cronofy-node",
      "license": "MIT (SDKs)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.cronofy.com",
      "packages": [
        {
          "registry": "npm",
          "name": "cronofy"
        },
        {
          "registry": "pypi",
          "name": "pycronofy"
        }
      ],
      "auth": "mixed",
      "authNotes": "Each user connects through Cronofy's OAuth flow and gets an access token. Application-level calls such as Availability take the application's key as a Bearer token. The MCP server takes the `client_secret` of an internal application as a Bearer token for single-tenant use, or OAuth 2.0 for multi-tenant use.",
      "pricing": "paid",
      "pricingNotes": "Free developer account for building and testing. Emerging $819 a month billed yearly for up to 500 synced accounts, then $1.39 each a month. Growth $2,399 a month billed yearly for up to 3,000, then $0.69 each. Strategic is custom with priority support. The Meeting Agents add-on costs $0.79 an hour for 25 to 4,000 hours, with a $99 monthly minimum on its own and the first 24 hours free (https://www.cronofy.com/pricing).",
      "priceSummary": "$819 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 51,
        "npmWeekly": 10797,
        "pypiWeekly": 10097,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.cronofy.com/developers/",
      "llmsTxt": "https://docs.cronofy.com/llms.txt",
      "capabilities": [
        "calendar.read",
        "calendar.write",
        "calendar.availability",
        "calendar.booking",
        "calendar.webhooks"
      ],
      "tags": [
        "hosted",
        "mcp",
        "llms-txt",
        "webhooks",
        "typescript",
        "python",
        "enterprise",
        "eu",
        "closed-source"
      ],
      "lastRelease": "2026-10-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.5,
        "grade": "B",
        "agentReady": false,
        "rank": 320,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 4,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 76,
          "maintenance": 71,
          "payments": 30,
          "reliability": 95,
          "schema": 58,
          "security": 60,
          "transparency": 72
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-02"
        },
        "negative": 0,
        "verdict": "OAuth scopes as narrow as `free_busy`, with `delete_event` separate from `create_event`, a 99.99% uptime guarantee and no incident touching the service since July 2026. Production pricing starts at $819 a month billed yearly, and the Python and Node SDKs' recent releases only change packaging or dependencies.",
        "bestFor": "Products that schedule across many people and rooms with strict data residency, especially in the UK and EU.",
        "strengths": [
          "OAuth scopes as narrow as `free_busy`, with `delete_event` separate from `create_event`",
          "Event writes keyed on your `event_id`, so a retried create updates instead of duplicating",
          "99.99% uptime guarantee on Emerging and Growth, and no incident touching the service in the 90 days to 2 November 2026",
          "Retention published per data type, such as 30 days for third-party events after disconnection",
          "ISO 27001, 27018 and 27701, SOC 2 Type 2 and a public bug bounty"
        ],
        "weaknesses": [
          "Production pricing starts at $819 a month billed yearly",
          "No OpenAPI spec or security.txt",
          "The Python and Node SDKs' releases since March 2024 only change packaging or dependencies, and the API changelog host disallows automated readers",
          "MCP server has no published tool list, Cronofy warns its standard is likely to change, and single-tenant mode takes the application secret",
          "429 guidance says only to pause, with no Retry-After"
        ],
        "agentNotes": [
          "Call the data centre host the account was created in (api-uk, api-de and so on), since data never crosses regions",
          "Reuse the same `event_id` when retrying an event write, since Cronofy upserts on it",
          "Ask for `response_format` slots when you want bookable times rather than free periods",
          "On 423, ask the user to relink, since Cronofy has already emailed them",
          "Keep under 50 requests a second and 500 a minute, and pause on 429"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 67.5
          }
        ],
        "editorialScores": {
          "ergonomics": 76,
          "maintenance": 71,
          "payments": 30,
          "reliability": 95,
          "schema": 58,
          "security": 60,
          "transparency": 58
        },
        "provenanceScore": 86,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-02",
            "maintenance": "2026-11-02",
            "payments": "2026-11-02",
            "reliability": "2026-11-02",
            "schema": "2026-11-02",
            "security": "2026-11-02",
            "transparency": "2026-11-02"
          },
          "last": "2026-11-02",
          "lastMoved": "2026-11-02",
          "oldest": "2026-11-02",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -X POST https://api.cronofy.com/v1/availability \\\n  -H \"Authorization: Bearer $CRONOFY_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"participants\":[{\"members\":[{\"sub\":\"acc_5ba21743f408617d1269ea1e\"}],\"required\":\"all\"}],\"required_duration\":{\"minutes\":30},\"query_periods\":[{\"start\":\"2026-10-01T09:00:00Z\",\"end\":\"2026-10-01T17:00:00Z\"}],\"response_format\":\"slots\"}'",
        "claudeCode": "claude mcp add --transport http cronofy https://api.cronofy.com/v1/mcp_server --header \"Authorization: Bearer $CRONOFY_CLIENT_SECRET\"",
        "config": {
          "mcpServers": {
            "cronofy": {
              "headers": {
                "Authorization": "Bearer ${CRONOFY_CLIENT_SECRET}"
              },
              "url": "https://api.cronofy.com/v1/mcp_server"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/calendar.read",
        "tool": "https://letme.dev/cronofy"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Emerging",
          "unit": "month",
          "usd": 819,
          "note": "Up to 500 synced accounts, billed yearly"
        },
        {
          "item": "Growth",
          "unit": "month",
          "usd": 2399,
          "note": "Up to 3,000 synced accounts, billed yearly"
        },
        {
          "item": "Extra synced account on Emerging",
          "unit": "account-month",
          "usd": 1.39
        },
        {
          "item": "Extra synced account on Growth",
          "unit": "account-month",
          "usd": 0.69
        }
      ],
      "provenance": {
        "legalEntity": "Cronofy Limited",
        "domain": "cronofy.com",
        "domainRegistered": "2014-10-06",
        "endpointOnVendorDomain": true,
        "terms": "https://docs.cronofy.com/policies/terms-of-service/",
        "privacy": "https://docs.cronofy.com/policies/privacy-notice/",
        "statusPage": "https://status.cronofy.com",
        "changelog": "https://changelog.cronofy.com",
        "securityTxt": "none",
        "checked": "2026-11-02",
        "notes": [
          "The terms name Cronofy Limited, company number 07878590, under the laws of England and Wales, re-read on 2 November 2026.",
          "www.cronofy.com/.well-known/security.txt returned 404 on 2 November 2026.",
          "The status page lists the API, Scheduler, Meeting Agents, conferencing services and each major calendar provider as separate components. Its robots.txt disallows /api/ and /embed/; history.atom is read.",
          "changelog.cronofy.com's robots.txt allows a list of search crawlers by name and disallows every other agent, so the changelog wasn't read on 2 November 2026."
        ],
        "score": 86
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/cronofy.json",
      "live": {
        "slug": "cronofy",
        "probe": {
          "target": "https://api.cronofy.com",
          "method": "get",
          "lastAt": "2026-11-07T19:22:01.882628269Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 286,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 277,
          "p95ms24h": 368,
          "samples24h": 238,
          "samples30d": 7920,
          "days": [
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 197,
              "ok": 197
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.cronofy.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T19:21:40.123009459Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "cronofy",
            "version": "3.8.4",
            "seenAt": "2026-11-06T23:18:24.689704262Z"
          },
          {
            "registry": "pypi",
            "name": "pycronofy",
            "version": "2.1.2",
            "released": "2026-10-30",
            "seenAt": "2026-11-06T23:18:26.426545128Z"
          }
        ],
        "githubStars": 51,
        "npmWeekly": 17038,
        "pypiWeekly": 10625,
        "securityTxt": {
          "url": "https://cronofy.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:55.944472239Z"
        },
        "llmsTxt": {
          "url": "https://docs.cronofy.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:13.434736741Z"
        },
        "domain": {
          "domain": "cronofy.com",
          "registered": "2014-10-06",
          "source": "https://rdap.verisign.com/com/v1/domain/cronofy.com",
          "checkedAt": "2026-11-01T14:08:36.018957442Z"
        },
        "pages": [
          {
            "url": "https://changelog.cronofy.com",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:00:55.079146245Z",
            "changedAt": "2026-10-06T16:06:18.545064584Z",
            "fingerprint": "aa435e15e7d5"
          },
          {
            "url": "https://www.cronofy.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:27:38.40104775Z",
            "changedAt": "2026-10-18T23:42:35.053101837Z",
            "fingerprint": "356800870c4c"
          },
          {
            "url": "https://docs.cronofy.com/policies/privacy-notice/",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-11-07T14:05:59.416247186Z",
            "changedAt": "2026-11-05T12:29:58.992652774Z",
            "fingerprint": "e7c59c742cf6"
          },
          {
            "url": "https://docs.cronofy.com/policies/terms-of-service/",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-11-07T14:06:01.664185065Z",
            "changedAt": "2026-11-05T12:30:01.449840025Z",
            "fingerprint": "7afb8381d694"
          }
        ],
        "mcpTools": {
          "url": "https://api.cronofy.com/v1/mcp_server",
          "checkedAt": "2026-11-07T01:43:40.684959067Z",
          "status": "ok",
          "note": "answered without the initialize handshake",
          "tools": [
            {
              "name": "create_scheduling_link",
              "title": "Create Scheduling Link",
              "description": "Use this to create a Cronofy scheduling link, a dedicated web address, that allows the recipient, the person you want to book with, to choose a time for a meeting based on the real-time availability of the host. The host is identified by their email address. By default the link is returned to you to pass on. If you have been asked to send the link to the recipient rather than just create it, set send_email and Cronofy will email it to them for you. If the meeting is a job interview, use Create Interview Scheduling Link instead so the candidate, interviewers and job are recorded against the event.",
              "inputSchema": {
                "properties": {
                  "cronofy_embed_token": {
                    "description": "An authentication token that will be expressly provided to you if needed.",
                    "type": "string"
                  },
                  "duration_minutes": {
                    "description": "How long the meeting will be in minutes. If not provided the host's default will be used.",
                    "type": "integer"
                  },
                  "email_message": {
                    "description": "Additional content to include in the body of the email sent when send_email is true, such as a short covering note. Do not include the scheduling link itself, Cronofy positions that for you. Plain text only, formatting is not preserved.",
                    "type": "string"
                  },
                  "host": {
                    "description": "The email address or the Cronofy Account ID of the host of the meeting. Cronofy Account IDs are formatted like cronofy://acc_694132771748c0efc4c8e7f3. Necessary unless a template_resource is provided that includes a host or a group to pull from the meeting host from.",
                    "type": "string"
                  },
                  "other_attendees": {
                    "description": "A semi-colon separated list of emails and/or Cronofy Account IDs of other people who are joining this meeting. Example: \"dave@example.com;cronofy://acc_94132781748c0efc4c8ec26;sarah@example.com\". Where possible everyone's availability will be considered.",
                    "type": "string"
                  },
                  "recipient": {
                    "description": "The email address or the Cronofy Account ID of the person who is going to choose a time. This will be used to invite them to the resulting calendar event as an attendee.",
                    "type": "string"
                  },
                  "recipient_name": {
                    "description": "The name of the person who is going to choose a time.",
                    "type": "string"
                  },
                  "send_email": {
                    "description": "Set to true when you have been asked to send the scheduling link to the recipient, for example \"send a booking link to X\" rather than \"create a booking link for X\". Cronofy will email the link to the recipient on your behalf. Defaults to false, in which case the link is only returned to you.",
                    "type": "boolean"
                  },
                  "summary": {
                    "description": "A short description of the meeting. This will be used as the title of the calendar event that is created in the host's calendar. Required if a template is not provided.",
                    "type": "string"
                  },
                  "template_name": {
                    "description": "Name of a scheduling template that exists within your Cronofy Organizational Unit. host can be omitted if this parameter is used and the template contains the rules for deciding who should host the meeting.",
                    "type": "string"
                  },
                  "template_resource_uri": {
                    "description": "URI for a scheduling template resource that will be used to provide advanced parameters for the scheduling link. host can be omitted if this parameter is used and the template contains the rules for deciding who should host the meeting.",
                    "format": "uri",
                    "type": "string"
                  }
                },
                "required": [
                  "recipient"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "email_sent": {
                    "description": "Whether Cronofy has emailed the scheduling link to the recipient. If false you must give the scheduling link to the user and must not tell them it has been sent.",
                    "type": "boolean"
                  },
                  "scheduling_link": {
                    "description": "The URL that should be sent to the recipient so they can choose a time for the meeting.",
                    "format": "uri",
                    "type": "string"
                  },
                  "scheduling_token_id": {
                    "description": "The unique identifier for the Scheduling Token created. Pass this to Choose Suggested Time to confirm a selected meeting slot.",
                    "type": "string"
                  }
                },
                "required": [
                  "scheduling_token_id",
                  "scheduling_link"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "create_scheduling_link"
              }
            },
            {
              "name": "suggest_times_to_meet",
              "title": "Suggest Times To Meet",
              "description": "Use this to suggest times that two or more people can meet. Returns suggested_times for the user to choose from, a scheduling_link the recipient can use to pick a time themselves, and a scheduling_token_id to pass to Choose Suggested Time once a time is selected. If you already have a scheduling_token_id or scheduling_link, from a previous call to Create Scheduling Link or Suggest Times To Meet or given to you by the user, pass it and times will be suggested for that existing meeting request rather than a new one being created. Do not pass meeting details alongside it. Supply time_zone when you know the time zone of the person you are offering times to. If you omit it, times are rendered in the meeting host's time zone and the time_zone field in the response tells you which one, so say which time zone the times are in when you present them. If the meeting is a job interview, use Suggest Interview Times instead so the candidate, interviewers and job are recorded against the event.",
              "inputSchema": {
                "properties": {
                  "cronofy_embed_token": {
                    "description": "An authentication token that will be expressly provided to you if needed.",
                    "type": "string"
                  },
                  "duration_minutes": {
                    "description": "How long the meeting will be in minutes. If not provided the host's default will be used.",
                    "type": "integer"
                  },
                  "host": {
                    "description": "The email address or the Cronofy Account ID of the host of the meeting. Cronofy Account IDs are formatted like cronofy://acc_694132771748c0efc4c8e7f3. Necessary unless a template_resource is provided that includes a host or a group to pull from the meeting host from.",
                    "type": "string"
                  },
                  "other_attendees": {
                    "description": "A semi-colon separated list of emails and/or Cronofy Account IDs of other people who are joining this meeting. Example: \"dave@example.com;cronofy://acc_94132781748c0efc4c8ec26;sarah@example.com\". Where possible everyone's availability will be considered.",
                    "type": "string"
                  },
                  "recipient": {
                    "description": "The email address or the Cronofy Account ID of the person who is going to choose a time. This will be used to invite them to the resulting calendar event as an attendee.",
                    "type": "string"
                  },
                  "recipient_name": {
                    "description": "The name of the person who is going to choose a time.",
                    "type": "string"
                  },
                  "scheduling_link": {
                    "description": "The URL of an existing Cronofy scheduling link. Pass this instead of the meeting details to work with a meeting request that already exists. Use scheduling_token_id in preference when you have it, and do not pass both.",
                    "format": "uri",
                    "type": "string"
                  },
                  "scheduling_token_id": {
                    "description": "The identifier for a previously generated Scheduling Token, returned by Suggest Times To Meet or Create Scheduling Link.",
                    "type": "string"
                  },
                  "summary": {
                    "description": "A short description of the meeting. This will be used as the title of the calendar event that is created in the host's calendar. Required if a template is not provided.",
                    "type": "string"
                  },
                  "template_name": {
                    "description": "Name of a scheduling template that exists within your Cronofy Organizational Unit. host can be omitted if this parameter is used and the template contains the rules for deciding who should host the meeting.",
                    "type": "string"
                  },
                  "template_resource_uri": {
                    "description": "URI for a scheduling template resource that will be used to provide advanced parameters for the scheduling link. host can be omitted if this parameter is used and the template contains the rules for deciding who should host the meeting.",
                    "format": "uri",
                    "type": "string"
                  },
                  "time_zone": {
                    "description": "An IANA Time Zone name describing the time zone that all times should be returned in, eg America/Chicago, Europe/Paris. If this is a user driven flow then the time zone of the current user is a good choice unless otherwise specified by the user.",
                    "type": "string"
                  }
                },
                "required": [],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "all_times": {
                    "description": "All times when a meeting can happen, in the same shape as suggested_times. If empty there are no times available.",
                    "items": {
                      "properties": {
                        "local": {
                          "type": "string"
                        },
                        "utc": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "scheduling_link": {
                    "description": "The URL that should be sent to the recipient so they can choose a time for the meeting.",
                    "format": "uri",
                    "type": "string"
                  },
                  "scheduling_token_id": {
                    "description": "The unique identifier for the Scheduling Token created. Pass this to Choose Suggested Time to confirm a selected meeting slot.",
                    "type": "string"
                  },
                  "suggested_times": {
                    "description": "Suggested times when a meeting can happen. Each item has utc (the ISO8601 UTC value identifying the slot) and local (the same time rendered in the provided time zone). If empty there are no times available.",
                    "items": {
                      "properties": {
                        "local": {
                          "type": "string"
                        },
                        "utc": {
                          "format": "date-time",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "time_zone": {
                    "description": "The IANA Time Zone name that the local values in suggested_times and all_times are expressed in. If you did not supply time_zone this is the meeting host's time zone, so state which time zone the times are in when you offer them to someone.",
                    "type": "string"
                  }
                },
                "required": [
                  "scheduling_token_id",
                  "scheduling_link",
                  "time_zone",
                  "suggested_times"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "suggest_times_to_meet"
              }
            },
            {
              "name": "choose_suggested_time",
              "title": "Choose Suggested Time",
              "description": "Use this to choose a time to meet for a Scheduling Request. Normally this will be in response to a previous call to Suggest Times To Meet which will provide options when people are available.",
              "inputSchema": {
                "properties": {
                  "chosen_suggested_time": {
                    "description": "The time option chosen by the user from a previous list of suggested_time values.",
                    "format": "date-time",
                    "type": "string"
                  },
                  "cronofy_embed_token": {
                    "description": "An authentication token that will be expressly provided to you if needed.",
                    "type": "string"
                  },
                  "scheduling_token_id": {
                    "description": "The identifier for a previously generated Scheduling Token, returned by Suggest Times To Meet or Create Scheduling Link.",
                    "type": "string"
                  },
                  "time_zone": {
                    "description": "An IANA Time Zone name describing the time zone that all times should be returned in, eg America/Chicago, Europe/Paris. If this is a user driven flow then the time zone of the current user is a good choice unless otherwise specified by the user.",
                    "type": "string"
                  }
                },
                "required": [
                  "scheduling_token_id",
                  "time_zone",
                  "chosen_suggested_time"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "rescheduling_link": {
                    "description": "The URL that the recipient can go to to reschedule the meeting.",
                    "format": "uri",
                    "type": "string"
                  },
                  "scheduling_token_id": {
                    "description": "The unique identifier for the Scheduling Token created. Pass this to Choose Suggested Time to confirm a selected meeting slot.",
                    "type": "string"
                  },
                  "selected_time": {
                    "description": "The time selected to meet.",
                    "format": "date-time",
                    "type": "string"
                  }
                },
                "required": [
                  "scheduling_token_id",
                  "rescheduling_link",
                  "selected_time"
                ],
                "type": "object"
              },
              "annotations": {
                "destructiveHint": true,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "choose_suggested_time"
              }
            }
          ],
          "schemaTokens": 2852,
          "changedAt": "2026-11-07T01:43:40.684959067Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 2852,
            "counts": {
              "error": 0,
              "note": 0,
              "warn": 0
            },
            "findings": []
          }
        },
        "github": {
          "repo": "cronofy/cronofy-node",
          "checkedAt": "2026-11-02T08:42:04.255532408Z",
          "stars": 51,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-07T14:01:58Z",
          "openIssues": 5,
          "openPRs": 1,
          "issuesOpened90d": 0,
          "issuesClosed90d": 1,
          "prsMerged90d": 1,
          "ci": {
            "branch": "master",
            "runs": 2,
            "success": 2,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-07T14:02:35Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 4,
            "medianDays": 1.5
          }
        },
        "updatedAt": "2026-11-07T19:22:01.882628269Z"
      }
    },
    "answer": "Cronofy API scores 67.5 (B) on agent readiness against Truto Unified Calendar API's 60.4 (C), and leads in 6 of 7 scored categories. Truto Unified Calendar API leads on schema \u0026 documentation.",
    "b": {
      "slug": "truto-calendar",
      "name": "Truto Unified Calendar API",
      "vendor": "Yin Yang Inc.",
      "vendorUrl": "https://truto.one",
      "kind": "http-api",
      "category": "scheduling",
      "summary": "Truto's Unified Calendar API gives one REST interface over Google Calendar, Outlook Calendar, Cal.com and Calendly, with calendars, events, availability, event types, contacts and users. It is part of Truto's unified API platform for software companies.",
      "url": "https://www.anchorterminal.com/tools/truto-calendar",
      "markdownUrl": "https://www.anchorterminal.com/tools/truto-calendar.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/truto-calendar.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/truto-calendar.json",
      "dns": "truto-calendar.grade.anchorterminal.com",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "@truto/truto-link-sdk"
        }
      ],
      "auth": "api-key",
      "authNotes": "A Truto API token, created in app.truto.one under Settings \u003e API Tokens for one environment (development, staging or production), sent as `Authorization: Bearer`. Every request names an `integrated_account_id`, the end customer's connected calendar account, whose OAuth tokens Truto holds. Per-account MCP servers can be limited to read or write methods and tags, and given an expiry.",
      "pricing": "paid",
      "pricingNotes": "Expansion from $999 per connector a year and Enterprise from $1,999, each with unlimited connections and API calls, sold through a demo. A free 30-day sandbox is given on request with a work email, usually within one business day.",
      "priceSummary": "$83.25 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs index, the pricing page or the API catalogue (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://truto.one/docs/api-reference/unified-calendar-api/",
      "llmsTxt": "https://truto.one/docs/llms.txt",
      "openapi": "https://api.truto.one/schema/openapi.yml",
      "capabilities": [
        "calendar.read",
        "calendar.write",
        "calendar.availability",
        "calendar.booking",
        "automation.auth"
      ],
      "tags": [
        "hosted",
        "unified-api",
        "paid",
        "sales-led",
        "openapi",
        "llms-txt",
        "status-page",
        "webhooks",
        "google-calendar",
        "outlook"
      ],
      "lastRelease": "2026-10-26",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 60.4,
        "grade": "C",
        "agentReady": false,
        "rank": 655,
        "ranked": true,
        "rankOf": 1510,
        "categoryRank": 5,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 71,
          "maintenance": 50,
          "payments": 20,
          "reliability": 77,
          "schema": 75,
          "security": 52,
          "transparency": 61
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Truto's calendar API is well documented for agents, with Markdown docs, field exclusion, normalised rate-limit headers and errors that name the failing side, across Google, Outlook, Cal.com and Calendly. It is sold from $999 a connector a year through a demo, had an API outage on 29 October 2026 and has no public changelog.",
        "bestFor": "Software companies that need their product's agent to read and book across customers' Google, Outlook, Cal.com and Calendly accounts.",
        "strengths": [
          "One REST shape for Google Calendar, Outlook Calendar, Cal.com and Calendly, including availability and event types",
          "Markdown copy of every docs page and an llms.txt index",
          "`truto_exclude_fields`, `truto_ignore_remote_data` and response formats to size replies",
          "Errors say whether Truto or the provider failed, and vendor rate limits come back as standard headers",
          "Pass-through design with no stored customer data, and a public DPA"
        ],
        "weaknesses": [
          "Priced from $999 per connector a year with a demo-led sandbox",
          "An outage of the APIs and dashboard on 29 October 2026 is on the status page",
          "No public changelog for the API",
          "API tokens are per environment with no scopes found",
          "Only five calendar integrations, and Calendly support is partial on events"
        ],
        "agentNotes": [
          "Pass `integrated_account_id` on every call; the token alone reaches nothing",
          "Call the meta endpoint for the method first to see which filters the vendor supports",
          "Set `truto_ignore_remote_data=true` and list fields in `truto_exclude_fields` to keep responses small",
          "On 429 wait for Retry-After; stay under 50 requests every 10 seconds per integrated account",
          "Set `expand_recurring=true` when the task needs each instance of a repeating event"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 60.4
          }
        ],
        "editorialScores": {
          "ergonomics": 71,
          "maintenance": 50,
          "payments": 20,
          "reliability": 77,
          "schema": 75,
          "security": 52,
          "transparency": 54
        },
        "provenanceScore": 67,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl \"https://api.truto.one/unified/calendar/events?integrated_account_id=$ACCOUNT_ID\" -H \"Authorization: Bearer $TRUTO_API_TOKEN\""
      },
      "letme": {
        "capability": "https://letme.dev/calendar.read",
        "tool": "https://letme.dev/truto-calendar"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Expansion plan connector",
          "unit": "month",
          "usd": 83.25,
          "note": "From $999 per connector a year"
        },
        {
          "item": "Enterprise plan connector",
          "unit": "month",
          "usd": 166.58,
          "note": "From $1,999 per connector a year"
        }
      ],
      "provenance": {
        "legalEntity": "Yin Yang Inc.",
        "domain": "truto.one",
        "domainRegistered": "",
        "endpointOnVendorDomain": true,
        "terms": "https://truto.one/tos/",
        "privacy": "https://truto.one/privacy/",
        "statusPage": "https://status.truto.one",
        "changelog": "",
        "securityTxt": "unknown",
        "checked": "2026-11-06",
        "notes": [
          "truto.one/robots.txt allows all and points to llms.txt, an RFC 9727 API catalogue and agent skills; every page has a Markdown sibling. api.truto.one/robots.txt returned 404. status.truto.one's robots.txt returned no rules.",
          "The terms name Yin Yang Inc. No clause on automated access was found in the parts read.",
          "The OpenAPI file at api.truto.one/schema/openapi.yml timed out after 30 seconds and was not read.",
          "security.txt was not checked. SOC 2 compliance is stated only in a blog post of 24 August 2023; no trust page was found."
        ],
        "score": 67
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/truto-calendar.json",
      "live": {
        "slug": "truto-calendar",
        "vendorStatus": {
          "page": "https://status.truto.one",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:48:53.753341884Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@truto/truto-link-sdk",
            "version": "1.3.5",
            "seenAt": "2026-11-07T00:12:59.774757597Z"
          }
        ],
        "npmWeekly": 6850,
        "securityTxt": {
          "url": "https://truto.one/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T15:59:30.982914489Z"
        },
        "llmsTxt": {
          "url": "https://truto.one/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:34:12.104383057Z"
        },
        "pages": [
          {
            "url": "https://truto.one/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:22:35.56420207Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "83d604dc7090"
          },
          {
            "url": "https://truto.one/tos/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:22:37.675377248Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "fa7045806b26"
          }
        ],
        "updatedAt": "2026-11-07T15:59:30.982914489Z"
      }
    },
    "edges": [
      {
        "by": 21,
        "category": "maintenance",
        "leads": "cronofy",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Cronofy's UI Elements, the JavaScript components it publishes for its API, carry a dated changelog in the docs with three code releases in October 2026, 1.68.0 (15 October, Romanian language support), 1.68.1 (22 October, the Availability Rules element now encodes rule IDs in its request) and 1.68.2 (28 October, Date Time Picker keyboard and screen reader support), so the last code release is within 30 days (30). pycronofy 2.1.2 (30 October) and 2.1.1 (25 September) change only packaging, 2.1.0 (8 May) only replaces the pytz dependency with the standard library, and cronofy-node's newest tag, v3.8.4 (15 September 2025), bumps axios. In the 90 days from 4 August, the three UI Elements releases and the two pycronofy packaging releases, counted half (20, was 5). Support through the docs, support pages and support@cronofy.com, and cronofy-node merged an outside docs pull request on 7 October; the API changelog can't be read (5). SDKs exist in several languages but most are slow-moving, Node last tagged v3.8.4 on 15 September 2025 and Ruby last tagged in 2023 (8). CI on the Node and Python SDKs, with Python 3.15 added on 30 October 2026 (8). 30+20+5+8+8 = 71.",
          "b": "No API changelog, so the last API change can't be dated; the official @truto/truto-link-sdk was published as 1.3.5 on 26 October 2026, which we take as the latest dated release (20 of 30, since it is the connection widget, not the calendar API). Six Link SDK versions since 8 August (10 of 20, for the same reason). Support through Slack on paid plans, with no public tracker (5 of 15). A CLI and the Link SDK are official, with no API client (10 of 15). Package health not checked (5 of 10). 20 + 10 + 5 + 10 + 5 = 50."
        },
        "scores": {
          "a": 71,
          "b": 50
        }
      },
      {
        "by": 18,
        "category": "reliability",
        "leads": "cronofy",
        "name": "Reliability",
        "reasons": {
          "a": "Atlassian Statuspage at status.cronofy.com with the API, Scheduler, Meeting Agents and each calendar provider as components (20). history.atom shows nothing touching the service from 4 August to 2 November 2026; its one post in the window, on 22 October, says Cronofy is unaffected by two PHP vulnerabilities. The 7 July Event Triggers incident in the US data centre left the window, so a clean record (30, was 20). 50 requests a second and 500 in any 60 seconds by default (15). 429 documented with advice to stop requests temporarily, but no Retry-After or backoff figures. Event writes are upserts keyed on your `event_id`, so a repeat updates rather than duplicates (10). 99.99% uptime guarantee on Emerging and Growth, and an API SLA policy page (10). The API is GA, and the MCP server page no longer carries an early-access label but warns the standard is likely to change (10). 20+30+15+10+10+10 = 95.",
          "b": "Graded as a hosted service on the Unified Calendar API. Better Stack status page with components for api.truto.one health, ping and link-token endpoints and the static IP proxy, with incident history (20). The feed lists \"APIs and Dashboard are down\" on 29 October 2026 and delayed sync jobs and webhooks on 1 November, which counts as one major outage (10). Truto's own limit is 50 requests every 10 seconds per integrated account, in front of each vendor's (15). A vendor 429 comes back with Retry-After and normalised `ratelimit-limit`, `-remaining` and `-reset` headers, with no idempotency guidance for creates (12 of 15). The Enterprise plan lists an SLA guarantee (10). Generally available (10). 20 + 10 + 15 + 12 + 10 + 10 = 77."
        },
        "scores": {
          "a": 95,
          "b": 77
        }
      },
      {
        "by": 17,
        "category": "schema",
        "leads": "truto-calendar",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "No OpenAPI or other machine-readable contract found (0). llms.txt with about 35 to 40 links and Markdown copies of pages (10). Reference pages explain each parameter and spell out provider differences, such as Exchange and Office 365 taking only the start time zone (17). Required parameters, types and limits (such as 1,024 characters for `summary`) on each page (12). Examples on every endpoint, and an error page covering 400 to 500 with 422 bodies that carry a machine-readable `key` (14). `/v1` in the path. The changelog at changelog.cronofy.com is on a host whose robots.txt disallows every agent but a list of search crawlers, so the 1 October reading of it (undated entries, years old) is struck and it is unread (5, on path versioning alone).",
          "b": "An OpenAPI specification is linked from the RFC 9727 API catalogue, but the file timed out and was not read, so it is credited as published and unverified (20 of 25). llms.txt and a Markdown sibling for every page (10). Parameter descriptions say what each does and what it falls back to, such as `end_time` defaulting to the month of `start_time` (15 of 20). Types, required marks and allowed values such as `focus_time` and `out_of_office` (13 of 15). One documented error shape with provider and Truto fields; few request examples on the reference pages read (12 of 15). Deprecated admin endpoints are marked, but no API changelog was found (5 of 15). 20 + 10 + 15 + 13 + 12 + 5 = 75."
        },
        "scores": {
          "a": 58,
          "b": 75
        }
      },
      {
        "by": 11,
        "category": "transparency",
        "leads": "cronofy",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service with terms naming Cronofy Limited (company 07878590) under English law, and MIT-licensed SDKs (15). The data management policy gives numbers. Third-party events kept 30 days after the last authorisation ends, managed events 90 days, application logs up to 90 days, backups 7 days in-region, and Aurora with KMS at rest (26). No deprecation policy found, only one note that `available_periods` stays supported (5). Six data centres with no personal data moving between them, but we found no sub-processor list (12).",
          "b": "Closed service under terms naming Yin Yang Inc. (15 of 30). Truto says it stores no customer data and calls vendors live, logs are kept 30 or 90 days by plan, data is kept 15 days after termination, and a DPA is public (25 of 30). Deprecated admin endpoints are marked with no policy or dates (6 of 20). Enterprise customers can choose a data region and tokens can be stored regionally; no subprocessor list was found (8 of 20). 15 + 25 + 6 + 8 = 54."
        },
        "scores": {
          "a": 72,
          "b": 61
        }
      },
      {
        "by": 10,
        "category": "payments",
        "leads": "cronofy",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Plan prices and per-account overage ($1.39 and $0.69 an account a month) published without login (20). A free developer account exists, but the pricing page doesn't say whether a card is needed (10). Browser signup, and production needs a paid plan (0).",
          "b": "No x402, MPP or L402 (0). Plan prices per connector a year are public, with unlimited calls (10). A free 30-day sandbox is given after a work-email request reviewed within a business day (10 of 20). A person requests access or books a demo (0). 0 + 10 + 10 + 0 = 20."
        },
        "scores": {
          "a": 30,
          "b": 20
        }
      },
      {
        "by": 8,
        "category": "security",
        "leads": "cronofy",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Per-user OAuth with fine scopes, including `free_busy` alone, `read_only`, and `delete_event` separate from `create_event`. Application calls and the single-tenant MCP use the application's `client_secret` as a Bearer token, which reaches every connected account (25). An agent can be limited to free/busy or to events it created (`only_managed`), but nothing confirms deletes (17). Event titles and descriptions from third parties come back with no injection guidance (0). No operator audit log found (0). ISO 27001, 27018 and 27701, SOC 2 Type 2 and a public bug bounty policy. No security.txt, per the 30 September check (18).",
          "b": "API tokens are per environment and sent as Bearer headers; no scopes or expiry for them were found (20 of 30). Per-account MCP servers can be limited to read methods or tags and set to expire, and the customer's connection form can restrict access to specific resources, but the REST token reaches every integrated account in its environment (14 of 20). Event titles, descriptions and attendee text from outside parties pass through, and no prompt-injection guidance was found (0). Plans keep request logs 30 or 90 days (10 of 15). SOC 2 is stated in a 2023 blog post, with no trust page, security.txt or disclosure policy found (8 of 20). 20 + 14 + 0 + 10 + 8 = 52."
        },
        "scores": {
          "a": 60,
          "b": 52
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Cronofy",
        "b": "Yin Yang Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.cronofy.com",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT (SDKs)",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-30",
        "b": "2026-10-26",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2024-10-19",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "51 stars, 11k npm/wk, 10k PyPI/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "4/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Cronofy API scores 67.5 (B) on agent readiness against Truto Unified Calendar API's 60.4 (C), and leads in 6 of 7 scored categories. Truto Unified Calendar API leads on schema \u0026 documentation.",
        "question": "Which is better for AI agents, Cronofy API or Truto Unified Calendar API?"
      },
      {
        "answer": "Cronofy API takes an API key or an OAuth sign-in. Truto Unified Calendar API needs an API key.",
        "question": "Do Cronofy API and Truto Unified Calendar API need an API key?"
      },
      {
        "answer": "Cronofy API has a hosted endpoint at https://api.cronofy.com. No hosted endpoint is listed for Truto Unified Calendar API.",
        "question": "Can an agent call Cronofy API and Truto Unified Calendar API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 95 against 77",
          "Agent ergonomics, 76 against 71",
          "Security \u0026 auth, 60 against 52",
          "Payments \u0026 pricing, 30 against 20",
          "Maintenance \u0026 community, 71 against 50",
          "Transparency \u0026 trust, 72 against 61"
        ],
        "also": [
          "A hosted endpoint, with nothing to install"
        ],
        "goodFor": "Products that schedule across many people and rooms with strict data residency, especially in the UK and EU.",
        "slug": "cronofy",
        "watchFor": "Production pricing starts at $819 a month billed yearly"
      },
      {
        "aheadOn": [
          "Schema \u0026 documentation, 75 against 58"
        ],
        "also": null,
        "goodFor": "Software companies that need their product's agent to read and book across customers' Google, Outlook, Cal.com and Calendly accounts.",
        "slug": "truto-calendar",
        "watchFor": "Priced from $999 per connector a year with a demo-led sandbox"
      }
    ],
    "history": {
      "cronofy": [
        {
          "causes": [
            "product",
            "time"
          ],
          "date": "2026-11-02",
          "delta": 3.3,
          "from": 64.2,
          "fromGrade": "B",
          "to": 67.5,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.2,
          "from": 64.4,
          "fromGrade": "B",
          "to": 64.2,
          "toGrade": "B"
        }
      ],
      "truto-calendar": null
    },
    "job": {
      "capability": "calendar.read",
      "name": "Calendar access"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-cronofy.json",
        "title": "Acuity Scheduling API vs Cronofy API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-cronofy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-truto-calendar.json",
        "title": "Acuity Scheduling API vs Truto Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-truto-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agenda-hero-vs-cronofy.json",
        "title": "Agenda Hero vs Cronofy API",
        "url": "https://www.anchorterminal.com/compare/agenda-hero-vs-cronofy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agenda-hero-vs-truto-calendar.json",
        "title": "Agenda Hero vs Truto Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/agenda-hero-vs-truto-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apiroc-vs-cronofy.json",
        "title": "Apiroc Unified Calendar API vs Cronofy API",
        "url": "https://www.anchorterminal.com/compare/apiroc-vs-cronofy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apiroc-vs-truto-calendar.json",
        "title": "Apiroc Unified Calendar API vs Truto Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/apiroc-vs-truto-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-cronofy.json",
        "title": "Aurinko Calendar API vs Cronofy API",
        "url": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-cronofy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-truto-calendar.json",
        "title": "Aurinko Calendar API vs Truto Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-truto-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cal-com-vs-cronofy.json",
        "title": "Cal.com API v2 + MCP vs Cronofy API",
        "url": "https://www.anchorterminal.com/compare/cal-com-vs-cronofy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cal-com-vs-truto-calendar.json",
        "title": "Cal.com API v2 + MCP vs Truto Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/cal-com-vs-truto-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/calendly-vs-cronofy.json",
        "title": "Calendly API + MCP vs Cronofy API",
        "url": "https://www.anchorterminal.com/compare/calendly-vs-cronofy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/calendly-vs-truto-calendar.json",
        "title": "Calendly API + MCP vs Truto Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/calendly-vs-truto-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cozi-vs-cronofy.json",
        "title": "Cozi Family Organizer vs Cronofy API",
        "url": "https://www.anchorterminal.com/compare/cozi-vs-cronofy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cozi-vs-truto-calendar.json",
        "title": "Cozi Family Organizer vs Truto Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/cozi-vs-truto-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cronofy-vs-google-calendar-api.json",
        "title": "Cronofy API vs Google Calendar API",
        "url": "https://www.anchorterminal.com/compare/cronofy-vs-google-calendar-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cronofy-vs-microsoft-graph-calendar.json",
        "title": "Cronofy API vs Microsoft Graph Calendar API",
        "url": "https://www.anchorterminal.com/compare/cronofy-vs-microsoft-graph-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cronofy-vs-nylas-calendar.json",
        "title": "Cronofy API vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/cronofy-vs-nylas-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cronofy-vs-reclaim-ai.json",
        "title": "Cronofy API vs Reclaim.ai",
        "url": "https://www.anchorterminal.com/compare/cronofy-vs-reclaim-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cronofy-vs-savvycal.json",
        "title": "Cronofy API vs SavvyCal API + MCP",
        "url": "https://www.anchorterminal.com/compare/cronofy-vs-savvycal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cronofy-vs-zoom-scheduler.json",
        "title": "Cronofy API vs Zoom Scheduler API",
        "url": "https://www.anchorterminal.com/compare/cronofy-vs-zoom-scheduler"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-calendar-api-vs-truto-calendar.json",
        "title": "Google Calendar API vs Truto Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/google-calendar-api-vs-truto-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-truto-calendar.json",
        "title": "Microsoft Graph Calendar API vs Truto Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-truto-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nylas-calendar-vs-truto-calendar.json",
        "title": "Nylas Calendar and Scheduler API vs Truto Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/nylas-calendar-vs-truto-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/reclaim-ai-vs-truto-calendar.json",
        "title": "Reclaim.ai vs Truto Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/reclaim-ai-vs-truto-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/truto-calendar-vs-zoom-scheduler.json",
        "title": "Truto Unified Calendar API vs Zoom Scheduler API",
        "url": "https://www.anchorterminal.com/compare/truto-calendar-vs-zoom-scheduler"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cronofy-vs-youcanbookme.json",
        "title": "Cronofy API vs YouCanBookMe API",
        "url": "https://www.anchorterminal.com/compare/cronofy-vs-youcanbookme"
      },
      {
        "json": "https://www.anchorterminal.com/compare/savvycal-vs-truto-calendar.json",
        "title": "SavvyCal API + MCP vs Truto Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/savvycal-vs-truto-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/truto-calendar-vs-youcanbookme.json",
        "title": "Truto Unified Calendar API vs YouCanBookMe API",
        "url": "https://www.anchorterminal.com/compare/truto-calendar-vs-youcanbookme"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 18,
        "cronofy": 95,
        "edge": "cronofy",
        "key": "reliability",
        "name": "Reliability",
        "truto-calendar": 77,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 17,
        "cronofy": 58,
        "edge": "truto-calendar",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "truto-calendar": 75,
        "weight": 13
      },
      {
        "by": 5,
        "cronofy": 76,
        "edge": "cronofy",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "truto-calendar": 71,
        "weight": 13
      },
      {
        "by": 8,
        "cronofy": 60,
        "edge": "cronofy",
        "key": "security",
        "name": "Security \u0026 auth",
        "truto-calendar": 52,
        "weight": 14
      },
      {
        "by": 10,
        "cronofy": 30,
        "edge": "cronofy",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "truto-calendar": 20,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 21,
        "cronofy": 71,
        "edge": "cronofy",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "truto-calendar": 50,
        "weight": 7
      },
      {
        "by": 11,
        "cronofy": 72,
        "edge": "cronofy",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "truto-calendar": 61,
        "weight": 7
      }
    ],
    "summary": "Cronofy API scores 67.5 (B) on agent readiness against Truto Unified Calendar API's 60.4 (C), and leads in 6 of 7 scored categories. Truto Unified Calendar API leads on schema \u0026 documentation. Both do calendar access.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "cronofy": "OAuth scopes as narrow as `free_busy`, with `delete_event` separate from `create_event`, a 99.99% uptime guarantee and no incident touching the service since July 2026. Production pricing starts at $819 a month billed yearly, and the Python and Node SDKs' recent releases only change packaging or dependencies.",
      "truto-calendar": "Truto's calendar API is well documented for agents, with Markdown docs, field exclusion, normalised rate-limit headers and errors that name the failing side, across Google, Outlook, Cal.com and Calendly. It is sold from $999 a connector a year through a demo, had an API outage on 29 October 2026 and has no public changelog."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/cronofy-vs-truto-calendar",
    "json": "https://www.anchorterminal.com/compare/cronofy-vs-truto-calendar.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/cronofy-vs-truto-calendar.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/cronofy-vs-truto-calendar.min.md"
  },
  "markdown": "Cronofy API scores 67.5 (B) on agent readiness against Truto Unified Calendar API's 60.4 (C), and leads in 6 of 7 scored categories. Truto Unified Calendar API leads on schema \u0026 documentation. Both do calendar access.\n\n- Cronofy API: grade B, 67.5/100, rank #320 of 1510. Markdown https://www.anchorterminal.com/tools/cronofy.md · JSON https://www.anchorterminal.com/api/v1/tools/cronofy.json\n- Truto Unified Calendar API: grade C, 60.4/100, rank #655 of 1510. Markdown https://www.anchorterminal.com/tools/truto-calendar.md · JSON https://www.anchorterminal.com/api/v1/tools/truto-calendar.json\n- Best calendar and scheduling APIs for AI agents: https://www.anchorterminal.com/best/scheduling/index.md\n- All 118 scheduling comparisons: https://www.anchorterminal.com/compare/scheduling/index.md\n\n## Which one, for what\n\n### Cronofy API (B)\n\nGood for: Products that schedule across many people and rooms with strict data residency, especially in the UK and EU.\n\nAhead on:\n- Reliability, 95 against 77\n- Agent ergonomics, 76 against 71\n- Security \u0026 auth, 60 against 52\n- Payments \u0026 pricing, 30 against 20\n- Maintenance \u0026 community, 71 against 50\n- Transparency \u0026 trust, 72 against 61\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n\nWatch for: Production pricing starts at $819 a month billed yearly\n\n### Truto Unified Calendar API (C)\n\nGood for: Software companies that need their product's agent to read and book across customers' Google, Outlook, Cal.com and Calendly accounts.\n\nAhead on:\n- Schema \u0026 documentation, 75 against 58\n\nWatch for: Priced from $999 per connector a year with a demo-led sandbox\n\n\n## Why the edge\n\n### Maintenance \u0026 community: Cronofy API +21\n\n- Cronofy API (71): Cronofy's UI Elements, the JavaScript components it publishes for its API, carry a dated changelog in the docs with three code releases in October 2026, 1.68.0 (15 October, Romanian language support), 1.68.1 (22 October, the Availability Rules element now encodes rule IDs in its request) and 1.68.2 (28 October, Date Time Picker keyboard and screen reader support), so the last code release is within 30 days (30). pycronofy 2.1.2 (30 October) and 2.1.1 (25 September) change only packaging, 2.1.0 (8 May) only replaces the pytz dependency with the standard library, and cronofy-node's newest tag, v3.8.4 (15 September 2025), bumps axios. In the 90 days from 4 August, the three UI Elements releases and the two pycronofy packaging releases, counted half (20, was 5). Support through the docs, support pages and support@cronofy.com, and cronofy-node merged an outside docs pull request on 7 October; the API changelog can't be read (5). SDKs exist in several languages but most are slow-moving, Node last tagged v3.8.4 on 15 September 2025 and Ruby last tagged in 2023 (8). CI on the Node and Python SDKs, with Python 3.15 added on 30 October 2026 (8). 30+20+5+8+8 = 71.\n- Truto Unified Calendar API (50): No API changelog, so the last API change can't be dated; the official @truto/truto-link-sdk was published as 1.3.5 on 26 October 2026, which we take as the latest dated release (20 of 30, since it is the connection widget, not the calendar API). Six Link SDK versions since 8 August (10 of 20, for the same reason). Support through Slack on paid plans, with no public tracker (5 of 15). A CLI and the Link SDK are official, with no API client (10 of 15). Package health not checked (5 of 10). 20 + 10 + 5 + 10 + 5 = 50.\n\n### Reliability: Cronofy API +18\n\n- Cronofy API (95): Atlassian Statuspage at status.cronofy.com with the API, Scheduler, Meeting Agents and each calendar provider as components (20). history.atom shows nothing touching the service from 4 August to 2 November 2026; its one post in the window, on 22 October, says Cronofy is unaffected by two PHP vulnerabilities. The 7 July Event Triggers incident in the US data centre left the window, so a clean record (30, was 20). 50 requests a second and 500 in any 60 seconds by default (15). 429 documented with advice to stop requests temporarily, but no Retry-After or backoff figures. Event writes are upserts keyed on your `event_id`, so a repeat updates rather than duplicates (10). 99.99% uptime guarantee on Emerging and Growth, and an API SLA policy page (10). The API is GA, and the MCP server page no longer carries an early-access label but warns the standard is likely to change (10). 20+30+15+10+10+10 = 95.\n- Truto Unified Calendar API (77): Graded as a hosted service on the Unified Calendar API. Better Stack status page with components for api.truto.one health, ping and link-token endpoints and the static IP proxy, with incident history (20). The feed lists \"APIs and Dashboard are down\" on 29 October 2026 and delayed sync jobs and webhooks on 1 November, which counts as one major outage (10). Truto's own limit is 50 requests every 10 seconds per integrated account, in front of each vendor's (15). A vendor 429 comes back with Retry-After and normalised `ratelimit-limit`, `-remaining` and `-reset` headers, with no idempotency guidance for creates (12 of 15). The Enterprise plan lists an SLA guarantee (10). Generally available (10). 20 + 10 + 15 + 12 + 10 + 10 = 77.\n\n### Schema \u0026 documentation: Truto Unified Calendar API +17\n\n- Cronofy API (58): No OpenAPI or other machine-readable contract found (0). llms.txt with about 35 to 40 links and Markdown copies of pages (10). Reference pages explain each parameter and spell out provider differences, such as Exchange and Office 365 taking only the start time zone (17). Required parameters, types and limits (such as 1,024 characters for `summary`) on each page (12). Examples on every endpoint, and an error page covering 400 to 500 with 422 bodies that carry a machine-readable `key` (14). `/v1` in the path. The changelog at changelog.cronofy.com is on a host whose robots.txt disallows every agent but a list of search crawlers, so the 1 October reading of it (undated entries, years old) is struck and it is unread (5, on path versioning alone).\n- Truto Unified Calendar API (75): An OpenAPI specification is linked from the RFC 9727 API catalogue, but the file timed out and was not read, so it is credited as published and unverified (20 of 25). llms.txt and a Markdown sibling for every page (10). Parameter descriptions say what each does and what it falls back to, such as `end_time` defaulting to the month of `start_time` (15 of 20). Types, required marks and allowed values such as `focus_time` and `out_of_office` (13 of 15). One documented error shape with provider and Truto fields; few request examples on the reference pages read (12 of 15). Deprecated admin endpoints are marked, but no API changelog was found (5 of 15). 20 + 10 + 15 + 13 + 12 + 5 = 75.\n\n### Transparency \u0026 trust: Cronofy API +11\n\n- Cronofy API (72): Closed service with terms naming Cronofy Limited (company 07878590) under English law, and MIT-licensed SDKs (15). The data management policy gives numbers. Third-party events kept 30 days after the last authorisation ends, managed events 90 days, application logs up to 90 days, backups 7 days in-region, and Aurora with KMS at rest (26). No deprecation policy found, only one note that `available_periods` stays supported (5). Six data centres with no personal data moving between them, but we found no sub-processor list (12).\n- Truto Unified Calendar API (61): Closed service under terms naming Yin Yang Inc. (15 of 30). Truto says it stores no customer data and calls vendors live, logs are kept 30 or 90 days by plan, data is kept 15 days after termination, and a DPA is public (25 of 30). Deprecated admin endpoints are marked with no policy or dates (6 of 20). Enterprise customers can choose a data region and tokens can be stored regionally; no subprocessor list was found (8 of 20). 15 + 25 + 6 + 8 = 54.\n\n### Payments \u0026 pricing: Cronofy API +10\n\n- Cronofy API (30): No x402, MPP or L402 (0). Plan prices and per-account overage ($1.39 and $0.69 an account a month) published without login (20). A free developer account exists, but the pricing page doesn't say whether a card is needed (10). Browser signup, and production needs a paid plan (0).\n- Truto Unified Calendar API (20): No x402, MPP or L402 (0). Plan prices per connector a year are public, with unlimited calls (10). A free 30-day sandbox is given after a work-email request reviewed within a business day (10 of 20). A person requests access or books a demo (0). 0 + 10 + 10 + 0 = 20.\n\n### Security \u0026 auth: Cronofy API +8\n\n- Cronofy API (60): Per-user OAuth with fine scopes, including `free_busy` alone, `read_only`, and `delete_event` separate from `create_event`. Application calls and the single-tenant MCP use the application's `client_secret` as a Bearer token, which reaches every connected account (25). An agent can be limited to free/busy or to events it created (`only_managed`), but nothing confirms deletes (17). Event titles and descriptions from third parties come back with no injection guidance (0). No operator audit log found (0). ISO 27001, 27018 and 27701, SOC 2 Type 2 and a public bug bounty policy. No security.txt, per the 30 September check (18).\n- Truto Unified Calendar API (52): API tokens are per environment and sent as Bearer headers; no scopes or expiry for them were found (20 of 30). Per-account MCP servers can be limited to read methods or tags and set to expire, and the customer's connection form can restrict access to specific resources, but the REST token reaches every integrated account in its environment (14 of 20). Event titles, descriptions and attendee text from outside parties pass through, and no prompt-injection guidance was found (0). Plans keep request logs 30 or 90 days (10 of 15). SOC 2 is stated in a 2023 blog post, with no trust page, security.txt or disclosure policy found (8 of 20). 20 + 14 + 0 + 10 + 8 = 52.\n\n## Score by category\n\n| Category | Weight | Cronofy API | Truto Unified Calendar API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 95 | 77 | Cronofy API +18 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 58 | 75 | Truto Unified Calendar API +17 |\n| Agent ergonomics | 13% (16.2 this run) | 76 | 71 | Cronofy API +5 |\n| Security \u0026 auth | 14% (17.5 this run) | 60 | 52 | Cronofy API +8 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 20 | Cronofy API +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 71 | 50 | Cronofy API +21 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 72 | 61 | Cronofy API +11 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **67.5 · B** | **60.4 · C** | |\n\n## Facts side by side\n\n| Fact | Cronofy API | Truto Unified Calendar API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Cronofy | Yin Yang Inc. |\n| Hosted endpoint | `https://api.cronofy.com` | no (local only) |\n| Transports | HTTP, Streamable HTTP |  |\n| Auth | OAuth or key | API key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | MIT (SDKs) | none |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-30 | 2026-10-26 |\n| Terms last updated | no date given | no date given |\n| Privacy policy last updated | no date given | 2024-10-19 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | not found in the text |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | 51 stars, 11k npm/wk, 10k PyPI/wk | none |\n| Agent reviews | 4/5 (2) | none |\n\n## How the scores have moved\n\n### Cronofy API\n\n- +3.3 on 2 November 2026: product, time\n- -0.2 on 8 October 2026: checklist\n\n### Truto Unified Calendar API\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Cronofy API.** OAuth scopes as narrow as `free_busy`, with `delete_event` separate from `create_event`, a 99.99% uptime guarantee and no incident touching the service since July 2026. Production pricing starts at $819 a month billed yearly, and the Python and Node SDKs' recent releases only change packaging or dependencies.\n\n**Truto Unified Calendar API.** Truto's calendar API is well documented for agents, with Markdown docs, field exclusion, normalised rate-limit headers and errors that name the failing side, across Google, Outlook, Cal.com and Calendly. It is sold from $999 a connector a year through a demo, had an API outage on 29 October 2026 and has no public changelog.\n\n## Before you call either\n\n### Cronofy API\n\n1. Call the data centre host the account was created in (api-uk, api-de and so on), since data never crosses regions\n2. Reuse the same `event_id` when retrying an event write, since Cronofy upserts on it\n3. Ask for `response_format` slots when you want bookable times rather than free periods\n4. On 423, ask the user to relink, since Cronofy has already emailed them\n5. Keep under 50 requests a second and 500 a minute, and pause on 429\n\n### Truto Unified Calendar API\n\n1. Pass `integrated_account_id` on every call; the token alone reaches nothing\n2. Call the meta endpoint for the method first to see which filters the vendor supports\n3. Set `truto_ignore_remote_data=true` and list fields in `truto_exclude_fields` to keep responses small\n4. On 429 wait for Retry-After; stay under 50 requests every 10 seconds per integrated account\n5. Set `expand_recurring=true` when the task needs each instance of a repeating event\n\n## Questions\n\n### Which is better for AI agents, Cronofy API or Truto Unified Calendar API?\n\nCronofy API scores 67.5 (B) on agent readiness against Truto Unified Calendar API's 60.4 (C), and leads in 6 of 7 scored categories. Truto Unified Calendar API leads on schema \u0026 documentation.\n\n### Do Cronofy API and Truto Unified Calendar API need an API key?\n\nCronofy API takes an API key or an OAuth sign-in. Truto Unified Calendar API needs an API key.\n\n### Can an agent call Cronofy API and Truto Unified Calendar API without installing anything?\n\nCronofy API has a hosted endpoint at https://api.cronofy.com. No hosted endpoint is listed for Truto Unified Calendar API.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/cronofy-vs-truto-calendar.json, and with the fewest tokens: https://www.anchorterminal.com/compare/cronofy-vs-truto-calendar.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"cronofy\", \"b\": \"truto-calendar\"}`. From a terminal: `anchor compare cronofy truto-calendar`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/cronofy.json and https://www.anchorterminal.com/api/v1/tools/truto-calendar.json\n\n## Other comparisons with Cronofy API or Truto Unified Calendar API\n\n- [Acuity Scheduling API vs Cronofy API](https://www.anchorterminal.com/compare/acuity-scheduling-vs-cronofy.md)\n- [Acuity Scheduling API vs Truto Unified Calendar API](https://www.anchorterminal.com/compare/acuity-scheduling-vs-truto-calendar.md)\n- [Agenda Hero vs Cronofy API](https://www.anchorterminal.com/compare/agenda-hero-vs-cronofy.md)\n- [Agenda Hero vs Truto Unified Calendar API](https://www.anchorterminal.com/compare/agenda-hero-vs-truto-calendar.md)\n- [Apiroc Unified Calendar API vs Cronofy API](https://www.anchorterminal.com/compare/apiroc-vs-cronofy.md)\n- [Apiroc Unified Calendar API vs Truto Unified Calendar API](https://www.anchorterminal.com/compare/apiroc-vs-truto-calendar.md)\n- [Aurinko Calendar API vs Cronofy API](https://www.anchorterminal.com/compare/aurinko-calendar-vs-cronofy.md)\n- [Aurinko Calendar API vs Truto Unified Calendar API](https://www.anchorterminal.com/compare/aurinko-calendar-vs-truto-calendar.md)\n- [Cal.com API v2 + MCP vs Cronofy API](https://www.anchorterminal.com/compare/cal-com-vs-cronofy.md)\n- [Cal.com API v2 + MCP vs Truto Unified Calendar API](https://www.anchorterminal.com/compare/cal-com-vs-truto-calendar.md)\n- [Calendly API + MCP vs Cronofy API](https://www.anchorterminal.com/compare/calendly-vs-cronofy.md)\n- [Calendly API + MCP vs Truto Unified Calendar API](https://www.anchorterminal.com/compare/calendly-vs-truto-calendar.md)\n- [Cozi Family Organizer vs Cronofy API](https://www.anchorterminal.com/compare/cozi-vs-cronofy.md)\n- [Cozi Family Organizer vs Truto Unified Calendar API](https://www.anchorterminal.com/compare/cozi-vs-truto-calendar.md)\n- [Cronofy API vs Google Calendar API](https://www.anchorterminal.com/compare/cronofy-vs-google-calendar-api.md)\n- [Cronofy API vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/cronofy-vs-microsoft-graph-calendar.md)\n- [Cronofy API vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/cronofy-vs-nylas-calendar.md)\n- [Cronofy API vs Reclaim.ai](https://www.anchorterminal.com/compare/cronofy-vs-reclaim-ai.md)\n- [Cronofy API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/cronofy-vs-savvycal.md)\n- [Cronofy API vs Zoom Scheduler API](https://www.anchorterminal.com/compare/cronofy-vs-zoom-scheduler.md)\n- [Google Calendar API vs Truto Unified Calendar API](https://www.anchorterminal.com/compare/google-calendar-api-vs-truto-calendar.md)\n- [Microsoft Graph Calendar API vs Truto Unified Calendar API](https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-truto-calendar.md)\n- [Nylas Calendar and Scheduler API vs Truto Unified Calendar API](https://www.anchorterminal.com/compare/nylas-calendar-vs-truto-calendar.md)\n- [Reclaim.ai vs Truto Unified Calendar API](https://www.anchorterminal.com/compare/reclaim-ai-vs-truto-calendar.md)\n- [Truto Unified Calendar API vs Zoom Scheduler API](https://www.anchorterminal.com/compare/truto-calendar-vs-zoom-scheduler.md)\n- [Cronofy API vs YouCanBookMe API](https://www.anchorterminal.com/compare/cronofy-vs-youcanbookme.md)\n- [SavvyCal API + MCP vs Truto Unified Calendar API](https://www.anchorterminal.com/compare/savvycal-vs-truto-calendar.md)\n- [Truto Unified Calendar API vs YouCanBookMe API](https://www.anchorterminal.com/compare/truto-calendar-vs-youcanbookme.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Cronofy API vs Truto Unified Calendar API",
        "url": ""
      }
    ],
    "description": "Cronofy scores 67.5 (B) to Truto Unified Calendar's 60.4 (C) for calendar access. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Cronofy API B 67.5",
      "Truto Unified Calendar API C 60.4",
      "scores"
    ],
    "h1": "Cronofy API vs Truto Unified Calendar API",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/cronofy-vs-truto-calendar",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Cronofy vs Truto Unified Calendar for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/cronofy-vs-truto-calendar"
  },
  "tokens": {
    "markdown": 4750,
    "slim": 2680
  },
  "version": 1
}
