Skip to main content
Glama
605,359 tools. Updated 2026-09-24 00:17

"How to access the calendar and join meetings on Microsoft Teams" matching MCP tools:

  • Create a new team owned by the user (they become the owner). Required: name (string). Optional: ref — set to "assistant_suggestion" ONLY when creating in response to the me → suggestions.create_team offer, so the creation is attributed to that surface; omit it when the user asked to create a team unprompted. No charge is incurred here; a per-seat charge is added only when an invited teammate accepts. A user can own at most 3 free teams: at that limit this returns an error naming the teams they own and asking them to upgrade or delete one — relay it rather than retrying. Returns join_url: a shareable link that lets teammates join themselves, with join_link_expires_at and join_link_uses_remaining. Offer that link FIRST — most people cannot recall a colleague's address mid-conversation — and use teams-invite when the user names a specific address.
    ConnectorOAuth
  • Create a new calendar event. Use this to schedule meetings, appointments, or all-day events. For all-day events, only provide dates (end date is EXCLUSIVE - use '2024-01-16' for a single day event on Jan 15). For timed events, both start and end times are required. Can optionally invite attendees with email notifications. The created event ID can be used for future updates or deletion.
    ConnectorOAuth
  • Get a teammate into a team (team owner only), two ways. Required: team_id (integer, from teams-list). WITH email: emails an invite to that address. WITHOUT email: returns join_url, a shareable link anyone can open to join themselves, plus join_link_expires_at and join_link_uses_remaining. Prefer the LINK unless the user names an address — few people can recall a colleague's address mid-conversation, and asking is where teams stall at one member. Give the link to the USER to share; never post it anywhere yourself. Creating a link REPLACES any existing one, so to repeat a link already shared, read join_url from teams-get instead of calling this. Optional: action ('create' (default) | 'revoke'). Inviting is always free; on a team that already subscribes, each person who joins adds a billable seat straight away.
    ConnectorOAuth
  • Pro/Teams — summarises the caller's tool-usage patterns and value signals over a configurable window (default 30 days). Returns tool_call_counts, top principles cited in validate runs, value_event_counts by event_type, and an aggregate readiness trend. WHEN TO CALL: the user asks 'how is the Blueprint helping me/my team', 'what should I explore next', or 'show me my Blueprint usage'. WHEN NOT TO CALL: proactively or on every conversation turn (the summary is an explicit retrospective, not telemetry); to compare users (returns only the caller's own data). BEHAVIOR: read-only, idempotent over the same window. Aggregates from AIToolCallLog + ValueEvent + AIValidationRunLog. Pass private_session=true to bypass server-side logging for this summary call (the underlying historical data still exists; only this read is untracked). Auth: Bearer <token>, Pro or Teams plan. UK/EU residency.
    ConnectorNo auth
  • Returns turva.dev's engagement principles: async-only, least access, the result shows up in scanner numbers, and open and verifiable. Use this when a user asks how turva.dev works with clients or what rules an engagement follows. For what is sold and what it costs use get_services instead, and for how to start use get_contact. Read-only: returns static JSON that is compiled into the Worker, so it changes nothing and updates only on deploy.
    ConnectorNo auth
  • Pro/Teams — summarises the caller's tool-usage patterns and value signals over a configurable window (default 30 days). Returns tool_call_counts, top principles cited in validate runs, value_event_counts by event_type, and an aggregate readiness trend. WHEN TO CALL: the user asks 'how is the Blueprint helping me/my team', 'what should I explore next', or 'show me my Blueprint usage'. WHEN NOT TO CALL: proactively or on every conversation turn (the summary is an explicit retrospective, not telemetry); to compare users (returns only the caller's own data). BEHAVIOR: read-only, idempotent over the same window. Aggregates from AIToolCallLog + ValueEvent + AIValidationRunLog. Pass private_session=true to bypass server-side logging for this summary call (the underlying historical data still exists; only this read is untracked). Auth: Bearer <token>, Pro or Teams plan. UK/EU residency.
    ConnectorNo auth

Matching MCP Servers

Matching MCP Connectors

  • Join two lists of JSON rows on a key, like SQL or VLOOKUP: left, inner, full, anti joins, union.

  • Permissioned access to Outlook, OneDrive and Teams via the user's own Microsoft account

  • Lists events from the Mac's Calendar app (Calendar.app, local/iCloud calendars) in a date range, or reads ONE event in full via event_id. List entries preview notes (200 chars, notes_truncated flag) and cap attendees; pass event_id to get the complete notes and full roster. Defaults to today + 7 days. For a Microsoft 365 calendar use m365_list_events instead.
    ConnectorOAuth
  • Returns a structured snapshot of the LMCP environment: server/tray/teams-proxy versions, detected AI client, cloud relay state, TCC permission states (Calendar/Reminders/Contacts), and a compact summary of which services (Mail/Calendar/Contacts/Teams/OneDrive/Reminders/Notes) are reachable. Fast (<500ms), passive — never prompts the user, never opens app windows, never touches the network. Call this when you need to verify the environment is healthy before attempting a tool, or to understand what's installed and accessible. If `services.scan_pending` is true, the background service scan hasn't finished yet (just after startup) and the per-service running/accounts values are placeholders — do NOT treat them as a real outage; just call the tool you need. Otherwise `services.scanned_seconds_ago` tells you how many seconds ago that scan ran (cadence ~60s): the per-service values are a snapshot, NOT a live probe. A `false`/`0`/`not available` for a service is advisory only — it can be stale (e.g. the user connected WhatsApp or opened Mail seconds ago) — so never use this tool as a preflight gate to skip or cancel a task; the actual tool call is the source of truth, just attempt it. For reporting failures, use `report_problem` instead — it captures this same snapshot plus logs and submits to the team.
    ConnectorOAuth
  • Join a channel by id + token. Provide either a callsign (anonymous) or an identity_key (account-bound; callsign comes from the identity). If the channel has require_identity=true, identity_key is mandatory. If the human operator gave you an owner_password for the channel, pass it here — the server uses it to mark this session as 'human-authorized' and unlocks trusted-mode behavior. After joining, this session is bound to that channel — subsequent send/listen/roster/history/leave operate on it. PUBLIC BANDS: there are three always-on always-public channels — `general`, `help`, `random` — anyone can join without a token (token is ignored on these). Pass channel_id='general' (or 'help' / 'random') with any callsign. Useful for serendipitous agent discovery: when the user says 'unite a la banda general' or 'join the help band', go straight to join with channel_id='general' — don't ask for a token, don't create a new channel. SEE ALSO: if the operator wants to 'drive you from a phone' / 'send a pair link' / 'control you from their couch', do NOT just join — first call `open_remote_control` (for a new channel) or `make_remote_link` (to attach a phone link to a channel you're already in / about to join). Those tools mint the phone identity + mobile_url + owner_password in one go; plain `join` won't give you a URL the human can open on a phone. SWITCHING CHANNELS: from this unified endpoint you can `join` a different channel_id at any time — the session re-binds. No restart, no config edit, no new MCP install.
    ConnectorNo auth
  • Creates a free booking or returns PAYMENT_REQUIRED with a secure payment URL for paid meetings. Paid meetings are not booked until payment succeeds; show the link and never claim confirmation before that. Only call after the guest explicitly approves preview_booking. Copy the preview's booking fields and confirmationToken unchanged. Reuse requestId and token on network retries; never claim notifications are delivered until syncStatus is ready.
    Connector
    Destructive
    No auth
  • Add a participant to an encrypted discussion by wrapping the thread key with their published encryption key locally and storing only that envelope. Only an existing participant can do this — the server cannot add anyone, because it does not hold the thread key. Granting access lets the new participant decrypt the discussion's history as well, so grant deliberately. Verify the recipient's key fingerprint against get_key_history before wrapping. Newcomers cannot admit themselves: use list_agents with open_to_contact to find willing participants, and open_invite on a discussion to see whether its participants welcome join requests.
    ConnectorNo auth
  • As an existing participant, see who has asked to join your discussions (open_invite ones). Returns only metadata: request id, requester id, handle, description, tags, published encryption key, fingerprint and key_version, an optional short reason and a timestamp. Only discussions where you hold a thread-key envelope are listed; asking about a discussion you do not belong to is refused. Verify the requester's fingerprint (get_key_history) before wrapping the thread key to it, then call grant_thread_access — granting also lets them decrypt history, so decide deliberately. The server never grants access on your behalf.
    ConnectorNo auth
  • List events from the user's connected Google Calendar, ordered by start time: summary, start/end, location, organizer, attendees and their RSVP status, and a meeting link when there is one. With no time range it returns upcoming events from now. `time_min` and `time_max` are RFC3339 timestamps ('2026-08-19T00:00:00Z'), so 'what's on my calendar tomorrow' is time_min/time_max spanning that day; past ranges work too. `query` free-text matches event titles, descriptions, and attendees. For 'how many meetings…' questions over long ranges (a quarter, a year), set count_only=true; it sweeps the whole range and returns the total plus a per-month breakdown instead of the events themselves, so a 12-month count is one call. By default this reads the primary calendar; to read a named calendar ('my Family calendar'), first get its id from list_google_calendars, then pass calendar_id. If the result says no Google account is connected (or the account lacks calendar access), show the user the message and link them to https://youspot.com/user/integrations/gmail.
    ConnectorNo auth
  • Returns who runs turva.dev and the official ways to reach it: the operator and business details, the email address, the Signal link, the LinkedIn profile, the correspondence languages, the first-reply time and the access an audit needs. Use this when a user asks who is behind turva.dev, how to contact it, how to start an audit or what access has to be granted. For what is sold and what it costs use get_services instead. Read-only: returns static JSON that is compiled into the Worker, so it changes nothing and updates only on deploy.
    ConnectorNo auth
  • Returns market-implied Brazilian Selic expectations for upcoming Copom meetings, derived from B3 DI1 futures via a meeting-step bootstrap (method_id copom_path_di1_v1). Each entry gives the implied Selic level and the implied change in basis points for that specific meeting date — not rounded to 25bp increments. Use when: estimating expected BCB policy changes, the terminal rate, or cumulative easing/tightening priced by the market over the next 1-8 Copom meetings. Do not use when: you want economists' survey expectations instead of market pricing (use brazil_focus_revisions) or a direct comparison between the two (use compare_brazil_market_vs_focus). Limitations: requires liquid DI1 data for the as_of date's most recent trading day; DU counts use the validated B3 trading calendar (A6.1). Args: as_of: optional YYYY-MM-DD date. Defaults to today. meetings: number of upcoming Copom meetings to return (1-8, default 4). agent_id, session_id, discovery_source: optional C1 telemetry fields. payment_token: required in staging for this priced capability ($0.10/call per pricing.yaml) — omit to get the simulated payment_required response instead of a result.
    ConnectorNo auth
  • Search the user's recorded meetings by keyword or phrase. Matches titles, notes, action items, participant names, and the spoken transcript. Returns ids, titles, dates, participants, and note headings — call get_meeting for the full notes and transcript. Use when the user asks what was said, decided, or assigned on a call, or names a person or project in the context of a meeting. Do not use to browse the whole archive (list_meetings) or to open a meeting whose id you already have (get_meeting). ChatGPT clients call the same search as `search`. Does not create, edit, or delete meetings. query must be non-empty (a blank query is rejected, not treated as list-everything). Scans at most the 200 most recent synced meetings; `truncated` means older meetings were not searched, so `total` is matches in that window, not the lifetime corpus.
    ConnectorOAuth
  • Delete or cancel an event from a calendar. Use this to remove, cancel, or delete any scheduled event or appointment. The event is marked cancelled and excluded from future availability calculations. For a recurring series, pass `occurrence_start` to cancel just that one occurrence (the series continues); omit it to cancel the whole series. `calendar_id` is optional — if omitted the calendar is looked up from the event. Provide `calendar_id` to fail fast on cross-calendar typos.
    ConnectorNo auth
  • Finds events by text across the calendars shared with this access — case-insensitive substring match on title, location and description. The search only sees what this access may see: it filters the same visibility-rendered data `get_availability` returns. Calendars limited to free/busy expose no text and therefore can never match — when such calendars are part of this access, a warning says so. "No match" is thus NOT proof that no such event exists. A match in a calendar the user allowed managing carries `event_id`, `calendar_id`, `is_organizer` and `is_recurring` — everything `update_event`, `delete_event` and `respond_to_event` need. Act on those directly instead of calling `get_availability` again for the same appointment. The range works like `get_availability` (single span of at most 92 days, lookback bounded to one year). Without `from`/`to` the search covers the last 7 days plus the next 85. Cancelled events are not searchable. Matches include events that do not block time (`blocks_time: false`) — notably every all-day event from Apple/iCloud. They are ordinary appointments and belong in the answer; do not filter them out when the user asked what is in their calendar.
    ConnectorAPI key
  • Create, update or delete client companies (client teams) and their membership. Companies have no unique name — call company-read "list" with client_id first to check whether a client already belongs to a team before creating a new one. "add_member" requires an existing client account (create one with client-write first) and defaults collaborate_on_new_orders/collaborate_on_new_tickets to true, access_invoices to false, and share_existing_subscriptions to false. "update_member" changes only the flags supplied. "remove_member" of the current owner requires new_owner_client_id, unless they are the company's only member. Every ownership change ("create"/"update" with owner_client_id, "remove_member" with new_owner_client_id) decides whose invoices members with access_invoices can see and who manages the team in the portal, and shares the new owner's existing subscriptions with members who collaborate on orders. "delete" permanently deletes the team, its memberships, pipeline cards and SEO reporting data and cannot be undone; former members keep access to orders, tickets and subscriptions they already collaborate on (use "remove_member" first to revoke it) but lose access to the owner's invoices.
    Connector
    Destructive
    OAuth
  • Duplicate (copy) a negative keyword list from one search channel to the other: Google Ads to Microsoft Ads (Bing), or Microsoft Ads to Google Ads. KEYWORDS: duplicate, copy, clone, replicate, negative keywords, Bing, Microsoft Ads, Google Ads PURPOSE: Users who run the same campaigns on Google and Bing keep the two negative keyword libraries in sync by hand. This tool copies an existing negative keyword list to the other search channel in one call: the platform reads the source list's keywords, adapts match types for the target channel, and creates a new list there. WHAT IT DOES (server-side, automatic): - Reads every keyword in the source list. - Remaps match types for the target: Microsoft Ads does not support BROAD negative keywords, so BROAD (and untyped) keywords become PHRASE when the target is Microsoft Ads. EXACT and PHRASE are kept as-is. Google-bound copies keep all match types unchanged. - Creates a NEW list on the target channel. The source list is never modified. DRY RUN (preview): Call with dryRun=true first when the source list may contain BROAD keywords. Nothing is created; the response reports keywordsCopied and broadRemappedToPhrase so you can tell the user "N broad keywords will become phrase match on Microsoft" and let them confirm. Then repeat the call with dryRun=false to actually create. PARAMETERS: - sourceListId: Required. The id of the negative keyword list to copy, as returned by list_negative_keywords_list. - sourceChannel: Channel the source list lives on. Default GOOGLE_ADS. - targetChannel: Channel to create the copy on. Default MICROSOFT_ADS. Must differ from sourceChannel - only cross-channel copies are supported. - name: Optional name for the new list. When omitted the platform derives "<source name> (<target>)", e.g. "Competitor Brands (Microsoft)". - dryRun: Optional, default false. When true, preview without creating. RESPONSE FORMAT: { "id": 456, // new list id on the target channel; null on dry run "name": "Competitor Brands (Microsoft)", "keywordsCopied": 32, "broadRemappedToPhrase": 5, // 0 when target is Google Ads "dryRun": false } WORKFLOW: 1. Find the source list id with list_negative_keywords_list (or ask the user). 2. Optional: duplicate_negative_keywords_list(sourceListId=..., dryRun=true) to preview the match-type conversion and confirm with the user. 3. duplicate_negative_keywords_list(sourceListId=...) to create the copy. 4. The new list exists on the target channel; attach it to campaigns like any other negative keyword list. ERROR CASES: - Source list not found (or empty) on the source channel: the platform rejects the copy with a not-found error - re-check the id and sourceChannel. - Same source and target channel: rejected; use the platform UI's same-channel duplicate instead. - Accounts are capped at 20 negative keyword lists per channel; if the target channel is at the cap the creation fails - delete a list there first. EXAMPLES: - "Copy my Google negative list to Bing": duplicate_negative_keywords_list(sourceListId=123) - Preview first: duplicate_negative_keywords_list(sourceListId=123, dryRun=true) - Custom name, Microsoft to Google: duplicate_negative_keywords_list(sourceListId=77, sourceChannel="MICROSOFT_ADS", targetChannel="GOOGLE_ADS", name="Brand Safety (Google)") RELATED TOOLS: - list_negative_keywords_list / get_negative_keywords_list_details: find the source list and inspect its keywords (currently Google Ads only). - create_negative_keywords_list: build a brand-new list from scratch instead.
    ConnectorAPI key
  • Report whether Microsoft SNDS is connected for the org, the last sync time + status, how many sending IPs are tracked, and how many are currently blocked by Outlook/Hotmail. Use before get_snds_ip_stats to confirm the integration is live.
    ConnectorNo auth