Skip to main content
Glama

Server Details

MCP server for Cronofy — read calendars, events and free/busy, and create, update or delete events.

Ownership verified
Status
Healthy
Uptime
76.9% over 73 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
m190/usefulapi-mcp
GitHub Stars
0

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation4/5

Most tools target distinct resources and actions, but cronofy_get_account and cronofy_get_userinfo both retrieve user identity information, which could cause confusion. The descriptions differentiate them, but an agent might still misselect.

Naming Consistency4/5

All tools use a consistent cronofy_ prefix and snake_case, with a verb_noun pattern. The verb choices vary slightly (get, list, read, upsert), but the structure is predictable and readable.

Tool Count5/5

8 tools is well-scoped for a calendar integration server, covering core operations without excess. Each tool appears to earn its place.

Completeness4/5

The set covers event creation, reading, deletion, free/busy, and account/profile listing. However, a dedicated get_event tool for retrieving a single event by ID is missing, and some scheduling endpoints may be absent, representing minor gaps.

Available Tools

8 tools
cronofy_delete_eventDelete eventB
Destructive
Inspect

Deletes an event (by your event_id) from a real connected calendar. Destructive. API: DELETE /v1/calendars/{calendar_id}/events.

NameRequiredDescriptionDefault
event_idYesYOUR event_id for the event to delete (sent in the JSON body).
calendar_idYesCalendar id the event lives on.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare destructiveHint=true, so "Destructive." is largely a restatement, though it reinforces severity. The genuinely additive part is "from a real connected calendar," which tells the agent this mutates an external provider's state rather than a sandbox copy. It still omits whether the delete is idempotent, what happens for an unknown event_id, and whether specific OAuth scopes are required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the operation and its target come first, severity second, and the REST mapping last. Nothing is padded and the ordering is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter destructive call with no output schema, the description plus annotations cover the essentials. It stops short of describing failure modes, idempotency, or permission requirements, which leaves clear gaps for a real-calendar mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are documented there, including the note that event_id is sent in the JSON body. The description's "by your event_id" adds emphasis but no new semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Deletes an event") and scopes it to "a real connected calendar," which separates it from purely local bookkeeping. It does not explicitly differentiate itself from the sibling cronofy_upsert_event, which is the natural alternative for modifying calendar state.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no mention of alternatives such as cronofy_upsert_event. The use case is inferable from the name, but the description itself provides no routing help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cronofy_get_accountGet accountB
Read-only
Inspect

Get the authenticated Cronofy account's details (id, email, name, default tzid, locale). API: GET /v1/account.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already tells the agent this is a safe read, so the description does not need to re-establish safety. It adds the concrete endpoint (GET /v1/account) and the shape of the payload, but says nothing about auth scope, rate limits, or behavior beyond a plain fetch. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence plus a short API-path clause; nothing is padded. The trailing 'API: GET /v1/account' is marginally useful for an agent but costs almost nothing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully names what is returned (id, email, name, tzid, locale), which is the main thing an agent needs to know before calling. A zero-parameter read tool needs little more, though an explicit note that it is the authenticated user's own account would fully close the loop.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The schema is empty and fully consistent with the no-argument description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get the authenticated Cronofy account's details') and enumerates the returned fields (id, email, name, default tzid, locale), which is more than a restatement of the title. It is clear, but it never distinguishes itself from the sibling cronofy_get_userinfo, so the agent must guess which identity endpoint to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives. With cronofy_get_userinfo sitting right beside it, the absence of any routing hint is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cronofy_get_free_busyGet free/busyA
Read-only
Inspect

Read free/busy information across the account's calendars over a time window. Returns { pages, free_busy }. API: GET /v1/free_busy.

NameRequiredDescriptionDefault
toNoEnd of the window — date (yyyy-mm-dd) or ISO 8601 datetime.
fromNoStart of the window — date (yyyy-mm-dd) or ISO 8601 datetime.
tzidYesREQUIRED time zone id for the response, e.g. "Etc/UTC".
calendar_idsNoRestrict to these calendar ids (sent as repeated calendar_ids[] params).
include_managedNoInclude events created via the Cronofy API. Default false.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description goes beyond that by disclosing the return envelope {"pages", "free_busy"} and the underlying endpoint, which is genuinely useful since no output schema exists. It stops short of explaining pagination mechanics or how pages are traversed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the purpose and scope lead, followed by the return shape and endpoint. No filler, no restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only tool with full schema coverage and annotation-backed safety, the description supplies the key missing piece — the return envelope — in lieu of an output schema. Only pagination mechanics and the timezone requirement's rationale are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (from, to, tzid, calendar_ids, include_managed) is already documented with format and behavior in the schema. The description adds no syntax or semantic detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb (read), resource (free/busy information), and scope (across the account's calendars over a time window). This clearly separates it from siblings like cronofy_read_events or cronofy_list_calendars, which surface events or calendar metadata rather than aggregated availability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description describes what it reads but gives no guidance on when to prefer this over cronofy_read_events, nor any prerequisites (e.g. whether calendars must be connected). No alternatives or exclusions are named, so the agent must infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cronofy_get_userinfoGet userinfoA
Read-only
Inspect

Get the OpenID-style profile of the authenticated user (sub, email, Cronofy profile info). API: GET /v1/userinfo.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered. The description adds genuinely useful context the annotations do not: this is an OpenID-style profile and it returns sub, email, and Cronofy profile fields — important since there is no output schema. Auth scope and rate-limit behavior are still undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences: the semantic purpose first, then the raw API path. No filler, and the endpoint mapping is useful for an agent reasoning about the Cronofy API surface.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the burden of saying what comes back, and it does name the key fields. For a parameterless read it is essentially complete, though it omits auth requirements and any error/empty-identity cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the schema coverage is also 100%.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (OpenID-style profile of the authenticated user), and enumerates the payload (sub, email, Cronofy profile info). It does not explicitly contrast itself with siblings like cronofy_get_account or cronofy_list_profiles, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use/when-not-to-use statement or named alternative. Usage is only implied by 'authenticated user', which does hint that this is the identity-lookup call, but nothing tells the agent how it differs from cronofy_get_account.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cronofy_list_calendarsList calendarsA
Read-only
Inspect

List all calendars the authenticated account can see (id, name, profile, readonly, primary). API: GET /v1/calendars.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds real value beyond that: the visibility scope ('all calendars the authenticated account can see'), the returned field set (id, name, profile, readonly, primary), and the backing endpoint. With no output schema, naming the fields is the main source of behavioral detail, though it says nothing about pagination or result size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence plus the endpoint annotation, with no filler or repetition. Every element carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with no output schema, the definition supplies the scope, the returned fields, and the endpoint, which is enough for correct invocation. It stops short of five because nothing is said about result volume or ordering when an account has many calendars.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. The parenthetical is a return-value list, not parameter documentation, so it neither adds nor detracts here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all calendars') and scopes it to 'the authenticated account can see', so an agent knows exactly what the call returns. It does not explicitly distinguish itself from the closest sibling, cronofy_list_profiles, but the resource noun is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives such as cronofy_list_profiles or cronofy_get_account. Usage is only inferable from the resource name, which is the minimum level of implication.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cronofy_list_profilesList profilesA
Read-only
Inspect

List the connected calendar accounts/profiles (e.g. Google, Office 365) linked to this Cronofy account. API: GET /v1/profiles.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so safety is covered structurally. The description adds the underlying endpoint (GET /v1/profiles), which is mildly useful context, but says nothing about pagination, rate limits, or whether disconnected profiles are included.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the resource and scope front-loaded and the endpoint detail deferred to the end. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does not sketch the return shape (profile id, provider, status), which is a minor gap for a zero-param discovery tool. Otherwise complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to clarify beyond what the schema provides. Baseline 4 applies for a no-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (profiles) and immediately disambiguates the vague term 'profiles' with concrete examples (Google, Office 365) plus the owning account scope. An agent can distinguish this from cronofy_list_calendars without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — discover which calendar accounts are linked — but the description never states when to call this versus cronofy_list_calendars or cronofy_get_account, nor any prerequisites. No explicit alternatives or exclusions, so it lands at the implied-usage baseline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cronofy_read_eventsRead eventsB
Read-only
Inspect

Read events across the account's calendars over a time window. Returns { pages, events }. API: GET /v1/events.

NameRequiredDescriptionDefault
toNoEnd of the window — date (yyyy-mm-dd) or ISO 8601 datetime.
fromNoStart of the window — date (yyyy-mm-dd) or ISO 8601 datetime.
tzidYesREQUIRED time zone id for the response, e.g. "Etc/UTC" or "America/New_York".
calendar_idsNoRestrict to these calendar ids (sent as repeated calendar_ids[] params).
only_managedNoReturn only events created via the Cronofy API. Default false.
last_modifiedNoOnly events modified since this ISO 8601 datetime.
include_deletedNoInclude deleted events. Default false.
include_managedNoInclude events created via the Cronofy API. Default false.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds the return shape ("{ pages, events }") and the underlying endpoint, but says nothing about pagination mechanics, the default window behavior if from/to are omitted, or rate limits — useful context beyond annotations but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with zero waste: the operation and its scope come first, followed by the return shape and endpoint. Nothing is padded or repetitive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description usefully notes the response shape (pages, events), and the 100% schema coverage handles all filtering parameters. It is slightly thin on pagination flow and on what happens when from/to are omitted, but nothing an agent needs to invoke the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all eight parameters (tzid, from, to, calendar_ids, and the three filter booleans) are already documented in the schema. The description only restates the time-window concept and adds no format or default details beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ("Read events") plus the scope ("across the account's calendars over a time window"), which is clearly distinct from sibling tools like list_calendars or get_free_busy. It does not explicitly name or contrast with those siblings, so it falls short of the top band.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance and no mention of alternatives such as cronofy_get_free_busy for availability checks or cronofy_upsert_event for writes. The time-window scope hints at usage but the agent must infer when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cronofy_upsert_eventCreate or update eventA
Destructive
Inspect

Creates or updates an event on a REAL connected calendar (upsert by event_id). This writes to the user's actual calendar. API: POST /v1/calendars/{calendar_id}/events.

NameRequiredDescriptionDefault
endYesEvent end — ISO 8601 datetime or a date (yyyy-mm-dd) string.
tzidNoTime zone id for the start/end, e.g. "America/New_York".
startYesEvent start — ISO 8601 datetime or a date (yyyy-mm-dd) string.
summaryYesEvent title/summary.
event_idYesYOUR unique id for the event. Re-using it updates the same event.
calendar_idYesTarget calendar id (from cronofy_list_calendars).
descriptionNoEvent description/body.
location_descriptionNoFree-text location (sent as location.description).

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations carry only destructiveHint=true, so the description meaningfully adds that this mutates a real, user-visible calendar and that the same event_id overwrites the prior event. It stops short of disclosing whether omitted fields are cleared, whether attendee notifications are sent, or whether the operation is reversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the verb and the upsert semantics, with the destructive scope warning placed immediately after. The trailing API route is mildly redundant for an agent but cheap.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool with no output schema and only a destructiveHint annotation, the description covers purpose, upsert semantics, and write target — enough to call it correctly. The notable gap is overwrite/partial-update behavior for optional fields, which an agent patching an existing event would want to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each of the 8 parameters is already documented in the schema, including event_id's upsert behavior and calendar_id's provenance. The description adds no format guidance (ISO 8601, tzid interaction) beyond what the schema supplies, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (upsert/create-or-update), the resource (event), and the critical scope constraint that it targets a REAL connected calendar, plus the exact API route. This clearly separates it from cronofy_read_events and cronofy_delete_event without needing to open any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the upsert contract — re-using event_id updates rather than duplicating — and warns that the write lands on the user's live calendar, which is the key context for deciding to call it. It does not, however, name any alternative or exclusion (e.g., use read_events to fetch before mutating) or state prerequisites like authorization scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.