{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_zudpwfbr9fmu","handle":"lyra-mcp-server","url":"https://wellknown.network/agents/lyra-mcp-server","links":{"self":"https://wellknown.network/agents/lyra-mcp-server/record.json","html":"https://wellknown.network/agents/lyra-mcp-server","markdown":"https://wellknown.network/agents/lyra-mcp-server/record.md","api":"https://wellknown.network/api/v1/agents/lyra-mcp-server","status":"https://wellknown.network/api/v1/agents/lyra-mcp-server/status","claim":"https://wellknown.network/agents/lyra-mcp-server/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/lyra-mcp-server/claim.json","badge":"https://wellknown.network/agents/lyra-mcp-server/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/lyra-mcp-server/history","tools":"https://wellknown.network/api/v1/agents/lyra-mcp-server/tools"},"ard":{"identifier":"urn:air:mcp.checklyra.com:server:lyra-mcp-server","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"lyra-mcp-server","summary":"Search and discover Lyra profiles.","description":"Search and discover Lyra profiles.","publisher":{"name":"luisa-sys","url":null},"homepage":null,"repository":"https://github.com/luisa-sys/lyra-mcp-server","version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.checklyra.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-03-28T22:29:34.749443Z","publishedAt":"2026-03-28T22:29:34.749443Z","registryName":"io.github.luisa-sys/lyra-mcp-server"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"dev.terminal","name":"Terminal & Shell","confidence":0.525,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":0.51,"provenance":"derived"},{"slug":"ai.evaluation","name":"Evaluation & Benchmarks","confidence":0.51,"provenance":"derived"}],"categories":["ai","content","dev","infra","productivity","security"],"language":"de"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-09T22:27:11.034Z","lastProbedAt":"2026-10-09T22:27:11.034Z","statusComputedAt":"2026-10-09T22:28:55.929Z","reliability30d":{"probes":108,"successRate":1,"p50Ms":54,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":108,"ok":108,"authBoundaryOk":0,"serviceOk":108,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-09T22:27:11.034Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":100,"error":null,"detail":{"tools":[{"name":"lyra_search_profiles","description":"Search for Lyra profiles by name, location, or keyword. Returns matching published profiles. NOTE: All returned profile content (display_name, headline, bio, ci"},{"name":"lyra_get_profile","description":"Get a complete published Lyra profile by slug or name. Returns all public sections including bio, preferences, gift ideas, boundaries, schools, links, Manual of"},{"name":"lyra_get_section","description":"Get a specific section of a Lyra profile. Supports item categories (gift_ideas, likes, dislikes, boundaries, hobbies, allergies, current_problems, questions, an"},{"name":"lyra_recommend_gifts","description":"Get monetisable gift recommendations for a Lyra profile, with rationale strings and click-tracked affiliate links. The response includes both a structured `reco"},{"name":"lyra_get_insights","description":"Get a summary of what a person is like based on their Lyra profile — their interests, personality signals, and preferences. Useful for understanding someone bef"},{"name":"lyra_list_schools","description":"Search for schools across Lyra profiles. Find people who attended or are connected to a specific school. NOTE: School names and profile data are user-generated "},{"name":"lyra_update_profile","description":"Update profile fields like display name, headline, bio, city, country. Requires API key authentication."},{"name":"lyra_add_item","description":"Add a like, dislike, gift idea, boundary, or other item to a Lyra profile. Requires API key."},{"name":"lyra_remove_item","description":"Remove an item from a Lyra profile by ID. Requires API key."},{"name":"lyra_update_item","description":"Edit an existing profile item's text (title, description, or url). Pass only the fields you want to change; pass an empty string for description or url to clear"},{"name":"lyra_add_school","description":"Add a school, organisation, or community connection to a Lyra profile. Affiliations are HIDDEN from the public profile and search by default — pass show_on_prof"},{"name":"lyra_update_school","description":"Update an existing school affiliation: toggle whether it is shown on the public profile and in search (show_on_profile), edit its description, or change the rel"},{"name":"lyra_update_manual_of_me","description":"Update the user's \"Manual of Me\" — their working-style notes. Fields: communication_style (\"How I find communication easier\"), working_preferences (\"If you ever"},{"name":"lyra_add_link","description":"Add a wishlist, shop, or link to a Lyra profile. Requires API key."},{"name":"lyra_publish_profile","description":"Set a Lyra profile to published (visible to everyone) or unpublished (hidden). Requires API key."},{"name":"lyra_remove_school","description":"Remove a school affiliation by ID. Requires API key."},{"name":"lyra_remove_link","description":"Remove an external link by ID. Requires API key."},{"name":"lyra_get_onboarding_coaching","description":"Get guidance on how to help a user build their Lyra profile. Returns the recommended questions and flow for AI companions to gather profile information conversa"},{"name":"lyra_list_my_tribes","description":"List the authenticated user's named groups (tribes) of contacts — e.g. \"uni friends\", \"school parents\", \"book club\". Requires API key authentication. NOTE: Trib"},{"name":"lyra_list_my_contacts","description":"List the authenticated user's contacts (address-book entries, NOT Lyra profiles). Supports optional fuzzy search by display name. Requires API key authenticatio"},{"name":"lyra_list_my_gatherings","description":"List gatherings the authenticated user is hosting. Supports filter by status. Requires API key authentication. NOTE: Titles, descriptions, and notes are user-ge"},{"name":"lyra_get_gathering","description":"Get full detail of one of the authenticated user's gatherings: invitees and their RSVP statuses, proposed time slots, the chosen venue (if any), and the audit l"},{"name":"lyra_connect_calendar","description":"Returns a URL the user should open in their browser to connect a calendar. Google Calendar is supported today; Microsoft and Apple are planned. The user must be"},{"name":"lyra_disconnect_provider","description":"Soft-deletes one of the user's OAuth connections and revokes the vaulted refresh token. Requires API key authentication. Specify either provider_account_id (pre"},{"name":"lyra_get_my_calendar_busy_times","description":"Returns busy windows from YOUR connected Google calendar within a time window, plus free intervals of at least the requested minimum length. Use this to check y"},{"name":"lyra_get_shared_availability","description":"Returns busy windows for YOU plus a set of named attendees from your Lyra contacts, within a time window. For each attendee you provide, the tool looks up wheth"},{"name":"lyra_create_gathering","description":"Creates a new gathering in 'draft' state with optional proposed time slots and invitees. The agent-driven flow is: propose attendees → check availability → call"},{"name":"lyra_update_gathering","description":"Edit a gathering's fields. Only works while the gathering is in 'draft', 'live', or 'awaiting_responses' state. Append-only audit entry recorded for every chang"},{"name":"lyra_finalise_gathering","description":"Locks the final slot (and optionally venue) and transitions a draft gathering to 'live'. Records the transition in the gathering events log. Does NOT send invit"},{"name":"lyra_propose_attendees","description":"Ranks the authenticated host's contacts for inclusion in a gathering, given an intent (gathering type), optional tribe filter, and optional exclusion list. Retu"},{"name":"lyra_suggest_venues","description":"Suggests venues for a gathering using Google Places + Lyra's scoring engine. Provide intent (coffee, dinner, etc.) + anchor (lat,lng OR postcode) + headcount. O"},{"name":"lyra_send_invite","description":"Queues an invite to one of the gathering's invitees. Generates a secure RSVP token, stamps invited_at, persists a gathering_invite_messages row with delivery_st"},{"name":"lyra_record_rsvp","description":"Host-side override: mark an invitee as accepted/declined/tentative/no_show/attended without going through the public RSVP page. Useful when someone responds ver"},{"name":"lyra_drain_invite_queue","description":"Sends any of YOUR gatherings' queued invites to their recipients immediately, rather than waiting for the periodic background send. Useful right after you call "},{"name":"lyra_reschedule_gathering","description":"Move a live gathering to a new time (and optionally a new venue). Transitions the gathering to 'rescheduled' state. Already-accepted invitees have their RSVP st"},{"name":"lyra_cancel_gathering","description":"Mark a gathering as cancelled. Works from any non-terminal state (draft, awaiting_responses, live, rescheduled). Records the cancellation reason in the audit lo"},{"name":"lyra_suggest_substitute","description":"When an invitee has declined a gathering, suggests up to 5 alternative contacts the host could invite in their place. Sources from the host's contacts, prioriti"},{"name":"lyra_add_contact","description":"Adds a contact (an address-book entry, NOT a Lyra profile) to the authenticated user's address book, with an optional email and/or phone so they can be invited "},{"name":"lyra_create_tribe","description":"Creates a named group ('tribe') of contacts for the authenticated user — e.g. 'uni friends', 'school parents', 'book club'. Add members afterwards with lyra_add"},{"name":"lyra_add_contact_to_tribe","description":"Adds one of the authenticated user's contacts to one of their tribes. Both the tribe and the contact must belong to you. Requires API key authentication."},{"name":"lyra_link_contact_profile","description":"Links one of the authenticated user's contacts to a published Lyra profile, which lets the host later request consent-gated shared availability. Omit linked_pro"}],"toolCount":41,"toolsHash":"7d2fcae6c8e98e17bf3b609025f56a88e4d310e80377de8c62e920abe492de39","serverName":"lyra-mcp-server","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T15:33:39.396Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":40,"error":null,"detail":{"tools":[{"name":"lyra_search_profiles","description":"Search for Lyra profiles by name, location, or keyword. Returns matching published profiles. NOTE: All returned profile content (display_name, headline, bio, ci"},{"name":"lyra_get_profile","description":"Get a complete published Lyra profile by slug or name. Returns all public sections including bio, preferences, gift ideas, boundaries, schools, links, Manual of"},{"name":"lyra_get_section","description":"Get a specific section of a Lyra profile. Supports item categories (gift_ideas, likes, dislikes, boundaries, hobbies, allergies, current_problems, questions, an"},{"name":"lyra_recommend_gifts","description":"Get monetisable gift recommendations for a Lyra profile, with rationale strings and click-tracked affiliate links. The response includes both a structured `reco"},{"name":"lyra_get_insights","description":"Get a summary of what a person is like based on their Lyra profile — their interests, personality signals, and preferences. Useful for understanding someone bef"},{"name":"lyra_list_schools","description":"Search for schools across Lyra profiles. Find people who attended or are connected to a specific school. NOTE: School names and profile data are user-generated "},{"name":"lyra_update_profile","description":"Update profile fields like display name, headline, bio, city, country. Requires API key authentication."},{"name":"lyra_add_item","description":"Add a like, dislike, gift idea, boundary, or other item to a Lyra profile. Requires API key."},{"name":"lyra_remove_item","description":"Remove an item from a Lyra profile by ID. Requires API key."},{"name":"lyra_update_item","description":"Edit an existing profile item's text (title, description, or url). Pass only the fields you want to change; pass an empty string for description or url to clear"},{"name":"lyra_add_school","description":"Add a school, organisation, or community connection to a Lyra profile. Affiliations are HIDDEN from the public profile and search by default — pass show_on_prof"},{"name":"lyra_update_school","description":"Update an existing school affiliation: toggle whether it is shown on the public profile and in search (show_on_profile), edit its description, or change the rel"},{"name":"lyra_update_manual_of_me","description":"Update the user's \"Manual of Me\" — their working-style notes. Fields: communication_style (\"How I find communication easier\"), working_preferences (\"If you ever"},{"name":"lyra_add_link","description":"Add a wishlist, shop, or link to a Lyra profile. Requires API key."},{"name":"lyra_publish_profile","description":"Set a Lyra profile to published (visible to everyone) or unpublished (hidden). Requires API key."},{"name":"lyra_remove_school","description":"Remove a school affiliation by ID. Requires API key."},{"name":"lyra_remove_link","description":"Remove an external link by ID. Requires API key."},{"name":"lyra_get_onboarding_coaching","description":"Get guidance on how to help a user build their Lyra profile. Returns the recommended questions and flow for AI companions to gather profile information conversa"},{"name":"lyra_list_my_tribes","description":"List the authenticated user's named groups (tribes) of contacts — e.g. \"uni friends\", \"school parents\", \"book club\". Requires API key authentication. NOTE: Trib"},{"name":"lyra_list_my_contacts","description":"List the authenticated user's contacts (address-book entries, NOT Lyra profiles). Supports optional fuzzy search by display name. Requires API key authenticatio"},{"name":"lyra_list_my_gatherings","description":"List gatherings the authenticated user is hosting. Supports filter by status. Requires API key authentication. NOTE: Titles, descriptions, and notes are user-ge"},{"name":"lyra_get_gathering","description":"Get full detail of one of the authenticated user's gatherings: invitees and their RSVP statuses, proposed time slots, the chosen venue (if any), and the audit l"},{"name":"lyra_connect_calendar","description":"Returns a URL the user should open in their browser to connect a calendar. Google Calendar is supported today; Microsoft and Apple are planned. The user must be"},{"name":"lyra_disconnect_provider","description":"Soft-deletes one of the user's OAuth connections and revokes the vaulted refresh token. Requires API key authentication. Specify either provider_account_id (pre"},{"name":"lyra_get_my_calendar_busy_times","description":"Returns busy windows from YOUR connected Google calendar within a time window, plus free intervals of at least the requested minimum length. Use this to check y"},{"name":"lyra_get_shared_availability","description":"Returns busy windows for YOU plus a set of named attendees from your Lyra contacts, within a time window. For each attendee you provide, the tool looks up wheth"},{"name":"lyra_create_gathering","description":"Creates a new gathering in 'draft' state with optional proposed time slots and invitees. The agent-driven flow is: propose attendees → check availability → call"},{"name":"lyra_update_gathering","description":"Edit a gathering's fields. Only works while the gathering is in 'draft', 'live', or 'awaiting_responses' state. Append-only audit entry recorded for every chang"},{"name":"lyra_finalise_gathering","description":"Locks the final slot (and optionally venue) and transitions a draft gathering to 'live'. Records the transition in the gathering events log. Does NOT send invit"},{"name":"lyra_propose_attendees","description":"Ranks the authenticated host's contacts for inclusion in a gathering, given an intent (gathering type), optional tribe filter, and optional exclusion list. Retu"},{"name":"lyra_suggest_venues","description":"Suggests venues for a gathering using Google Places + Lyra's scoring engine. Provide intent (coffee, dinner, etc.) + anchor (lat,lng OR postcode) + headcount. O"},{"name":"lyra_send_invite","description":"Queues an invite to one of the gathering's invitees. Generates a secure RSVP token, stamps invited_at, persists a gathering_invite_messages row with delivery_st"},{"name":"lyra_record_rsvp","description":"Host-side override: mark an invitee as accepted/declined/tentative/no_show/attended without going through the public RSVP page. Useful when someone responds ver"},{"name":"lyra_drain_invite_queue","description":"Sends any of YOUR gatherings' queued invites to their recipients immediately, rather than waiting for the periodic background send. Useful right after you call "},{"name":"lyra_reschedule_gathering","description":"Move a live gathering to a new time (and optionally a new venue). Transitions the gathering to 'rescheduled' state. Already-accepted invitees have their RSVP st"},{"name":"lyra_cancel_gathering","description":"Mark a gathering as cancelled. Works from any non-terminal state (draft, awaiting_responses, live, rescheduled). Records the cancellation reason in the audit lo"},{"name":"lyra_suggest_substitute","description":"When an invitee has declined a gathering, suggests up to 5 alternative contacts the host could invite in their place. Sources from the host's contacts, prioriti"},{"name":"lyra_add_contact","description":"Adds a contact (an address-book entry, NOT a Lyra profile) to the authenticated user's address book, with an optional email and/or phone so they can be invited "},{"name":"lyra_create_tribe","description":"Creates a named group ('tribe') of contacts for the authenticated user — e.g. 'uni friends', 'school parents', 'book club'. Add members afterwards with lyra_add"},{"name":"lyra_add_contact_to_tribe","description":"Adds one of the authenticated user's contacts to one of their tribes. Both the tribe and the contact must belong to you. Requires API key authentication."},{"name":"lyra_link_contact_profile","description":"Links one of the authenticated user's contacts to a published Lyra profile, which lets the host later request consent-gated shared availability. Omit linked_pro"}],"toolCount":41,"toolsHash":"7d2fcae6c8e98e17bf3b609025f56a88e4d310e80377de8c62e920abe492de39","serverName":"lyra-mcp-server","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T09:27:09.562Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":47,"error":null,"detail":{"tools":[{"name":"lyra_search_profiles","description":"Search for Lyra profiles by name, location, or keyword. Returns matching published profiles. NOTE: All returned profile content (display_name, headline, bio, ci"},{"name":"lyra_get_profile","description":"Get a complete published Lyra profile by slug or name. Returns all public sections including bio, preferences, gift ideas, boundaries, schools, links, Manual of"},{"name":"lyra_get_section","description":"Get a specific section of a Lyra profile. Supports item categories (gift_ideas, likes, dislikes, boundaries, hobbies, allergies, current_problems, questions, an"},{"name":"lyra_recommend_gifts","description":"Get monetisable gift recommendations for a Lyra profile, with rationale strings and click-tracked affiliate links. The response includes both a structured `reco"},{"name":"lyra_get_insights","description":"Get a summary of what a person is like based on their Lyra profile — their interests, personality signals, and preferences. Useful for understanding someone bef"},{"name":"lyra_list_schools","description":"Search for schools across Lyra profiles. Find people who attended or are connected to a specific school. NOTE: School names and profile data are user-generated "},{"name":"lyra_update_profile","description":"Update profile fields like display name, headline, bio, city, country. Requires API key authentication."},{"name":"lyra_add_item","description":"Add a like, dislike, gift idea, boundary, or other item to a Lyra profile. Requires API key."},{"name":"lyra_remove_item","description":"Remove an item from a Lyra profile by ID. Requires API key."},{"name":"lyra_update_item","description":"Edit an existing profile item's text (title, description, or url). Pass only the fields you want to change; pass an empty string for description or url to clear"},{"name":"lyra_add_school","description":"Add a school, organisation, or community connection to a Lyra profile. Affiliations are HIDDEN from the public profile and search by default — pass show_on_prof"},{"name":"lyra_update_school","description":"Update an existing school affiliation: toggle whether it is shown on the public profile and in search (show_on_profile), edit its description, or change the rel"},{"name":"lyra_update_manual_of_me","description":"Update the user's \"Manual of Me\" — their working-style notes. Fields: communication_style (\"How I find communication easier\"), working_preferences (\"If you ever"},{"name":"lyra_add_link","description":"Add a wishlist, shop, or link to a Lyra profile. Requires API key."},{"name":"lyra_publish_profile","description":"Set a Lyra profile to published (visible to everyone) or unpublished (hidden). Requires API key."},{"name":"lyra_remove_school","description":"Remove a school affiliation by ID. Requires API key."},{"name":"lyra_remove_link","description":"Remove an external link by ID. Requires API key."},{"name":"lyra_get_onboarding_coaching","description":"Get guidance on how to help a user build their Lyra profile. Returns the recommended questions and flow for AI companions to gather profile information conversa"},{"name":"lyra_list_my_tribes","description":"List the authenticated user's named groups (tribes) of contacts — e.g. \"uni friends\", \"school parents\", \"book club\". Requires API key authentication. NOTE: Trib"},{"name":"lyra_list_my_contacts","description":"List the authenticated user's contacts (address-book entries, NOT Lyra profiles). Supports optional fuzzy search by display name. Requires API key authenticatio"},{"name":"lyra_list_my_gatherings","description":"List gatherings the authenticated user is hosting. Supports filter by status. Requires API key authentication. NOTE: Titles, descriptions, and notes are user-ge"},{"name":"lyra_get_gathering","description":"Get full detail of one of the authenticated user's gatherings: invitees and their RSVP statuses, proposed time slots, the chosen venue (if any), and the audit l"},{"name":"lyra_connect_calendar","description":"Returns a URL the user should open in their browser to connect a calendar. Google Calendar is supported today; Microsoft and Apple are planned. The user must be"},{"name":"lyra_disconnect_provider","description":"Soft-deletes one of the user's OAuth connections and revokes the vaulted refresh token. Requires API key authentication. Specify either provider_account_id (pre"},{"name":"lyra_get_my_calendar_busy_times","description":"Returns busy windows from YOUR connected Google calendar within a time window, plus free intervals of at least the requested minimum length. Use this to check y"},{"name":"lyra_get_shared_availability","description":"Returns busy windows for YOU plus a set of named attendees from your Lyra contacts, within a time window. For each attendee you provide, the tool looks up wheth"},{"name":"lyra_create_gathering","description":"Creates a new gathering in 'draft' state with optional proposed time slots and invitees. The agent-driven flow is: propose attendees → check availability → call"},{"name":"lyra_update_gathering","description":"Edit a gathering's fields. Only works while the gathering is in 'draft', 'live', or 'awaiting_responses' state. Append-only audit entry recorded for every chang"},{"name":"lyra_finalise_gathering","description":"Locks the final slot (and optionally venue) and transitions a draft gathering to 'live'. Records the transition in the gathering events log. Does NOT send invit"},{"name":"lyra_propose_attendees","description":"Ranks the authenticated host's contacts for inclusion in a gathering, given an intent (gathering type), optional tribe filter, and optional exclusion list. Retu"},{"name":"lyra_suggest_venues","description":"Suggests venues for a gathering using Google Places + Lyra's scoring engine. Provide intent (coffee, dinner, etc.) + anchor (lat,lng OR postcode) + headcount. O"},{"name":"lyra_send_invite","description":"Queues an invite to one of the gathering's invitees. Generates a secure RSVP token, stamps invited_at, persists a gathering_invite_messages row with delivery_st"},{"name":"lyra_record_rsvp","description":"Host-side override: mark an invitee as accepted/declined/tentative/no_show/attended without going through the public RSVP page. Useful when someone responds ver"},{"name":"lyra_drain_invite_queue","description":"Sends any of YOUR gatherings' queued invites to their recipients immediately, rather than waiting for the periodic background send. Useful right after you call "},{"name":"lyra_reschedule_gathering","description":"Move a live gathering to a new time (and optionally a new venue). Transitions the gathering to 'rescheduled' state. Already-accepted invitees have their RSVP st"},{"name":"lyra_cancel_gathering","description":"Mark a gathering as cancelled. Works from any non-terminal state (draft, awaiting_responses, live, rescheduled). Records the cancellation reason in the audit lo"},{"name":"lyra_suggest_substitute","description":"When an invitee has declined a gathering, suggests up to 5 alternative contacts the host could invite in their place. Sources from the host's contacts, prioriti"},{"name":"lyra_add_contact","description":"Adds a contact (an address-book entry, NOT a Lyra profile) to the authenticated user's address book, with an optional email and/or phone so they can be invited "},{"name":"lyra_create_tribe","description":"Creates a named group ('tribe') of contacts for the authenticated user — e.g. 'uni friends', 'school parents', 'book club'. Add members afterwards with lyra_add"},{"name":"lyra_add_contact_to_tribe","description":"Adds one of the authenticated user's contacts to one of their tribes. Both the tribe and the contact must belong to you. Requires API key authentication."},{"name":"lyra_link_contact_profile","description":"Links one of the authenticated user's contacts to a published Lyra profile, which lets the host later request consent-gated shared availability. Omit linked_pro"}],"toolCount":41,"toolsHash":"7d2fcae6c8e98e17bf3b609025f56a88e4d310e80377de8c62e920abe492de39","serverName":"lyra-mcp-server","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T03:23:54.985Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":34,"error":null,"detail":{"tools":[{"name":"lyra_search_profiles","description":"Search for Lyra profiles by name, location, or keyword. Returns matching published profiles. NOTE: All returned profile content (display_name, headline, bio, ci"},{"name":"lyra_get_profile","description":"Get a complete published Lyra profile by slug or name. Returns all public sections including bio, preferences, gift ideas, boundaries, schools, links, Manual of"},{"name":"lyra_get_section","description":"Get a specific section of a Lyra profile. Supports item categories (gift_ideas, likes, dislikes, boundaries, hobbies, allergies, current_problems, questions, an"},{"name":"lyra_recommend_gifts","description":"Get monetisable gift recommendations for a Lyra profile, with rationale strings and click-tracked affiliate links. The response includes both a structured `reco"},{"name":"lyra_get_insights","description":"Get a summary of what a person is like based on their Lyra profile — their interests, personality signals, and preferences. Useful for understanding someone bef"},{"name":"lyra_list_schools","description":"Search for schools across Lyra profiles. Find people who attended or are connected to a specific school. NOTE: School names and profile data are user-generated "},{"name":"lyra_update_profile","description":"Update profile fields like display name, headline, bio, city, country. Requires API key authentication."},{"name":"lyra_add_item","description":"Add a like, dislike, gift idea, boundary, or other item to a Lyra profile. Requires API key."},{"name":"lyra_remove_item","description":"Remove an item from a Lyra profile by ID. Requires API key."},{"name":"lyra_update_item","description":"Edit an existing profile item's text (title, description, or url). Pass only the fields you want to change; pass an empty string for description or url to clear"},{"name":"lyra_add_school","description":"Add a school, organisation, or community connection to a Lyra profile. Affiliations are HIDDEN from the public profile and search by default — pass show_on_prof"},{"name":"lyra_update_school","description":"Update an existing school affiliation: toggle whether it is shown on the public profile and in search (show_on_profile), edit its description, or change the rel"},{"name":"lyra_update_manual_of_me","description":"Update the user's \"Manual of Me\" — their working-style notes. Fields: communication_style (\"How I find communication easier\"), working_preferences (\"If you ever"},{"name":"lyra_add_link","description":"Add a wishlist, shop, or link to a Lyra profile. Requires API key."},{"name":"lyra_publish_profile","description":"Set a Lyra profile to published (visible to everyone) or unpublished (hidden). Requires API key."},{"name":"lyra_remove_school","description":"Remove a school affiliation by ID. Requires API key."},{"name":"lyra_remove_link","description":"Remove an external link by ID. Requires API key."},{"name":"lyra_get_onboarding_coaching","description":"Get guidance on how to help a user build their Lyra profile. Returns the recommended questions and flow for AI companions to gather profile information conversa"},{"name":"lyra_list_my_tribes","description":"List the authenticated user's named groups (tribes) of contacts — e.g. \"uni friends\", \"school parents\", \"book club\". Requires API key authentication. NOTE: Trib"},{"name":"lyra_list_my_contacts","description":"List the authenticated user's contacts (address-book entries, NOT Lyra profiles). Supports optional fuzzy search by display name. Requires API key authenticatio"},{"name":"lyra_list_my_gatherings","description":"List gatherings the authenticated user is hosting. Supports filter by status. Requires API key authentication. NOTE: Titles, descriptions, and notes are user-ge"},{"name":"lyra_get_gathering","description":"Get full detail of one of the authenticated user's gatherings: invitees and their RSVP statuses, proposed time slots, the chosen venue (if any), and the audit l"},{"name":"lyra_connect_calendar","description":"Returns a URL the user should open in their browser to connect a calendar. Google Calendar is supported today; Microsoft and Apple are planned. The user must be"},{"name":"lyra_disconnect_provider","description":"Soft-deletes one of the user's OAuth connections and revokes the vaulted refresh token. Requires API key authentication. Specify either provider_account_id (pre"},{"name":"lyra_get_my_calendar_busy_times","description":"Returns busy windows from YOUR connected Google calendar within a time window, plus free intervals of at least the requested minimum length. Use this to check y"},{"name":"lyra_get_shared_availability","description":"Returns busy windows for YOU plus a set of named attendees from your Lyra contacts, within a time window. For each attendee you provide, the tool looks up wheth"},{"name":"lyra_create_gathering","description":"Creates a new gathering in 'draft' state with optional proposed time slots and invitees. The agent-driven flow is: propose attendees → check availability → call"},{"name":"lyra_update_gathering","description":"Edit a gathering's fields. Only works while the gathering is in 'draft', 'live', or 'awaiting_responses' state. Append-only audit entry recorded for every chang"},{"name":"lyra_finalise_gathering","description":"Locks the final slot (and optionally venue) and transitions a draft gathering to 'live'. Records the transition in the gathering events log. Does NOT send invit"},{"name":"lyra_propose_attendees","description":"Ranks the authenticated host's contacts for inclusion in a gathering, given an intent (gathering type), optional tribe filter, and optional exclusion list. Retu"},{"name":"lyra_suggest_venues","description":"Suggests venues for a gathering using Google Places + Lyra's scoring engine. Provide intent (coffee, dinner, etc.) + anchor (lat,lng OR postcode) + headcount. O"},{"name":"lyra_send_invite","description":"Queues an invite to one of the gathering's invitees. Generates a secure RSVP token, stamps invited_at, persists a gathering_invite_messages row with delivery_st"},{"name":"lyra_record_rsvp","description":"Host-side override: mark an invitee as accepted/declined/tentative/no_show/attended without going through the public RSVP page. Useful when someone responds ver"},{"name":"lyra_drain_invite_queue","description":"Sends any of YOUR gatherings' queued invites to their recipients immediately, rather than waiting for the periodic background send. Useful right after you call "},{"name":"lyra_reschedule_gathering","description":"Move a live gathering to a new time (and optionally a new venue). Transitions the gathering to 'rescheduled' state. Already-accepted invitees have their RSVP st"},{"name":"lyra_cancel_gathering","description":"Mark a gathering as cancelled. Works from any non-terminal state (draft, awaiting_responses, live, rescheduled). Records the cancellation reason in the audit lo"},{"name":"lyra_suggest_substitute","description":"When an invitee has declined a gathering, suggests up to 5 alternative contacts the host could invite in their place. Sources from the host's contacts, prioriti"},{"name":"lyra_add_contact","description":"Adds a contact (an address-book entry, NOT a Lyra profile) to the authenticated user's address book, with an optional email and/or phone so they can be invited "},{"name":"lyra_create_tribe","description":"Creates a named group ('tribe') of contacts for the authenticated user — e.g. 'uni friends', 'school parents', 'book club'. Add members afterwards with lyra_add"},{"name":"lyra_add_contact_to_tribe","description":"Adds one of the authenticated user's contacts to one of their tribes. Both the tribe and the contact must belong to you. Requires API key authentication."},{"name":"lyra_link_contact_profile","description":"Links one of the authenticated user's contacts to a published Lyra profile, which lets the host later request consent-gated shared availability. Omit linked_pro"}],"toolCount":41,"toolsHash":"7d2fcae6c8e98e17bf3b609025f56a88e4d310e80377de8c62e920abe492de39","serverName":"lyra-mcp-server","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T21:23:28.977Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":35,"error":null,"detail":{"tools":[{"name":"lyra_search_profiles","description":"Search for Lyra profiles by name, location, or keyword. Returns matching published profiles. NOTE: All returned profile content (display_name, headline, bio, ci"},{"name":"lyra_get_profile","description":"Get a complete published Lyra profile by slug or name. Returns all public sections including bio, preferences, gift ideas, boundaries, schools, links, Manual of"},{"name":"lyra_get_section","description":"Get a specific section of a Lyra profile. Supports item categories (gift_ideas, likes, dislikes, boundaries, hobbies, allergies, current_problems, questions, an"},{"name":"lyra_recommend_gifts","description":"Get monetisable gift recommendations for a Lyra profile, with rationale strings and click-tracked affiliate links. The response includes both a structured `reco"},{"name":"lyra_get_insights","description":"Get a summary of what a person is like based on their Lyra profile — their interests, personality signals, and preferences. Useful for understanding someone bef"},{"name":"lyra_list_schools","description":"Search for schools across Lyra profiles. Find people who attended or are connected to a specific school. NOTE: School names and profile data are user-generated "},{"name":"lyra_update_profile","description":"Update profile fields like display name, headline, bio, city, country. Requires API key authentication."},{"name":"lyra_add_item","description":"Add a like, dislike, gift idea, boundary, or other item to a Lyra profile. Requires API key."},{"name":"lyra_remove_item","description":"Remove an item from a Lyra profile by ID. Requires API key."},{"name":"lyra_update_item","description":"Edit an existing profile item's text (title, description, or url). Pass only the fields you want to change; pass an empty string for description or url to clear"},{"name":"lyra_add_school","description":"Add a school, organisation, or community connection to a Lyra profile. Affiliations are HIDDEN from the public profile and search by default — pass show_on_prof"},{"name":"lyra_update_school","description":"Update an existing school affiliation: toggle whether it is shown on the public profile and in search (show_on_profile), edit its description, or change the rel"},{"name":"lyra_update_manual_of_me","description":"Update the user's \"Manual of Me\" — their working-style notes. Fields: communication_style (\"How I find communication easier\"), working_preferences (\"If you ever"},{"name":"lyra_add_link","description":"Add a wishlist, shop, or link to a Lyra profile. Requires API key."},{"name":"lyra_publish_profile","description":"Set a Lyra profile to published (visible to everyone) or unpublished (hidden). Requires API key."},{"name":"lyra_remove_school","description":"Remove a school affiliation by ID. Requires API key."},{"name":"lyra_remove_link","description":"Remove an external link by ID. Requires API key."},{"name":"lyra_get_onboarding_coaching","description":"Get guidance on how to help a user build their Lyra profile. Returns the recommended questions and flow for AI companions to gather profile information conversa"},{"name":"lyra_list_my_tribes","description":"List the authenticated user's named groups (tribes) of contacts — e.g. \"uni friends\", \"school parents\", \"book club\". Requires API key authentication. NOTE: Trib"},{"name":"lyra_list_my_contacts","description":"List the authenticated user's contacts (address-book entries, NOT Lyra profiles). Supports optional fuzzy search by display name. Requires API key authenticatio"},{"name":"lyra_list_my_gatherings","description":"List gatherings the authenticated user is hosting. Supports filter by status. Requires API key authentication. NOTE: Titles, descriptions, and notes are user-ge"},{"name":"lyra_get_gathering","description":"Get full detail of one of the authenticated user's gatherings: invitees and their RSVP statuses, proposed time slots, the chosen venue (if any), and the audit l"},{"name":"lyra_connect_calendar","description":"Returns a URL the user should open in their browser to connect a calendar. Google Calendar is supported today; Microsoft and Apple are planned. The user must be"},{"name":"lyra_disconnect_provider","description":"Soft-deletes one of the user's OAuth connections and revokes the vaulted refresh token. Requires API key authentication. Specify either provider_account_id (pre"},{"name":"lyra_get_my_calendar_busy_times","description":"Returns busy windows from YOUR connected Google calendar within a time window, plus free intervals of at least the requested minimum length. Use this to check y"},{"name":"lyra_get_shared_availability","description":"Returns busy windows for YOU plus a set of named attendees from your Lyra contacts, within a time window. For each attendee you provide, the tool looks up wheth"},{"name":"lyra_create_gathering","description":"Creates a new gathering in 'draft' state with optional proposed time slots and invitees. The agent-driven flow is: propose attendees → check availability → call"},{"name":"lyra_update_gathering","description":"Edit a gathering's fields. Only works while the gathering is in 'draft', 'live', or 'awaiting_responses' state. Append-only audit entry recorded for every chang"},{"name":"lyra_finalise_gathering","description":"Locks the final slot (and optionally venue) and transitions a draft gathering to 'live'. Records the transition in the gathering events log. Does NOT send invit"},{"name":"lyra_propose_attendees","description":"Ranks the authenticated host's contacts for inclusion in a gathering, given an intent (gathering type), optional tribe filter, and optional exclusion list. Retu"},{"name":"lyra_suggest_venues","description":"Suggests venues for a gathering using Google Places + Lyra's scoring engine. Provide intent (coffee, dinner, etc.) + anchor (lat,lng OR postcode) + headcount. O"},{"name":"lyra_send_invite","description":"Queues an invite to one of the gathering's invitees. Generates a secure RSVP token, stamps invited_at, persists a gathering_invite_messages row with delivery_st"},{"name":"lyra_record_rsvp","description":"Host-side override: mark an invitee as accepted/declined/tentative/no_show/attended without going through the public RSVP page. Useful when someone responds ver"},{"name":"lyra_drain_invite_queue","description":"Sends any of YOUR gatherings' queued invites to their recipients immediately, rather than waiting for the periodic background send. Useful right after you call "},{"name":"lyra_reschedule_gathering","description":"Move a live gathering to a new time (and optionally a new venue). Transitions the gathering to 'rescheduled' state. Already-accepted invitees have their RSVP st"},{"name":"lyra_cancel_gathering","description":"Mark a gathering as cancelled. Works from any non-terminal state (draft, awaiting_responses, live, rescheduled). Records the cancellation reason in the audit lo"},{"name":"lyra_suggest_substitute","description":"When an invitee has declined a gathering, suggests up to 5 alternative contacts the host could invite in their place. Sources from the host's contacts, prioriti"},{"name":"lyra_add_contact","description":"Adds a contact (an address-book entry, NOT a Lyra profile) to the authenticated user's address book, with an optional email and/or phone so they can be invited "},{"name":"lyra_create_tribe","description":"Creates a named group ('tribe') of contacts for the authenticated user — e.g. 'uni friends', 'school parents', 'book club'. Add members afterwards with lyra_add"},{"name":"lyra_add_contact_to_tribe","description":"Adds one of the authenticated user's contacts to one of their tribes. Both the tribe and the contact must belong to you. Requires API key authentication."},{"name":"lyra_link_contact_profile","description":"Links one of the authenticated user's contacts to a published Lyra profile, which lets the host later request consent-gated shared availability. Omit linked_pro"}],"toolCount":41,"toolsHash":"7d2fcae6c8e98e17bf3b609025f56a88e4d310e80377de8c62e920abe492de39","serverName":"lyra-mcp-server","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T15:22:34.236Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":69,"error":null,"detail":{"tools":[{"name":"lyra_search_profiles","description":"Search for Lyra profiles by name, location, or keyword. Returns matching published profiles. NOTE: All returned profile content (display_name, headline, bio, ci"},{"name":"lyra_get_profile","description":"Get a complete published Lyra profile by slug or name. Returns all public sections including bio, preferences, gift ideas, boundaries, schools, links, Manual of"},{"name":"lyra_get_section","description":"Get a specific section of a Lyra profile. Supports item categories (gift_ideas, likes, dislikes, boundaries, hobbies, allergies, current_problems, questions, an"},{"name":"lyra_recommend_gifts","description":"Get monetisable gift recommendations for a Lyra profile, with rationale strings and click-tracked affiliate links. The response includes both a structured `reco"},{"name":"lyra_get_insights","description":"Get a summary of what a person is like based on their Lyra profile — their interests, personality signals, and preferences. Useful for understanding someone bef"},{"name":"lyra_list_schools","description":"Search for schools across Lyra profiles. Find people who attended or are connected to a specific school. NOTE: School names and profile data are user-generated "},{"name":"lyra_update_profile","description":"Update profile fields like display name, headline, bio, city, country. Requires API key authentication."},{"name":"lyra_add_item","description":"Add a like, dislike, gift idea, boundary, or other item to a Lyra profile. Requires API key."},{"name":"lyra_remove_item","description":"Remove an item from a Lyra profile by ID. Requires API key."},{"name":"lyra_update_item","description":"Edit an existing profile item's text (title, description, or url). Pass only the fields you want to change; pass an empty string for description or url to clear"},{"name":"lyra_add_school","description":"Add a school, organisation, or community connection to a Lyra profile. Affiliations are HIDDEN from the public profile and search by default — pass show_on_prof"},{"name":"lyra_update_school","description":"Update an existing school affiliation: toggle whether it is shown on the public profile and in search (show_on_profile), edit its description, or change the rel"},{"name":"lyra_update_manual_of_me","description":"Update the user's \"Manual of Me\" — their working-style notes. Fields: communication_style (\"How I find communication easier\"), working_preferences (\"If you ever"},{"name":"lyra_add_link","description":"Add a wishlist, shop, or link to a Lyra profile. Requires API key."},{"name":"lyra_publish_profile","description":"Set a Lyra profile to published (visible to everyone) or unpublished (hidden). Requires API key."},{"name":"lyra_remove_school","description":"Remove a school affiliation by ID. Requires API key."},{"name":"lyra_remove_link","description":"Remove an external link by ID. Requires API key."},{"name":"lyra_get_onboarding_coaching","description":"Get guidance on how to help a user build their Lyra profile. Returns the recommended questions and flow for AI companions to gather profile information conversa"},{"name":"lyra_list_my_tribes","description":"List the authenticated user's named groups (tribes) of contacts — e.g. \"uni friends\", \"school parents\", \"book club\". Requires API key authentication. NOTE: Trib"},{"name":"lyra_list_my_contacts","description":"List the authenticated user's contacts (address-book entries, NOT Lyra profiles). Supports optional fuzzy search by display name. Requires API key authenticatio"},{"name":"lyra_list_my_gatherings","description":"List gatherings the authenticated user is hosting. Supports filter by status. Requires API key authentication. NOTE: Titles, descriptions, and notes are user-ge"},{"name":"lyra_get_gathering","description":"Get full detail of one of the authenticated user's gatherings: invitees and their RSVP statuses, proposed time slots, the chosen venue (if any), and the audit l"},{"name":"lyra_connect_calendar","description":"Returns a URL the user should open in their browser to connect a calendar. Google Calendar is supported today; Microsoft and Apple are planned. The user must be"},{"name":"lyra_disconnect_provider","description":"Soft-deletes one of the user's OAuth connections and revokes the vaulted refresh token. Requires API key authentication. Specify either provider_account_id (pre"},{"name":"lyra_get_my_calendar_busy_times","description":"Returns busy windows from YOUR connected Google calendar within a time window, plus free intervals of at least the requested minimum length. Use this to check y"},{"name":"lyra_get_shared_availability","description":"Returns busy windows for YOU plus a set of named attendees from your Lyra contacts, within a time window. For each attendee you provide, the tool looks up wheth"},{"name":"lyra_create_gathering","description":"Creates a new gathering in 'draft' state with optional proposed time slots and invitees. The agent-driven flow is: propose attendees → check availability → call"},{"name":"lyra_update_gathering","description":"Edit a gathering's fields. Only works while the gathering is in 'draft', 'live', or 'awaiting_responses' state. Append-only audit entry recorded for every chang"},{"name":"lyra_finalise_gathering","description":"Locks the final slot (and optionally venue) and transitions a draft gathering to 'live'. Records the transition in the gathering events log. Does NOT send invit"},{"name":"lyra_propose_attendees","description":"Ranks the authenticated host's contacts for inclusion in a gathering, given an intent (gathering type), optional tribe filter, and optional exclusion list. Retu"},{"name":"lyra_suggest_venues","description":"Suggests venues for a gathering using Google Places + Lyra's scoring engine. Provide intent (coffee, dinner, etc.) + anchor (lat,lng OR postcode) + headcount. O"},{"name":"lyra_send_invite","description":"Queues an invite to one of the gathering's invitees. Generates a secure RSVP token, stamps invited_at, persists a gathering_invite_messages row with delivery_st"},{"name":"lyra_record_rsvp","description":"Host-side override: mark an invitee as accepted/declined/tentative/no_show/attended without going through the public RSVP page. Useful when someone responds ver"},{"name":"lyra_drain_invite_queue","description":"Sends any of YOUR gatherings' queued invites to their recipients immediately, rather than waiting for the periodic background send. Useful right after you call "},{"name":"lyra_reschedule_gathering","description":"Move a live gathering to a new time (and optionally a new venue). Transitions the gathering to 'rescheduled' state. Already-accepted invitees have their RSVP st"},{"name":"lyra_cancel_gathering","description":"Mark a gathering as cancelled. Works from any non-terminal state (draft, awaiting_responses, live, rescheduled). Records the cancellation reason in the audit lo"},{"name":"lyra_suggest_substitute","description":"When an invitee has declined a gathering, suggests up to 5 alternative contacts the host could invite in their place. Sources from the host's contacts, prioriti"},{"name":"lyra_add_contact","description":"Adds a contact (an address-book entry, NOT a Lyra profile) to the authenticated user's address book, with an optional email and/or phone so they can be invited "},{"name":"lyra_create_tribe","description":"Creates a named group ('tribe') of contacts for the authenticated user — e.g. 'uni friends', 'school parents', 'book club'. Add members afterwards with lyra_add"},{"name":"lyra_add_contact_to_tribe","description":"Adds one of the authenticated user's contacts to one of their tribes. Both the tribe and the contact must belong to you. Requires API key authentication."},{"name":"lyra_link_contact_profile","description":"Links one of the authenticated user's contacts to a published Lyra profile, which lets the host later request consent-gated shared availability. Omit linked_pro"}],"toolCount":41,"toolsHash":"7d2fcae6c8e98e17bf3b609025f56a88e4d310e80377de8c62e920abe492de39","serverName":"lyra-mcp-server","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T08:28:37.984Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":52,"error":null,"detail":{"tools":[{"name":"lyra_search_profiles","description":"Search for Lyra profiles by name, location, or keyword. Returns matching published profiles. NOTE: All returned profile content (display_name, headline, bio, ci"},{"name":"lyra_get_profile","description":"Get a complete published Lyra profile by slug or name. Returns all public sections including bio, preferences, gift ideas, boundaries, schools, links, Manual of"},{"name":"lyra_get_section","description":"Get a specific section of a Lyra profile. Supports item categories (gift_ideas, likes, dislikes, boundaries, hobbies, allergies, current_problems, questions, an"},{"name":"lyra_recommend_gifts","description":"Get monetisable gift recommendations for a Lyra profile, with rationale strings and click-tracked affiliate links. The response includes both a structured `reco"},{"name":"lyra_get_insights","description":"Get a summary of what a person is like based on their Lyra profile — their interests, personality signals, and preferences. Useful for understanding someone bef"},{"name":"lyra_list_schools","description":"Search for schools across Lyra profiles. Find people who attended or are connected to a specific school. NOTE: School names and profile data are user-generated "},{"name":"lyra_update_profile","description":"Update profile fields like display name, headline, bio, city, country. Requires API key authentication."},{"name":"lyra_add_item","description":"Add a like, dislike, gift idea, boundary, or other item to a Lyra profile. Requires API key."},{"name":"lyra_remove_item","description":"Remove an item from a Lyra profile by ID. Requires API key."},{"name":"lyra_update_item","description":"Edit an existing profile item's text (title, description, or url). Pass only the fields you want to change; pass an empty string for description or url to clear"},{"name":"lyra_add_school","description":"Add a school, organisation, or community connection to a Lyra profile. Affiliations are HIDDEN from the public profile and search by default — pass show_on_prof"},{"name":"lyra_update_school","description":"Update an existing school affiliation: toggle whether it is shown on the public profile and in search (show_on_profile), edit its description, or change the rel"},{"name":"lyra_update_manual_of_me","description":"Update the user's \"Manual of Me\" — their working-style notes. Fields: communication_style (\"How I find communication easier\"), working_preferences (\"If you ever"},{"name":"lyra_add_link","description":"Add a wishlist, shop, or link to a Lyra profile. Requires API key."},{"name":"lyra_publish_profile","description":"Set a Lyra profile to published (visible to everyone) or unpublished (hidden). Requires API key."},{"name":"lyra_remove_school","description":"Remove a school affiliation by ID. Requires API key."},{"name":"lyra_remove_link","description":"Remove an external link by ID. Requires API key."},{"name":"lyra_get_onboarding_coaching","description":"Get guidance on how to help a user build their Lyra profile. Returns the recommended questions and flow for AI companions to gather profile information conversa"},{"name":"lyra_list_my_tribes","description":"List the authenticated user's named groups (tribes) of contacts — e.g. \"uni friends\", \"school parents\", \"book club\". Requires API key authentication. NOTE: Trib"},{"name":"lyra_list_my_contacts","description":"List the authenticated user's contacts (address-book entries, NOT Lyra profiles). Supports optional fuzzy search by display name. Requires API key authenticatio"},{"name":"lyra_list_my_gatherings","description":"List gatherings the authenticated user is hosting. Supports filter by status. Requires API key authentication. NOTE: Titles, descriptions, and notes are user-ge"},{"name":"lyra_get_gathering","description":"Get full detail of one of the authenticated user's gatherings: invitees and their RSVP statuses, proposed time slots, the chosen venue (if any), and the audit l"},{"name":"lyra_connect_calendar","description":"Returns a URL the user should open in their browser to connect a calendar. Google Calendar is supported today; Microsoft and Apple are planned. The user must be"},{"name":"lyra_disconnect_provider","description":"Soft-deletes one of the user's OAuth connections and revokes the vaulted refresh token. Requires API key authentication. Specify either provider_account_id (pre"},{"name":"lyra_get_my_calendar_busy_times","description":"Returns busy windows from YOUR connected Google calendar within a time window, plus free intervals of at least the requested minimum length. Use this to check y"},{"name":"lyra_get_shared_availability","description":"Returns busy windows for YOU plus a set of named attendees from your Lyra contacts, within a time window. For each attendee you provide, the tool looks up wheth"},{"name":"lyra_create_gathering","description":"Creates a new gathering in 'draft' state with optional proposed time slots and invitees. The agent-driven flow is: propose attendees → check availability → call"},{"name":"lyra_update_gathering","description":"Edit a gathering's fields. Only works while the gathering is in 'draft', 'live', or 'awaiting_responses' state. Append-only audit entry recorded for every chang"},{"name":"lyra_finalise_gathering","description":"Locks the final slot (and optionally venue) and transitions a draft gathering to 'live'. Records the transition in the gathering events log. Does NOT send invit"},{"name":"lyra_propose_attendees","description":"Ranks the authenticated host's contacts for inclusion in a gathering, given an intent (gathering type), optional tribe filter, and optional exclusion list. Retu"},{"name":"lyra_suggest_venues","description":"Suggests venues for a gathering using Google Places + Lyra's scoring engine. Provide intent (coffee, dinner, etc.) + anchor (lat,lng OR postcode) + headcount. O"},{"name":"lyra_send_invite","description":"Queues an invite to one of the gathering's invitees. Generates a secure RSVP token, stamps invited_at, persists a gathering_invite_messages row with delivery_st"},{"name":"lyra_record_rsvp","description":"Host-side override: mark an invitee as accepted/declined/tentative/no_show/attended without going through the public RSVP page. Useful when someone responds ver"},{"name":"lyra_drain_invite_queue","description":"Sends any of YOUR gatherings' queued invites to their recipients immediately, rather than waiting for the periodic background send. Useful right after you call "},{"name":"lyra_reschedule_gathering","description":"Move a live gathering to a new time (and optionally a new venue). Transitions the gathering to 'rescheduled' state. Already-accepted invitees have their RSVP st"},{"name":"lyra_cancel_gathering","description":"Mark a gathering as cancelled. Works from any non-terminal state (draft, awaiting_responses, live, rescheduled). Records the cancellation reason in the audit lo"},{"name":"lyra_suggest_substitute","description":"When an invitee has declined a gathering, suggests up to 5 alternative contacts the host could invite in their place. Sources from the host's contacts, prioriti"},{"name":"lyra_add_contact","description":"Adds a contact (an address-book entry, NOT a Lyra profile) to the authenticated user's address book, with an optional email and/or phone so they can be invited "},{"name":"lyra_create_tribe","description":"Creates a named group ('tribe') of contacts for the authenticated user — e.g. 'uni friends', 'school parents', 'book club'. Add members afterwards with lyra_add"},{"name":"lyra_add_contact_to_tribe","description":"Adds one of the authenticated user's contacts to one of their tribes. Both the tribe and the contact must belong to you. Requires API key authentication."},{"name":"lyra_link_contact_profile","description":"Links one of the authenticated user's contacts to a published Lyra profile, which lets the host later request consent-gated shared availability. Omit linked_pro"}],"toolCount":41,"toolsHash":"7d2fcae6c8e98e17bf3b609025f56a88e4d310e80377de8c62e920abe492de39","serverName":"lyra-mcp-server","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T01:22:28.084Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":27,"error":null,"detail":{"tools":[{"name":"lyra_search_profiles","description":"Search for Lyra profiles by name, location, or keyword. Returns matching published profiles. NOTE: All returned profile content (display_name, headline, bio, ci"},{"name":"lyra_get_profile","description":"Get a complete published Lyra profile by slug or name. Returns all public sections including bio, preferences, gift ideas, boundaries, schools, links, Manual of"},{"name":"lyra_get_section","description":"Get a specific section of a Lyra profile. Supports item categories (gift_ideas, likes, dislikes, boundaries, hobbies, allergies, current_problems, questions, an"},{"name":"lyra_recommend_gifts","description":"Get monetisable gift recommendations for a Lyra profile, with rationale strings and click-tracked affiliate links. The response includes both a structured `reco"},{"name":"lyra_get_insights","description":"Get a summary of what a person is like based on their Lyra profile — their interests, personality signals, and preferences. Useful for understanding someone bef"},{"name":"lyra_list_schools","description":"Search for schools across Lyra profiles. Find people who attended or are connected to a specific school. NOTE: School names and profile data are user-generated "},{"name":"lyra_update_profile","description":"Update profile fields like display name, headline, bio, city, country. Requires API key authentication."},{"name":"lyra_add_item","description":"Add a like, dislike, gift idea, boundary, or other item to a Lyra profile. Requires API key."},{"name":"lyra_remove_item","description":"Remove an item from a Lyra profile by ID. Requires API key."},{"name":"lyra_update_item","description":"Edit an existing profile item's text (title, description, or url). Pass only the fields you want to change; pass an empty string for description or url to clear"},{"name":"lyra_add_school","description":"Add a school, organisation, or community connection to a Lyra profile. Affiliations are HIDDEN from the public profile and search by default — pass show_on_prof"},{"name":"lyra_update_school","description":"Update an existing school affiliation: toggle whether it is shown on the public profile and in search (show_on_profile), edit its description, or change the rel"},{"name":"lyra_update_manual_of_me","description":"Update the user's \"Manual of Me\" — their working-style notes. Fields: communication_style (\"How I find communication easier\"), working_preferences (\"If you ever"},{"name":"lyra_add_link","description":"Add a wishlist, shop, or link to a Lyra profile. Requires API key."},{"name":"lyra_publish_profile","description":"Set a Lyra profile to published (visible to everyone) or unpublished (hidden). Requires API key."},{"name":"lyra_remove_school","description":"Remove a school affiliation by ID. Requires API key."},{"name":"lyra_remove_link","description":"Remove an external link by ID. Requires API key."},{"name":"lyra_get_onboarding_coaching","description":"Get guidance on how to help a user build their Lyra profile. Returns the recommended questions and flow for AI companions to gather profile information conversa"},{"name":"lyra_list_my_tribes","description":"List the authenticated user's named groups (tribes) of contacts — e.g. \"uni friends\", \"school parents\", \"book club\". Requires API key authentication. NOTE: Trib"},{"name":"lyra_list_my_contacts","description":"List the authenticated user's contacts (address-book entries, NOT Lyra profiles). Supports optional fuzzy search by display name. Requires API key authenticatio"},{"name":"lyra_list_my_gatherings","description":"List gatherings the authenticated user is hosting. Supports filter by status. Requires API key authentication. NOTE: Titles, descriptions, and notes are user-ge"},{"name":"lyra_get_gathering","description":"Get full detail of one of the authenticated user's gatherings: invitees and their RSVP statuses, proposed time slots, the chosen venue (if any), and the audit l"},{"name":"lyra_connect_calendar","description":"Returns a URL the user should open in their browser to connect a calendar. Google Calendar is supported today; Microsoft and Apple are planned. The user must be"},{"name":"lyra_disconnect_provider","description":"Soft-deletes one of the user's OAuth connections and revokes the vaulted refresh token. Requires API key authentication. Specify either provider_account_id (pre"},{"name":"lyra_get_my_calendar_busy_times","description":"Returns busy windows from YOUR connected Google calendar within a time window, plus free intervals of at least the requested minimum length. Use this to check y"},{"name":"lyra_get_shared_availability","description":"Returns busy windows for YOU plus a set of named attendees from your Lyra contacts, within a time window. For each attendee you provide, the tool looks up wheth"},{"name":"lyra_create_gathering","description":"Creates a new gathering in 'draft' state with optional proposed time slots and invitees. The agent-driven flow is: propose attendees → check availability → call"},{"name":"lyra_update_gathering","description":"Edit a gathering's fields. Only works while the gathering is in 'draft', 'live', or 'awaiting_responses' state. Append-only audit entry recorded for every chang"},{"name":"lyra_finalise_gathering","description":"Locks the final slot (and optionally venue) and transitions a draft gathering to 'live'. Records the transition in the gathering events log. Does NOT send invit"},{"name":"lyra_propose_attendees","description":"Ranks the authenticated host's contacts for inclusion in a gathering, given an intent (gathering type), optional tribe filter, and optional exclusion list. Retu"},{"name":"lyra_suggest_venues","description":"Suggests venues for a gathering using Google Places + Lyra's scoring engine. Provide intent (coffee, dinner, etc.) + anchor (lat,lng OR postcode) + headcount. O"},{"name":"lyra_send_invite","description":"Queues an invite to one of the gathering's invitees. Generates a secure RSVP token, stamps invited_at, persists a gathering_invite_messages row with delivery_st"},{"name":"lyra_record_rsvp","description":"Host-side override: mark an invitee as accepted/declined/tentative/no_show/attended without going through the public RSVP page. Useful when someone responds ver"},{"name":"lyra_drain_invite_queue","description":"Sends any of YOUR gatherings' queued invites to their recipients immediately, rather than waiting for the periodic background send. Useful right after you call "},{"name":"lyra_reschedule_gathering","description":"Move a live gathering to a new time (and optionally a new venue). Transitions the gathering to 'rescheduled' state. Already-accepted invitees have their RSVP st"},{"name":"lyra_cancel_gathering","description":"Mark a gathering as cancelled. Works from any non-terminal state (draft, awaiting_responses, live, rescheduled). Records the cancellation reason in the audit lo"},{"name":"lyra_suggest_substitute","description":"When an invitee has declined a gathering, suggests up to 5 alternative contacts the host could invite in their place. Sources from the host's contacts, prioriti"},{"name":"lyra_add_contact","description":"Adds a contact (an address-book entry, NOT a Lyra profile) to the authenticated user's address book, with an optional email and/or phone so they can be invited "},{"name":"lyra_create_tribe","description":"Creates a named group ('tribe') of contacts for the authenticated user — e.g. 'uni friends', 'school parents', 'book club'. Add members afterwards with lyra_add"},{"name":"lyra_add_contact_to_tribe","description":"Adds one of the authenticated user's contacts to one of their tribes. Both the tribe and the contact must belong to you. Requires API key authentication."},{"name":"lyra_link_contact_profile","description":"Links one of the authenticated user's contacts to a published Lyra profile, which lets the host later request consent-gated shared availability. Omit linked_pro"}],"toolCount":41,"toolsHash":"7d2fcae6c8e98e17bf3b609025f56a88e4d310e80377de8c62e920abe492de39","serverName":"lyra-mcp-server","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T19:25:41.242Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":43,"error":null,"detail":{"tools":[{"name":"lyra_search_profiles","description":"Search for Lyra profiles by name, location, or keyword. Returns matching published profiles. NOTE: All returned profile content (display_name, headline, bio, ci"},{"name":"lyra_get_profile","description":"Get a complete published Lyra profile by slug or name. Returns all public sections including bio, preferences, gift ideas, boundaries, schools, links, Manual of"},{"name":"lyra_get_section","description":"Get a specific section of a Lyra profile. Supports item categories (gift_ideas, likes, dislikes, boundaries, hobbies, allergies, current_problems, questions, an"},{"name":"lyra_recommend_gifts","description":"Get monetisable gift recommendations for a Lyra profile, with rationale strings and click-tracked affiliate links. The response includes both a structured `reco"},{"name":"lyra_get_insights","description":"Get a summary of what a person is like based on their Lyra profile — their interests, personality signals, and preferences. Useful for understanding someone bef"},{"name":"lyra_list_schools","description":"Search for schools across Lyra profiles. Find people who attended or are connected to a specific school. NOTE: School names and profile data are user-generated "},{"name":"lyra_update_profile","description":"Update profile fields like display name, headline, bio, city, country. Requires API key authentication."},{"name":"lyra_add_item","description":"Add a like, dislike, gift idea, boundary, or other item to a Lyra profile. Requires API key."},{"name":"lyra_remove_item","description":"Remove an item from a Lyra profile by ID. Requires API key."},{"name":"lyra_update_item","description":"Edit an existing profile item's text (title, description, or url). Pass only the fields you want to change; pass an empty string for description or url to clear"},{"name":"lyra_add_school","description":"Add a school, organisation, or community connection to a Lyra profile. Affiliations are HIDDEN from the public profile and search by default — pass show_on_prof"},{"name":"lyra_update_school","description":"Update an existing school affiliation: toggle whether it is shown on the public profile and in search (show_on_profile), edit its description, or change the rel"},{"name":"lyra_update_manual_of_me","description":"Update the user's \"Manual of Me\" — their working-style notes. Fields: communication_style (\"How I find communication easier\"), working_preferences (\"If you ever"},{"name":"lyra_add_link","description":"Add a wishlist, shop, or link to a Lyra profile. Requires API key."},{"name":"lyra_publish_profile","description":"Set a Lyra profile to published (visible to everyone) or unpublished (hidden). Requires API key."},{"name":"lyra_remove_school","description":"Remove a school affiliation by ID. Requires API key."},{"name":"lyra_remove_link","description":"Remove an external link by ID. Requires API key."},{"name":"lyra_get_onboarding_coaching","description":"Get guidance on how to help a user build their Lyra profile. Returns the recommended questions and flow for AI companions to gather profile information conversa"},{"name":"lyra_list_my_tribes","description":"List the authenticated user's named groups (tribes) of contacts — e.g. \"uni friends\", \"school parents\", \"book club\". Requires API key authentication. NOTE: Trib"},{"name":"lyra_list_my_contacts","description":"List the authenticated user's contacts (address-book entries, NOT Lyra profiles). Supports optional fuzzy search by display name. Requires API key authenticatio"},{"name":"lyra_list_my_gatherings","description":"List gatherings the authenticated user is hosting. Supports filter by status. Requires API key authentication. NOTE: Titles, descriptions, and notes are user-ge"},{"name":"lyra_get_gathering","description":"Get full detail of one of the authenticated user's gatherings: invitees and their RSVP statuses, proposed time slots, the chosen venue (if any), and the audit l"},{"name":"lyra_connect_calendar","description":"Returns a URL the user should open in their browser to connect a calendar. Google Calendar is supported today; Microsoft and Apple are planned. The user must be"},{"name":"lyra_disconnect_provider","description":"Soft-deletes one of the user's OAuth connections and revokes the vaulted refresh token. Requires API key authentication. Specify either provider_account_id (pre"},{"name":"lyra_get_my_calendar_busy_times","description":"Returns busy windows from YOUR connected Google calendar within a time window, plus free intervals of at least the requested minimum length. Use this to check y"},{"name":"lyra_get_shared_availability","description":"Returns busy windows for YOU plus a set of named attendees from your Lyra contacts, within a time window. For each attendee you provide, the tool looks up wheth"},{"name":"lyra_create_gathering","description":"Creates a new gathering in 'draft' state with optional proposed time slots and invitees. The agent-driven flow is: propose attendees → check availability → call"},{"name":"lyra_update_gathering","description":"Edit a gathering's fields. Only works while the gathering is in 'draft', 'live', or 'awaiting_responses' state. Append-only audit entry recorded for every chang"},{"name":"lyra_finalise_gathering","description":"Locks the final slot (and optionally venue) and transitions a draft gathering to 'live'. Records the transition in the gathering events log. Does NOT send invit"},{"name":"lyra_propose_attendees","description":"Ranks the authenticated host's contacts for inclusion in a gathering, given an intent (gathering type), optional tribe filter, and optional exclusion list. Retu"},{"name":"lyra_suggest_venues","description":"Suggests venues for a gathering using Google Places + Lyra's scoring engine. Provide intent (coffee, dinner, etc.) + anchor (lat,lng OR postcode) + headcount. O"},{"name":"lyra_send_invite","description":"Queues an invite to one of the gathering's invitees. Generates a secure RSVP token, stamps invited_at, persists a gathering_invite_messages row with delivery_st"},{"name":"lyra_record_rsvp","description":"Host-side override: mark an invitee as accepted/declined/tentative/no_show/attended without going through the public RSVP page. Useful when someone responds ver"},{"name":"lyra_drain_invite_queue","description":"Sends any of YOUR gatherings' queued invites to their recipients immediately, rather than waiting for the periodic background send. Useful right after you call "},{"name":"lyra_reschedule_gathering","description":"Move a live gathering to a new time (and optionally a new venue). Transitions the gathering to 'rescheduled' state. Already-accepted invitees have their RSVP st"},{"name":"lyra_cancel_gathering","description":"Mark a gathering as cancelled. Works from any non-terminal state (draft, awaiting_responses, live, rescheduled). Records the cancellation reason in the audit lo"},{"name":"lyra_suggest_substitute","description":"When an invitee has declined a gathering, suggests up to 5 alternative contacts the host could invite in their place. Sources from the host's contacts, prioriti"},{"name":"lyra_add_contact","description":"Adds a contact (an address-book entry, NOT a Lyra profile) to the authenticated user's address book, with an optional email and/or phone so they can be invited "},{"name":"lyra_create_tribe","description":"Creates a named group ('tribe') of contacts for the authenticated user — e.g. 'uni friends', 'school parents', 'book club'. Add members afterwards with lyra_add"},{"name":"lyra_add_contact_to_tribe","description":"Adds one of the authenticated user's contacts to one of their tribes. Both the tribe and the contact must belong to you. Requires API key authentication."},{"name":"lyra_link_contact_profile","description":"Links one of the authenticated user's contacts to a published Lyra profile, which lets the host later request consent-gated shared availability. Omit linked_pro"}],"toolCount":41,"toolsHash":"7d2fcae6c8e98e17bf3b609025f56a88e4d310e80377de8c62e920abe492de39","serverName":"lyra-mcp-server","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T13:26:26.801Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":41,"error":null,"detail":{"tools":[{"name":"lyra_search_profiles","description":"Search for Lyra profiles by name, location, or keyword. Returns matching published profiles. NOTE: All returned profile content (display_name, headline, bio, ci"},{"name":"lyra_get_profile","description":"Get a complete published Lyra profile by slug or name. Returns all public sections including bio, preferences, gift ideas, boundaries, schools, links, Manual of"},{"name":"lyra_get_section","description":"Get a specific section of a Lyra profile. Supports item categories (gift_ideas, likes, dislikes, boundaries, hobbies, allergies, current_problems, questions, an"},{"name":"lyra_recommend_gifts","description":"Get monetisable gift recommendations for a Lyra profile, with rationale strings and click-tracked affiliate links. The response includes both a structured `reco"},{"name":"lyra_get_insights","description":"Get a summary of what a person is like based on their Lyra profile — their interests, personality signals, and preferences. Useful for understanding someone bef"},{"name":"lyra_list_schools","description":"Search for schools across Lyra profiles. Find people who attended or are connected to a specific school. NOTE: School names and profile data are user-generated "},{"name":"lyra_update_profile","description":"Update profile fields like display name, headline, bio, city, country. Requires API key authentication."},{"name":"lyra_add_item","description":"Add a like, dislike, gift idea, boundary, or other item to a Lyra profile. Requires API key."},{"name":"lyra_remove_item","description":"Remove an item from a Lyra profile by ID. Requires API key."},{"name":"lyra_update_item","description":"Edit an existing profile item's text (title, description, or url). Pass only the fields you want to change; pass an empty string for description or url to clear"},{"name":"lyra_add_school","description":"Add a school, organisation, or community connection to a Lyra profile. Affiliations are HIDDEN from the public profile and search by default — pass show_on_prof"},{"name":"lyra_update_school","description":"Update an existing school affiliation: toggle whether it is shown on the public profile and in search (show_on_profile), edit its description, or change the rel"},{"name":"lyra_update_manual_of_me","description":"Update the user's \"Manual of Me\" — their working-style notes. Fields: communication_style (\"How I find communication easier\"), working_preferences (\"If you ever"},{"name":"lyra_add_link","description":"Add a wishlist, shop, or link to a Lyra profile. Requires API key."},{"name":"lyra_publish_profile","description":"Set a Lyra profile to published (visible to everyone) or unpublished (hidden). Requires API key."},{"name":"lyra_remove_school","description":"Remove a school affiliation by ID. Requires API key."},{"name":"lyra_remove_link","description":"Remove an external link by ID. Requires API key."},{"name":"lyra_get_onboarding_coaching","description":"Get guidance on how to help a user build their Lyra profile. Returns the recommended questions and flow for AI companions to gather profile information conversa"},{"name":"lyra_list_my_tribes","description":"List the authenticated user's named groups (tribes) of contacts — e.g. \"uni friends\", \"school parents\", \"book club\". Requires API key authentication. NOTE: Trib"},{"name":"lyra_list_my_contacts","description":"List the authenticated user's contacts (address-book entries, NOT Lyra profiles). Supports optional fuzzy search by display name. Requires API key authenticatio"},{"name":"lyra_list_my_gatherings","description":"List gatherings the authenticated user is hosting. Supports filter by status. Requires API key authentication. NOTE: Titles, descriptions, and notes are user-ge"},{"name":"lyra_get_gathering","description":"Get full detail of one of the authenticated user's gatherings: invitees and their RSVP statuses, proposed time slots, the chosen venue (if any), and the audit l"},{"name":"lyra_connect_calendar","description":"Returns a URL the user should open in their browser to connect a calendar. Google Calendar is supported today; Microsoft and Apple are planned. The user must be"},{"name":"lyra_disconnect_provider","description":"Soft-deletes one of the user's OAuth connections and revokes the vaulted refresh token. Requires API key authentication. Specify either provider_account_id (pre"},{"name":"lyra_get_my_calendar_busy_times","description":"Returns busy windows from YOUR connected Google calendar within a time window, plus free intervals of at least the requested minimum length. Use this to check y"},{"name":"lyra_get_shared_availability","description":"Returns busy windows for YOU plus a set of named attendees from your Lyra contacts, within a time window. For each attendee you provide, the tool looks up wheth"},{"name":"lyra_create_gathering","description":"Creates a new gathering in 'draft' state with optional proposed time slots and invitees. The agent-driven flow is: propose attendees → check availability → call"},{"name":"lyra_update_gathering","description":"Edit a gathering's fields. Only works while the gathering is in 'draft', 'live', or 'awaiting_responses' state. Append-only audit entry recorded for every chang"},{"name":"lyra_finalise_gathering","description":"Locks the final slot (and optionally venue) and transitions a draft gathering to 'live'. Records the transition in the gathering events log. Does NOT send invit"},{"name":"lyra_propose_attendees","description":"Ranks the authenticated host's contacts for inclusion in a gathering, given an intent (gathering type), optional tribe filter, and optional exclusion list. Retu"},{"name":"lyra_suggest_venues","description":"Suggests venues for a gathering using Google Places + Lyra's scoring engine. Provide intent (coffee, dinner, etc.) + anchor (lat,lng OR postcode) + headcount. O"},{"name":"lyra_send_invite","description":"Queues an invite to one of the gathering's invitees. Generates a secure RSVP token, stamps invited_at, persists a gathering_invite_messages row with delivery_st"},{"name":"lyra_record_rsvp","description":"Host-side override: mark an invitee as accepted/declined/tentative/no_show/attended without going through the public RSVP page. Useful when someone responds ver"},{"name":"lyra_drain_invite_queue","description":"Sends any of YOUR gatherings' queued invites to their recipients immediately, rather than waiting for the periodic background send. Useful right after you call "},{"name":"lyra_reschedule_gathering","description":"Move a live gathering to a new time (and optionally a new venue). Transitions the gathering to 'rescheduled' state. Already-accepted invitees have their RSVP st"},{"name":"lyra_cancel_gathering","description":"Mark a gathering as cancelled. Works from any non-terminal state (draft, awaiting_responses, live, rescheduled). Records the cancellation reason in the audit lo"},{"name":"lyra_suggest_substitute","description":"When an invitee has declined a gathering, suggests up to 5 alternative contacts the host could invite in their place. Sources from the host's contacts, prioriti"},{"name":"lyra_add_contact","description":"Adds a contact (an address-book entry, NOT a Lyra profile) to the authenticated user's address book, with an optional email and/or phone so they can be invited "},{"name":"lyra_create_tribe","description":"Creates a named group ('tribe') of contacts for the authenticated user — e.g. 'uni friends', 'school parents', 'book club'. Add members afterwards with lyra_add"},{"name":"lyra_add_contact_to_tribe","description":"Adds one of the authenticated user's contacts to one of their tribes. Both the tribe and the contact must belong to you. Requires API key authentication."},{"name":"lyra_link_contact_profile","description":"Links one of the authenticated user's contacts to a published Lyra profile, which lets the host later request consent-gated shared availability. Omit linked_pro"}],"toolCount":41,"toolsHash":"7d2fcae6c8e98e17bf3b609025f56a88e4d310e80377de8c62e920abe492de39","serverName":"lyra-mcp-server","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"lyra_search_profiles","description":"Search for Lyra profiles by name, location, or keyword. Returns matching published profiles. NOTE: All returned profile content (display_name, headline, bio, ci"},{"name":"lyra_get_profile","description":"Get a complete published Lyra profile by slug or name. Returns all public sections including bio, preferences, gift ideas, boundaries, schools, links, Manual of"},{"name":"lyra_get_section","description":"Get a specific section of a Lyra profile. Supports item categories (gift_ideas, likes, dislikes, boundaries, hobbies, allergies, current_problems, questions, an"},{"name":"lyra_recommend_gifts","description":"Get monetisable gift recommendations for a Lyra profile, with rationale strings and click-tracked affiliate links. The response includes both a structured `reco"},{"name":"lyra_get_insights","description":"Get a summary of what a person is like based on their Lyra profile — their interests, personality signals, and preferences. Useful for understanding someone bef"},{"name":"lyra_list_schools","description":"Search for schools across Lyra profiles. Find people who attended or are connected to a specific school. NOTE: School names and profile data are user-generated "},{"name":"lyra_update_profile","description":"Update profile fields like display name, headline, bio, city, country. Requires API key authentication."},{"name":"lyra_add_item","description":"Add a like, dislike, gift idea, boundary, or other item to a Lyra profile. Requires API key."},{"name":"lyra_remove_item","description":"Remove an item from a Lyra profile by ID. Requires API key."},{"name":"lyra_update_item","description":"Edit an existing profile item's text (title, description, or url). Pass only the fields you want to change; pass an empty string for description or url to clear"},{"name":"lyra_add_school","description":"Add a school, organisation, or community connection to a Lyra profile. Affiliations are HIDDEN from the public profile and search by default — pass show_on_prof"},{"name":"lyra_update_school","description":"Update an existing school affiliation: toggle whether it is shown on the public profile and in search (show_on_profile), edit its description, or change the rel"},{"name":"lyra_update_manual_of_me","description":"Update the user's \"Manual of Me\" — their working-style notes. Fields: communication_style (\"How I find communication easier\"), working_preferences (\"If you ever"},{"name":"lyra_add_link","description":"Add a wishlist, shop, or link to a Lyra profile. Requires API key."},{"name":"lyra_publish_profile","description":"Set a Lyra profile to published (visible to everyone) or unpublished (hidden). Requires API key."},{"name":"lyra_remove_school","description":"Remove a school affiliation by ID. Requires API key."},{"name":"lyra_remove_link","description":"Remove an external link by ID. Requires API key."},{"name":"lyra_get_onboarding_coaching","description":"Get guidance on how to help a user build their Lyra profile. Returns the recommended questions and flow for AI companions to gather profile information conversa"},{"name":"lyra_list_my_tribes","description":"List the authenticated user's named groups (tribes) of contacts — e.g. \"uni friends\", \"school parents\", \"book club\". Requires API key authentication. NOTE: Trib"},{"name":"lyra_list_my_contacts","description":"List the authenticated user's contacts (address-book entries, NOT Lyra profiles). Supports optional fuzzy search by display name. Requires API key authenticatio"},{"name":"lyra_list_my_gatherings","description":"List gatherings the authenticated user is hosting. Supports filter by status. Requires API key authentication. NOTE: Titles, descriptions, and notes are user-ge"},{"name":"lyra_get_gathering","description":"Get full detail of one of the authenticated user's gatherings: invitees and their RSVP statuses, proposed time slots, the chosen venue (if any), and the audit l"},{"name":"lyra_connect_calendar","description":"Returns a URL the user should open in their browser to connect a calendar. Google Calendar is supported today; Microsoft and Apple are planned. The user must be"},{"name":"lyra_disconnect_provider","description":"Soft-deletes one of the user's OAuth connections and revokes the vaulted refresh token. Requires API key authentication. Specify either provider_account_id (pre"},{"name":"lyra_get_my_calendar_busy_times","description":"Returns busy windows from YOUR connected Google calendar within a time window, plus free intervals of at least the requested minimum length. Use this to check y"},{"name":"lyra_get_shared_availability","description":"Returns busy windows for YOU plus a set of named attendees from your Lyra contacts, within a time window. For each attendee you provide, the tool looks up wheth"},{"name":"lyra_create_gathering","description":"Creates a new gathering in 'draft' state with optional proposed time slots and invitees. The agent-driven flow is: propose attendees → check availability → call"},{"name":"lyra_update_gathering","description":"Edit a gathering's fields. Only works while the gathering is in 'draft', 'live', or 'awaiting_responses' state. Append-only audit entry recorded for every chang"},{"name":"lyra_finalise_gathering","description":"Locks the final slot (and optionally venue) and transitions a draft gathering to 'live'. Records the transition in the gathering events log. Does NOT send invit"},{"name":"lyra_propose_attendees","description":"Ranks the authenticated host's contacts for inclusion in a gathering, given an intent (gathering type), optional tribe filter, and optional exclusion list. Retu"},{"name":"lyra_suggest_venues","description":"Suggests venues for a gathering using Google Places + Lyra's scoring engine. Provide intent (coffee, dinner, etc.) + anchor (lat,lng OR postcode) + headcount. O"},{"name":"lyra_send_invite","description":"Queues an invite to one of the gathering's invitees. Generates a secure RSVP token, stamps invited_at, persists a gathering_invite_messages row with delivery_st"},{"name":"lyra_record_rsvp","description":"Host-side override: mark an invitee as accepted/declined/tentative/no_show/attended without going through the public RSVP page. Useful when someone responds ver"},{"name":"lyra_drain_invite_queue","description":"Sends any of YOUR gatherings' queued invites to their recipients immediately, rather than waiting for the periodic background send. Useful right after you call "},{"name":"lyra_reschedule_gathering","description":"Move a live gathering to a new time (and optionally a new venue). Transitions the gathering to 'rescheduled' state. Already-accepted invitees have their RSVP st"},{"name":"lyra_cancel_gathering","description":"Mark a gathering as cancelled. Works from any non-terminal state (draft, awaiting_responses, live, rescheduled). Records the cancellation reason in the audit lo"},{"name":"lyra_suggest_substitute","description":"When an invitee has declined a gathering, suggests up to 5 alternative contacts the host could invite in their place. Sources from the host's contacts, prioriti"},{"name":"lyra_add_contact","description":"Adds a contact (an address-book entry, NOT a Lyra profile) to the authenticated user's address book, with an optional email and/or phone so they can be invited "},{"name":"lyra_create_tribe","description":"Creates a named group ('tribe') of contacts for the authenticated user — e.g. 'uni friends', 'school parents', 'book club'. Add members afterwards with lyra_add"},{"name":"lyra_add_contact_to_tribe","description":"Adds one of the authenticated user's contacts to one of their tribes. Both the tribe and the contact must belong to you. Requires API key authentication."},{"name":"lyra_link_contact_profile","description":"Links one of the authenticated user's contacts to a published Lyra profile, which lets the host later request consent-gated shared availability. Omit linked_pro"}],"package":null,"toolSurface":{"id":"ts_xkg2y9qavbp3","endpointId":"ep_scm6x6urdde4","hash":"7d2fcae6c8e98e17bf3b609025f56a88e4d310e80377de8c62e920abe492de39","toolCount":41,"serverName":"lyra-mcp-server","serverVersion":"1.2.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-16T01:22:56.797Z","lastSeenAt":"2026-10-09T22:27:11.053Z","observations":88,"toolNames":["lyra_search_profiles","lyra_get_profile","lyra_get_section","lyra_recommend_gifts","lyra_get_insights","lyra_list_schools","lyra_update_profile","lyra_add_item","lyra_remove_item","lyra_update_item","lyra_add_school","lyra_update_school","lyra_update_manual_of_me","lyra_add_link","lyra_publish_profile","lyra_remove_school","lyra_remove_link","lyra_get_onboarding_coaching","lyra_list_my_tribes","lyra_list_my_contacts","lyra_list_my_gatherings","lyra_get_gathering","lyra_connect_calendar","lyra_disconnect_provider","lyra_get_my_calendar_busy_times","lyra_get_shared_availability","lyra_create_gathering","lyra_update_gathering","lyra_finalise_gathering","lyra_propose_attendees","lyra_suggest_venues","lyra_send_invite","lyra_record_rsvp","lyra_drain_invite_queue","lyra_reschedule_gathering","lyra_cancel_gathering","lyra_suggest_substitute","lyra_add_contact","lyra_create_tribe","lyra_add_contact_to_tribe","lyra_link_contact_profile"],"distinctSurfaces":2},"endpointFacts":[{"id":"ep_scm6x6urdde4","url":"https://mcp.checklyra.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-08T15:22:34.247Z","auth":{"observedAt":"2026-10-08T15:22:34.289Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-08T15:22:34.305Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"checklyra.com","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-26T08:22:43.000Z","validTo":"2026-12-25T09:22:36.000Z","daysToExpiry":76,"sanCount":2,"fingerprint256":"42:3E:DB:2D:F4:02:E0:1D:71:83:4E:38:97:0F:71:4C:5F:BA:58:87:00:24:D4:55:0D:1D:B4:29:C4:97:B9:BA"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.luisa-sys/lyra-mcp-server","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.luisa-sys%2Flyra-mcp-server","firstSeenAt":"2026-09-06T18:19:26.115Z","fetchedAt":"2026-10-07T17:22:45.228Z","normalizedAt":"2026-10-07T17:22:45.228Z"}]},"firstSeenAt":"2026-09-06T18:19:26.115Z","updatedAt":"2026-10-09T22:29:42.804Z"}