CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Heldly

io.heldly/scheduler
13 toolsHTTPregistry active
Summary

This connects Claude directly to your Google Calendar and turns natural language into booked meetings. You describe the meeting ("30-min discovery with sara@acme.com this week"), and it finds three free slots, places tentative holds on your calendar, and emails the invitee a picker. When they choose a time, it confirms that slot and clears the others automatically. No back-and-forth emails, no sending Calendly links, no manual cleanup. The whole flow happens through Claude: find_times checks availability, propose_meeting creates the holds, send_invitee_email delivers the picker. Built for customer-facing teams who spend half their day scheduling calls. Free tier covers 5 meetings per month.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

13 tools
find_timesPreview candidate meeting slots (no holds placed). Returns 3 slots labeled `1`, `2`, `3` chronologically, each with `previous_event` / `next_event` — the host's nearest events on either side, with gap + title. **Chat response — keep it SHORT and lead with the iframe.** The ifr...10 params

Preview candidate meeting slots (no holds placed). Returns 3 slots labeled `1`, `2`, `3` chronologically, each with `previous_event` / `next_event` — the host's nearest events on either side, with gap + title. **Chat response — keep it SHORT and lead with the iframe.** The ifr...

Parameters* required
window_endstring
ISO 8601 end of the search window.
duration_minvalue
Meeting duration in minutes (30, 45, 60, or 90).
window_startstring
ISO 8601 start of the search window.
current_slotsarray
The host's 3 currently-committed slot times, with their chronological labels (1 = earliest). Pass these in two situations: (a) alongside `propose_label` to propose a change to one slot while keeping the other two, (b) alone to commit a previously-proposed change (the new slot list replaces the previous one in the iframe). Pass the exact starts_at/ends_at values returned by the tool's previous call — don't reformat. Omit on the first call of a conversation.
propose_labelstring
Which committed slot (by chronological label) to re-pick a new time for. Requires `current_slots`. The two kept slots stay in `result.slots`; the new candidate appears in `result.proposed_slot.new` and renders as a visual diff overlay in the iframe (old faded + new emerald + dashed border). Narrow `window_start`/`window_end` to match the host's hint ("Friday morning" → that day's 9–12 window). Do NOT use this to commit — that's a separate call with updated `current_slots` and NO `propose_label`.one of 1 · 2 · 3
co_host_emailsarray
Optional emails of workspace members who should also attend. Heldly intersects everyone's calendars so the returned slots work for all of you. Available on every plan.
invitee_timezonestring
IANA timezone of the invitee (e.g. "Europe/Berlin", "America/New_York", "Asia/Tokyo"). When set, Heldly additionally requires each candidate to fall inside 9–17 M–F in the invitee's local time — so a Stockholm host meeting a Tokyo invitee gets only the narrow window that works for both parties. When omitted, Heldly filters by the host's tz only. Don't infer from the email domain. Translate from whatever the host says in chat: a city ("Berlin" → "Europe/Berlin"), a country ("Sweden" → "Europe/Stockholm"), an offset ("6h behind me" → compute from host tz), or a region ("east coast US" → "America/New_York"). If the host says "doesn't matter" or "same as me", leave this absent.
target_starts_atstring
Optional exact target time for the new candidate (ISO timestamp). Requires `current_slots` + `propose_label`. When set, the picker uses THIS time instead of running the bucket-rotation algorithm — the target is still validated against every constraint (workday hours, blackouts, invitee timezone, kept-slot overlap, host calendar conflicts, co-host busy). On failure, `proposed_slot.new` is null and `result.target_failure_reason` explains why. Two calling contexts: (a) the host clicks a target cell in the calendar iframe (a chat message of the form "Swap slot N to {weekday HH:MM} ({iso})" arrives — forward that ISO here); (b) the host names a specific time in chat ("swap slot 2 for Wed 3 PM") — convert to an ISO in the host's timezone and pass it here.
workday_end_hourinteger
Latest acceptable hour of day, interpreted in the host's timezone (see /settings/profile). When omitted, Heldly uses the host's saved availability end hour (defaults to 17).
workday_start_hourinteger
Earliest acceptable hour of day, interpreted in the host's timezone (see /settings/profile). When omitted, Heldly uses the host's saved availability start hour (defaults to 9). Pass explicitly only when the host narrows the moment ("book mornings only", "after 2pm").
propose_meetingPropose a meeting to an external invitee (anyone outside the host's workspace). Heldly places tentative holds on every host's Google Calendar synchronously and persists the meeting. When the invitee picks, Heldly confirms the chosen slot and deletes the siblings on every host'...16 params

Propose a meeting to an external invitee (anyone outside the host's workspace). Heldly places tentative holds on every host's Google Calendar synchronously and persists the meeting. When the invitee picks, Heldly confirms the chosen slot and deletes the siblings on every host'...

Parameters* required
slotsarray
Exactly 3 candidate slots. Each slot's (ends_at - starts_at) must equal duration_min. Heldly places one tentative event per (slot × host) on each host's Google Calendar.
auto_sendboolean
Defaults to **false** — Heldly creates the meeting + places the holds, but does NOT email the invitee. After this tool returns, confirm the details with the host, then call `send_invitee_email`. Set this to true only if the host has already explicitly approved everything before you called.
host_namestring
Host's full name. Defaults to your account name.
host_emailstring
Host's email. Defaults to your account email.
window_endstring
Forward the `window.ends_at` value from your preceding `find_times` call. See `window_start`.
duration_minvalue
Meeting duration in minutes (30, 45, 60, or 90).
host_messagestring
Optional internal note saved on the meeting (not shown to the invitee).
invitee_namestring
Primary invitee's full name.
window_startstring
Forward the `window.starts_at` value from your preceding `find_times` call. Captures the host's intended booking window so that if the invitee can't make any of the proposed times, the picker's "None of these work" flow searches the right range. Falls back to the earliest slot start if omitted.
invitee_emailstring
Primary invitee's email. **Optional.** Provide it when you have it and Heldly will email the picker. Omit it for shareable mode — Heldly returns the picker URL and the host pastes it into Slack/LinkedIn/wherever; the invitee fills in their email on the picker page when they pick.
meeting_topicstring
Short subject of the meeting. E.g. 'Discovery call', 'Demo follow-up', 'Q3 QBR', 'Renewal review'. Becomes the calendar invite title and the heading on the invitee's picker page. Do NOT include the invitee's name ("Discovery call with Adam" reads weird to Adam, who is reading it) or the host's name — neither party needs to be told who the meeting is with.
co_host_emailsarray
Optional emails of workspace members who should also attend. Heldly places holds on their calendars too, emails them they were added, and confirms / cleans up on their calendars when the invitee picks. They must (a) be in your workspace, (b) have calendar connected, (c) not have opted out of co-hosting. Available on every plan.
meeting_agendastring
Agenda / context that goes into the calendar event description. The invitee will read this on the Google Calendar invite they receive after picking, so write in second person where natural ("We'll cover...") and skip the invitee's name — "learn about Adam's challenges" reads as third-person-about-Adam to Adam himself.
invitee_messagestring
Optional personal note included in the invitee's picker email.
expiration_hoursvalue
Hours before the picker auto-expires if the invitee doesn't pick. Defaults to account default.
additional_invitee_emailsarray
Optional secondary invitees (up to 5). They're CC'd on the picker email and added to the Google Calendar event when the primary picks. Only the primary invitee can pick a slot. Use this for discovery/QBR calls where multiple people on the customer side should attend but one of them (typically the champion or main buyer) is choosing the time. Requires `invitee_email` — not compatible with shareable mode.
list_meetingsList meetings you've proposed or are co-hosting, most recent first. Use `query` to find a specific meeting by invitee, host, or topic. Each row includes a `picker_url` the host can paste into Slack / LinkedIn / a DM when the invitee says they never got the email — single-use,...4 params

List meetings you've proposed or are co-hosting, most recent first. Use `query` to find a specific meeting by invitee, host, or topic. Each row includes a `picker_url` the host can paste into Slack / LinkedIn / a DM when the invitee says they never got the email — single-use,...

Parameters* required
limitinteger
Default 20, max 100
querystring
Case-insensitive substring match against invitee name/email, host name/email, and meeting topic.
statusstring
Filter by statusone of awaiting_invitee_pick · confirmed · expired · cancelled
since_daysinteger
Only include meetings updated in the last N days. In-flight meetings always come back regardless.
recent_inviteesReturn the host's recent invitees deduped by `invitee_email`, most-recent-first, each carrying the previous meeting's `last_meeting_topic` + `last_meeting_agenda` and `meeting_count`. Call this on any "book another with Sara" / "set up a follow-up with the Acme person" intent...2 params

Return the host's recent invitees deduped by `invitee_email`, most-recent-first, each carrying the previous meeting's `last_meeting_topic` + `last_meeting_agenda` and `meeting_count`. Call this on any "book another with Sara" / "set up a follow-up with the Acme person" intent...

Parameters* required
limitinteger
Default 20, max 25
querystring
Case-insensitive substring match against `invitee_name` or `invitee_email`. Use whenever the host names a specific person.
get_meetingFetch the full details of a single meeting, including the timeline of events.1 params

Fetch the full details of a single meeting, including the timeline of events.

Parameters* required
meeting_idstring
The meeting's id, as returned by `propose_meeting`, `list_meetings`, or `recent_invitees`.
check_meeting_statusQuick status snapshot of a single meeting — the right tool for "did Sara book?" / "is the Acme meeting confirmed?". Returns `status` + `hint`, the `booked_slot` (with pre-formatted local time) if one was picked, the invitee name, and onboarding narration when relevant. For ful...1 params

Quick status snapshot of a single meeting — the right tool for "did Sara book?" / "is the Acme meeting confirmed?". Returns `status` + `hint`, the `booked_slot` (with pre-formatted local time) if one was picked, the invitee name, and onboarding narration when relevant. For ful...

Parameters* required
meeting_idstring
The meeting's id, as returned by `propose_meeting`, `list_meetings`, or `recent_invitees`.
send_invitee_emailSend the invitee picker email. This is both the **first-send** tool (after propose_meeting with auto_send=false, which is the default — call this once the host has confirmed the topic, agenda, and slots) AND the **resend / reminder** tool (if the host asks 'nudge Sara again')....1 params

Send the invitee picker email. This is both the **first-send** tool (after propose_meeting with auto_send=false, which is the default — call this once the host has confirmed the topic, agenda, and slots) AND the **resend / reminder** tool (if the host asks 'nudge Sara again')....

Parameters* required
meeting_idstring
The meeting's id, as returned by `propose_meeting`, `list_meetings`, or `recent_invitees`.
cancel_meetingCancel a meeting. Heldly releases active picker slots and deletes every tentative or confirmed event we placed on any host's calendar — synchronously, in one call. The invitee gets a cancellation email if the meeting was already booked. Cannot cancel meetings that are already...2 params

Cancel a meeting. Heldly releases active picker slots and deletes every tentative or confirmed event we placed on any host's calendar — synchronously, in one call. The invitee gets a cancellation email if the meeting was already booked. Cannot cancel meetings that are already...

Parameters* required
reasonstring
Optional reason — recorded on the timeline.
meeting_idstring
The meeting's id, as returned by `propose_meeting`, `list_meetings`, or `recent_invitees`.
update_meeting_detailsEdit a meeting's topic, agenda, or invitee name WITHOUT re-emailing the invitee and WITHOUT changing any times. The right tool for typo fixes, agenda refinements, and correcting an invitee name the host wrote wrong. Allowed on `awaiting_invitee_pick` and `confirmed` meetings....4 params

Edit a meeting's topic, agenda, or invitee name WITHOUT re-emailing the invitee and WITHOUT changing any times. The right tool for typo fixes, agenda refinements, and correcting an invitee name the host wrote wrong. Allowed on `awaiting_invitee_pick` and `confirmed` meetings....

Parameters* required
meeting_idstring
The meeting's id, as returned by `propose_meeting`, `list_meetings`, or `recent_invitees`.
invitee_namestring
New invitee display name (1–120 chars).
meeting_topicstring
New short subject of the meeting (1–120 chars). Keep names out — both parties read it.
meeting_agendastring
New agenda / description (1–4000 chars). Becomes the Google Calendar event description after patch.
add_co_hostAdd a workspace member as a co-host on an existing meeting without going through `reschedule_meeting` (which is heavy: deletes events + re-emails the invitee). The right tool for "actually loop Pat in on the Sara meeting too." Available on every plan. The new co-host must be a...2 params

Add a workspace member as a co-host on an existing meeting without going through `reschedule_meeting` (which is heavy: deletes events + re-emails the invitee). The right tool for "actually loop Pat in on the Sara meeting too." Available on every plan. The new co-host must be a...

Parameters* required
meeting_idstring
The meeting's id, as returned by `propose_meeting`, `list_meetings`, or `recent_invitees`.
co_host_emailstring
Email of the workspace member to add as a co-host.
reschedule_meetingReschedule an existing meeting to new slots. Works for both: • `confirmed` meetings — Heldly deletes the booked event on every host's calendar, places fresh tentatives on the new slots, flips status back to awaiting_invitee_pick, and emails the invitee a 'moved to...' picker....6 params

Reschedule an existing meeting to new slots. Works for both: • `confirmed` meetings — Heldly deletes the booked event on every host's calendar, places fresh tentatives on the new slots, flips status back to awaiting_invitee_pick, and emails the invitee a 'moved to...' picker....

Parameters* required
slotsarray
Exactly 3 new candidate slots. Each slot's duration must match the original meeting's `duration_min`.
reasonstring
Optional host-supplied reason shown to the invitee in the 'moved to...' email body. E.g. 'Anna had a conflict come up — here are some other times that work.'
meeting_idstring
The meeting's id, as returned by `propose_meeting`, `list_meetings`, or `recent_invitees`.
window_endstring
Forward `window.ends_at` from your preceding `find_times` call.
window_startstring
Forward `window.starts_at` from your preceding `find_times` call. Captures the host's intended window for the rescheduled meeting so the picker's "None of these work" flow searches the right range.
notify_inviteeboolean
Defaults to true: Heldly immediately emails the invitee the new picker. Set false to let the host preview the new state and call send_invitee_email manually.
invite_workspace_memberInvite a new member to your Heldly workspace (Business plan, admin only). Use this when the host wants to co-host a meeting with someone who isn't in the workspace yet — find_times and propose_meeting return `co_host_not_in_workspace` for those emails. The invitee receives an...3 params

Invite a new member to your Heldly workspace (Business plan, admin only). Use this when the host wants to co-host a meeting with someone who isn't in the workspace yet — find_times and propose_meeting return `co_host_not_in_workspace` for those emails. The invitee receives an...

Parameters* required
notestring
Optional note appended to the invite email (currently ignored — reserved for future use).
rolestring
Workspace role — defaults to 'member'. Use 'admin' only when the host explicitly asks.one of member · admin
emailstring
Email of the person to invite.
get_workspace_insightsWorkspace-wide insights for managers (Team admins only). Returns the funnel (proposed → opened → picked → confirmed), per-week volume, and time-to-pick percentiles. Use when the host asks any of: • 'how many meetings did the team book last week?' • 'what's our pick rate this q...2 params

Workspace-wide insights for managers (Team admins only). Returns the funnel (proposed → opened → picked → confirmed), per-week volume, and time-to-pick percentiles. Use when the host asks any of: • 'how many meetings did the team book last week?' • 'what's our pick rate this q...

Parameters* required
metricstring
Optional focus. Defaults to 'all' (returns the full bundle). Use a single metric when the host asks about one specific thing.one of funnel · volume · time_to_pick · all
since_daysinteger
Window size in days. Defaults to 30.
Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Registryactive
TransportHTTP
UpdatedMay 25, 2026
Open website