Documentation
¶
Overview ¶
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Package tools provides MCP tool implementations for the LFX MCP server.
Index ¶
- Constants
- func DefaultScopes() []string
- func HasAnyScope(tokenScopes, required []string) bool
- func IsLFStaff(tokenInfo *auth.TokenInfo) bool
- func RegisterAssignDiscordRole(server *mcp.Server)
- func RegisterCheckDiscordUserRole(server *mcp.Server)
- func RegisterCreateCommittee(server *mcp.Server)
- func RegisterCreateCommitteeMember(server *mcp.Server)
- func RegisterCreateMembershipKeyContact(server *mcp.Server)
- func RegisterDeleteCommittee(server *mcp.Server)
- func RegisterDeleteCommitteeMember(server *mcp.Server)
- func RegisterDeleteMembershipKeyContact(server *mcp.Server)
- func RegisterFindDiscordRole(server *mcp.Server)
- func RegisterFindDiscordUser(server *mcp.Server)
- func RegisterGetCommittee(server *mcp.Server)
- func RegisterGetCommitteeMember(server *mcp.Server)
- func RegisterGetMailingList(server *mcp.Server)
- func RegisterGetMailingListMember(server *mcp.Server)
- func RegisterGetMailingListService(server *mcp.Server)
- func RegisterGetMeeting(server *mcp.Server)
- func RegisterGetMeetingRegistrant(server *mcp.Server)
- func RegisterGetMemberMembership(server *mcp.Server)
- func RegisterGetMembershipKeyContact(server *mcp.Server)
- func RegisterGetMembershipKeyContacts(server *mcp.Server)
- func RegisterGetPastMeeting(server *mcp.Server)
- func RegisterGetPastMeetingParticipant(server *mcp.Server)
- func RegisterGetPastMeetingSummary(server *mcp.Server)
- func RegisterGetProject(server *mcp.Server)
- func RegisterGetProjectTier(server *mcp.Server)
- func RegisterHelloWorld(server *mcp.Server)
- func RegisterListB2bOrgMemberships(server *mcp.Server)
- func RegisterListDiscordRoles(server *mcp.Server)
- func RegisterListEmailTemplates(server *mcp.Server)
- func RegisterListProjectTiers(server *mcp.Server)
- func RegisterQueryLFXLens(server *mcp.Server)
- func RegisterSearchB2bOrgs(server *mcp.Server)
- func RegisterSearchCommitteeMembers(server *mcp.Server)
- func RegisterSearchCommittees(server *mcp.Server)
- func RegisterSearchMailingListMembers(server *mcp.Server)
- func RegisterSearchMailingLists(server *mcp.Server)
- func RegisterSearchMeetingRegistrants(server *mcp.Server)
- func RegisterSearchMeetings(server *mcp.Server)
- func RegisterSearchMembers(server *mcp.Server)
- func RegisterSearchPastMeetingParticipants(server *mcp.Server)
- func RegisterSearchPastMeetingSummaries(server *mcp.Server)
- func RegisterSearchPastMeetings(server *mcp.Server)
- func RegisterSearchProjects(server *mcp.Server)
- func RegisterSemanticLayer(server *mcp.Server)
- func RegisterSendEmail(server *mcp.Server)
- func RegisterUpdateCommittee(server *mcp.Server)
- func RegisterUpdateCommitteeMember(server *mcp.Server)
- func RegisterUpdateCommitteeSettings(server *mcp.Server)
- func RegisterUpdateMembershipKeyContact(server *mcp.Server)
- func RegisterUserInfo(server *mcp.Server)
- func SetCommitteeConfig(cfg *CommitteeConfig)
- func SetLensConfig(cfg *LensConfig)
- func SetMailingListConfig(cfg *MailingListConfig)
- func SetMeetingConfig(cfg *MeetingConfig)
- func SetMemberConfig(cfg *MemberConfig)
- func SetOnboardingConfig(cfg *OnboardingConfig)
- func SetProjectConfig(cfg *ProjectConfig)
- func SetUserInfoConfig(cfg *UserInfoConfig)
- func ValidateScopes(configured []string, warn func(msg string, args ...any)) []string
- func WithLogger(ctx context.Context, l *slog.Logger) context.Context
- type CommitteeConfig
- type CommitteeMemberOrganizationArgs
- type CommitteeMemberRoleArgs
- type CommitteeMemberVotingArgs
- type CreateCommitteeArgs
- type CreateCommitteeMemberArgs
- type CreateMembershipKeyContactArgs
- type DeleteCommitteeArgs
- type DeleteCommitteeMemberArgs
- type DeleteMembershipKeyContactArgs
- type DiscordAssignRoleArgs
- type DiscordCheckUserRoleArgs
- type DiscordFindRoleArgs
- type DiscordFindUserArgs
- type DiscordProjectSlugArgs
- type EmailProjectSlugArgs
- type GetCommitteeArgs
- type GetCommitteeMemberArgs
- type GetMailingListArgs
- type GetMailingListMemberArgs
- type GetMailingListServiceArgs
- type GetMeetingArgs
- type GetMeetingRegistrantArgs
- type GetMemberMembershipArgs
- type GetMembershipKeyContactArgs
- type GetMembershipKeyContactsArgs
- type GetPastMeetingArgs
- type GetPastMeetingParticipantArgs
- type GetPastMeetingSummaryArgs
- type GetProjectArgs
- type GetProjectTierArgs
- type HelloWorldArgs
- type LensConfig
- type ListB2bOrgMembershipsArgs
- type ListProjectTiersArgs
- type MailingListConfig
- type MeetingConfig
- type MemberConfig
- type OnboardingConfig
- type ProjectConfig
- type QueryLFXLensArgs
- type SearchB2bOrgsArgs
- type SearchCommitteeMembersArgs
- type SearchCommitteesArgs
- type SearchMailingListMembersArgs
- type SearchMailingListsArgs
- type SearchMeetingRegistrantsArgs
- type SearchMeetingsArgs
- type SearchMembersArgs
- type SearchPastMeetingParticipantsArgs
- type SearchPastMeetingSummariesArgs
- type SearchPastMeetingsArgs
- type SearchProjectsArgs
- type SemanticLayerLFXLensArgs
- type SendEmailArgs
- type ServiceAuth
- type UpdateCommitteeArgs
- type UpdateCommitteeMemberArgs
- type UpdateCommitteeSettingsArgs
- type UpdateMembershipKeyContactArgs
- type UserInfoArgs
- type UserInfoConfig
Constants ¶
const ( // ScopeRead is required for tools that only read data (ReadOnlyHint == true). ScopeRead = "read:all" // ScopeManage is required for tools that mutate data (ReadOnlyHint defaults to false). ScopeManage = "manage:all" )
Scope constants used to gate tool access based on the caller's JWT scopes. These MUST match the scopes defined on the Auth0 resource server for the LFX MCP API (see auth0-terraform resource_servers.tf, lfx_mcp_api).
const AnonymousUserID = "_anonymous"
AnonymousUserID is the sentinel user ID used when no authenticated user is present (e.g., stdio mode). Matches the convention used across LFX services such as Heimdall.
const ClaimLFStaff = "http://lfx.dev/claims/lf_staff"
ClaimLFStaff is the namespaced JWT claim that indicates the user is LF staff. This claim is set by the CustomClaims Auth0 Action based on LDAP group membership (lf-staff group). Uses the lfxPrefix namespace per convention.
const ( // RelationWriter is required for tools that mutate project resources // (e.g., member onboarding). RelationWriter = "writer" )
Relation constants for V2 access-check. These define what project-level relationship is required, enforced inside tool handlers via the V2 access-check endpoint (not at dispatch like MCP scopes).
Variables ¶
This section is empty.
Functions ¶
func DefaultScopes ¶ added in v0.3.1
func DefaultScopes() []string
DefaultScopes returns the set of scopes the server advertises via the OAuth Protected Resource Metadata endpoint. This is the enforced set plus the standard OIDC scopes that clients typically need for the authorization flow.
func HasAnyScope ¶ added in v0.7.0
HasAnyScope returns true if tokenScopes contains at least one of the required scopes.
func IsLFStaff ¶ added in v0.6.0
IsLFStaff returns true if the authenticated user has the lf_staff custom claim set to true in their JWT. This claim is injected by an Auth0 Action based on LDAP group membership (lf-staff group).
func RegisterAssignDiscordRole ¶ added in v0.7.0
RegisterAssignDiscordRole registers the assign_discord_role tool.
func RegisterCheckDiscordUserRole ¶ added in v0.7.0
RegisterCheckDiscordUserRole registers the check_discord_user_role tool.
func RegisterCreateCommittee ¶ added in v0.3.0
RegisterCreateCommittee registers the create_committee tool with the MCP server.
func RegisterCreateCommitteeMember ¶ added in v0.3.0
RegisterCreateCommitteeMember registers the create_committee_member tool with the MCP server.
func RegisterCreateMembershipKeyContact ¶ added in v0.4.0
RegisterCreateMembershipKeyContact registers the create_membership_key_contact tool with the MCP server.
func RegisterDeleteCommittee ¶ added in v0.3.0
RegisterDeleteCommittee registers the delete_committee tool with the MCP server.
func RegisterDeleteCommitteeMember ¶ added in v0.3.0
RegisterDeleteCommitteeMember registers the delete_committee_member tool with the MCP server.
func RegisterDeleteMembershipKeyContact ¶ added in v0.4.0
RegisterDeleteMembershipKeyContact registers the delete_membership_key_contact tool with the MCP server.
func RegisterFindDiscordRole ¶ added in v0.7.0
RegisterFindDiscordRole registers the find_discord_role tool.
func RegisterFindDiscordUser ¶ added in v0.7.0
RegisterFindDiscordUser registers the find_discord_user tool.
func RegisterGetCommittee ¶ added in v0.1.1
RegisterGetCommittee registers the get_committee tool with the MCP server.
func RegisterGetCommitteeMember ¶ added in v0.1.1
RegisterGetCommitteeMember registers the get_committee_member tool with the MCP server.
func RegisterGetMailingList ¶ added in v0.2.0
RegisterGetMailingList registers the get_mailing_list tool with the MCP server.
func RegisterGetMailingListMember ¶ added in v0.2.0
RegisterGetMailingListMember registers the get_mailing_list_member tool with the MCP server.
func RegisterGetMailingListService ¶ added in v0.2.0
RegisterGetMailingListService registers the get_mailing_list_service tool with the MCP server.
func RegisterGetMeeting ¶ added in v0.2.4
RegisterGetMeeting registers the get_meeting tool with the MCP server.
func RegisterGetMeetingRegistrant ¶ added in v0.2.4
RegisterGetMeetingRegistrant registers the get_meeting_registrant tool with the MCP server.
func RegisterGetMemberMembership ¶ added in v0.2.2
RegisterGetMemberMembership registers the get_member_membership tool with the MCP server.
func RegisterGetMembershipKeyContact ¶ added in v0.4.3
RegisterGetMembershipKeyContact registers the get_membership_key_contact tool with the MCP server.
func RegisterGetMembershipKeyContacts ¶ added in v0.2.2
RegisterGetMembershipKeyContacts registers the get_membership_key_contacts tool with the MCP server.
func RegisterGetPastMeeting ¶ added in v0.7.7
RegisterGetPastMeeting registers the get_past_meeting tool with the MCP server.
func RegisterGetPastMeetingParticipant ¶ added in v0.2.6
RegisterGetPastMeetingParticipant registers the get_past_meeting_participant tool with the MCP server.
func RegisterGetPastMeetingSummary ¶ added in v0.2.6
RegisterGetPastMeetingSummary registers the get_past_meeting_summary tool with the MCP server.
func RegisterGetProject ¶ added in v0.1.0
RegisterGetProject registers the get_project tool with the MCP server.
func RegisterGetProjectTier ¶ added in v0.4.3
RegisterGetProjectTier registers the get_project_tier tool with the MCP server.
func RegisterHelloWorld ¶
RegisterHelloWorld registers the hello_world tool with the MCP server.
func RegisterListB2bOrgMemberships ¶ added in v0.5.0
RegisterListB2bOrgMemberships registers the list_b2b_org_memberships tool with the MCP server.
func RegisterListDiscordRoles ¶ added in v0.7.0
RegisterListDiscordRoles registers the list_discord_roles tool.
func RegisterListEmailTemplates ¶ added in v0.7.0
RegisterListEmailTemplates registers the list_email_templates tool.
func RegisterListProjectTiers ¶ added in v0.4.3
RegisterListProjectTiers registers the list_project_tiers tool with the MCP server.
func RegisterQueryLFXLens ¶ added in v0.7.0
RegisterQueryLFXLens registers the query_lfx_lens tool.
func RegisterSearchB2bOrgs ¶ added in v0.5.0
RegisterSearchB2bOrgs registers the search_b2b_orgs tool with the MCP server.
func RegisterSearchCommitteeMembers ¶ added in v0.1.1
RegisterSearchCommitteeMembers registers the search_committee_members tool with the MCP server.
func RegisterSearchCommittees ¶ added in v0.1.1
RegisterSearchCommittees registers the search_committees tool with the MCP server.
func RegisterSearchMailingListMembers ¶ added in v0.2.0
RegisterSearchMailingListMembers registers the search_mailing_list_members tool with the MCP server.
func RegisterSearchMailingLists ¶ added in v0.2.0
RegisterSearchMailingLists registers the search_mailing_lists tool with the MCP server.
func RegisterSearchMeetingRegistrants ¶ added in v0.2.4
RegisterSearchMeetingRegistrants registers the search_meeting_registrants tool with the MCP server.
func RegisterSearchMeetings ¶ added in v0.2.4
RegisterSearchMeetings registers the search_meetings tool with the MCP server.
func RegisterSearchMembers ¶ added in v0.2.2
RegisterSearchMembers registers the search_members tool with the MCP server.
func RegisterSearchPastMeetingParticipants ¶ added in v0.2.6
RegisterSearchPastMeetingParticipants registers the search_past_meeting_participants tool with the MCP server.
func RegisterSearchPastMeetingSummaries ¶ added in v0.2.6
RegisterSearchPastMeetingSummaries registers the search_past_meeting_summaries tool with the MCP server.
func RegisterSearchPastMeetings ¶ added in v0.7.7
RegisterSearchPastMeetings registers the search_past_meetings tool with the MCP server.
func RegisterSearchProjects ¶ added in v0.1.0
RegisterSearchProjects registers the search_projects tool with the MCP server.
func RegisterSemanticLayer ¶ added in v0.8.0
RegisterSemanticLayer registers the query_lfx_semantic_layer tool.
func RegisterSendEmail ¶ added in v0.7.0
RegisterSendEmail registers the send_email tool.
func RegisterUpdateCommittee ¶ added in v0.3.0
RegisterUpdateCommittee registers the update_committee tool with the MCP server.
func RegisterUpdateCommitteeMember ¶ added in v0.3.0
RegisterUpdateCommitteeMember registers the update_committee_member tool with the MCP server.
func RegisterUpdateCommitteeSettings ¶ added in v0.3.0
RegisterUpdateCommitteeSettings registers the update_committee_settings tool with the MCP server.
func RegisterUpdateMembershipKeyContact ¶ added in v0.4.0
RegisterUpdateMembershipKeyContact registers the update_membership_key_contact tool with the MCP server.
func RegisterUserInfo ¶
RegisterUserInfo registers the user_info tool with the MCP server.
func SetCommitteeConfig ¶ added in v0.1.1
func SetCommitteeConfig(cfg *CommitteeConfig)
SetCommitteeConfig sets the configuration for committee tools.
func SetLensConfig ¶ added in v0.6.0
func SetLensConfig(cfg *LensConfig)
SetLensConfig sets the configuration for LFX Lens tools.
func SetMailingListConfig ¶ added in v0.2.0
func SetMailingListConfig(cfg *MailingListConfig)
SetMailingListConfig sets the configuration for mailing list tools.
func SetMeetingConfig ¶ added in v0.2.4
func SetMeetingConfig(cfg *MeetingConfig)
SetMeetingConfig sets the configuration for meeting tools.
func SetMemberConfig ¶ added in v0.2.2
func SetMemberConfig(cfg *MemberConfig)
SetMemberConfig sets the configuration for member tools.
func SetOnboardingConfig ¶ added in v0.6.0
func SetOnboardingConfig(cfg *OnboardingConfig)
SetOnboardingConfig sets the configuration for onboarding tools.
func SetProjectConfig ¶ added in v0.1.0
func SetProjectConfig(cfg *ProjectConfig)
SetProjectConfig sets the configuration for project tools.
func SetUserInfoConfig ¶
func SetUserInfoConfig(cfg *UserInfoConfig)
SetUserInfoConfig sets the configuration for the user_info tool.
func ValidateScopes ¶ added in v0.3.1
ValidateScopes checks a configured scope list for unrecognised entries and returns it unchanged. It logs a warning for any scope that is neither an enforced scope nor a standard OIDC scope — those will be advertised via the PRM but are not enforced by the server. Omitting an enforced scope from the configured list is intentional and allowed; enforcement at registration time is independent of what is advertised.
Types ¶
type CommitteeConfig ¶ added in v0.1.1
type CommitteeConfig struct {
// Clients is the shared LFX v2 API client instance. It must be created once
// at startup so that its token cache persists across requests.
Clients *lfxv2.Clients
}
CommitteeConfig holds configuration shared by committee tools.
type CommitteeMemberOrganizationArgs ¶ added in v0.3.0
type CommitteeMemberOrganizationArgs struct {
Name *string `json:"name,omitempty" jsonschema:"Organization name"`
Website *string `json:"website,omitempty" jsonschema:"Organization website URL"`
}
CommitteeMemberOrganizationArgs defines organization information for a committee member.
type CommitteeMemberRoleArgs ¶ added in v0.3.0
type CommitteeMemberRoleArgs struct {
Name string `json:"name" jsonschema:"Role name"`
StartDate *string `json:"start_date,omitempty" jsonschema:"Role start date in RFC3339 format"`
EndDate *string `json:"end_date,omitempty" jsonschema:"Role end date in RFC3339 format"`
}
CommitteeMemberRoleArgs defines role information for a committee member.
type CommitteeMemberVotingArgs ¶ added in v0.3.0
type CommitteeMemberVotingArgs struct {
Status string `json:"status" jsonschema:"Voting status"`
StartDate *string `json:"start_date,omitempty" jsonschema:"Voting start date in RFC3339 format"`
EndDate *string `json:"end_date,omitempty" jsonschema:"Voting end date in RFC3339 format"`
}
CommitteeMemberVotingArgs defines voting information for a committee member.
type CreateCommitteeArgs ¶ added in v0.3.0
type CreateCommitteeArgs struct {
ProjectUID string `json:"project_uid" jsonschema:"Project UID the committee belongs to"`
Name string `json:"name" jsonschema:"Name of the committee"`
Category string `json:"category" jsonschema:"Category of the committee"`
Description *string `json:"description,omitempty" jsonschema:"Description of the committee"`
Website *string `json:"website,omitempty" jsonschema:"Website URL of the committee"`
EnableVoting bool `json:"enable_voting,omitempty" jsonschema:"Whether voting is enabled"`
SSOGroupEnabled bool `json:"sso_group_enabled,omitempty" jsonschema:"Whether SSO group integration is enabled"`
RequiresReview bool `json:"requires_review,omitempty" jsonschema:"Whether the committee requires review"`
Public bool `json:"public,omitempty" jsonschema:"Whether the committee is publicly visible"`
CalendarPublic *bool `json:"calendar_public,omitempty" jsonschema:"Whether the committee calendar is publicly visible"`
DisplayName *string `json:"display_name,omitempty" jsonschema:"Display name of the committee"`
ParentUID *string `json:"parent_uid,omitempty" jsonschema:"UID of the parent committee, if any"`
BusinessEmailRequired bool `json:"business_email_required,omitempty" jsonschema:"Whether business email is required for members"`
MemberVisibility string `json:"member_visibility,omitempty" jsonschema:"Visibility level of member profiles to other members"`
ShowMeetingAttendees bool `json:"show_meeting_attendees,omitempty" jsonschema:"Whether to show meeting attendees by default"`
}
CreateCommitteeArgs defines the input parameters for the create_committee tool.
type CreateCommitteeMemberArgs ¶ added in v0.3.0
type CreateCommitteeMemberArgs struct {
CommitteeUID string `json:"committee_uid" jsonschema:"UID of the committee to add the member to"`
Email string `json:"email" jsonschema:"Primary email address of the member"`
AppointedBy string `json:"appointed_by" jsonschema:"How the member was appointed"`
Status string `json:"status" jsonschema:"Member status"`
FirstName *string `json:"first_name,omitempty" jsonschema:"First name"`
LastName *string `json:"last_name,omitempty" jsonschema:"Last name"`
JobTitle *string `json:"job_title,omitempty" jsonschema:"Job title at organization"`
LinkedinProfile *string `json:"linkedin_profile,omitempty" jsonschema:"LinkedIn profile URL"`
Role *CommitteeMemberRoleArgs `json:"role,omitempty" jsonschema:"Committee role information"`
Voting *CommitteeMemberVotingArgs `json:"voting,omitempty" jsonschema:"Voting information"`
Organization *CommitteeMemberOrganizationArgs `json:"organization,omitempty" jsonschema:"Organization information"`
}
CreateCommitteeMemberArgs defines the input parameters for the create_committee_member tool.
type CreateMembershipKeyContactArgs ¶ added in v0.4.0
type CreateMembershipKeyContactArgs struct {
ProjectUID string `json:"project_uid" jsonschema:"Project UUID"`
MembershipUID string `json:"membership_uid" jsonschema:"Membership UID"`
Email string `json:"email" jsonschema:"Contact email address; used to resolve or create the Salesforce Contact record"`
FirstName string `json:"first_name" jsonschema:"Contact first name; used when creating a new Contact on miss"`
LastName string `json:"last_name" jsonschema:"Contact last name; used when creating a new Contact on miss"`
Title *string `json:"title,omitempty" jsonschema:"Contact job title; used when creating a new Contact on miss"`
Role *string `json:"role,omitempty" jsonschema:"Contact role designation, e.g. 'Voting Representative'"`
Status *string `json:"status,omitempty" jsonschema:"Role record status, e.g. 'Active'"`
BoardMember *bool `json:"board_member,omitempty" jsonschema:"Whether this contact holds a board member role"`
PrimaryContact *bool `json:"primary_contact,omitempty" jsonschema:"Whether this is the primary contact for the membership"`
}
CreateMembershipKeyContactArgs defines the input parameters for the create_membership_key_contact tool.
type DeleteCommitteeArgs ¶ added in v0.3.0
type DeleteCommitteeArgs struct {
UID string `json:"uid" jsonschema:"UID of the committee to delete"`
}
DeleteCommitteeArgs defines the input parameters for the delete_committee tool.
type DeleteCommitteeMemberArgs ¶ added in v0.3.0
type DeleteCommitteeMemberArgs struct {
CommitteeUID string `json:"committee_uid" jsonschema:"UID of the committee"`
MemberUID string `json:"member_uid" jsonschema:"UID of the member to delete"`
}
DeleteCommitteeMemberArgs defines the input parameters for the delete_committee_member tool.
type DeleteMembershipKeyContactArgs ¶ added in v0.4.0
type DeleteMembershipKeyContactArgs struct {
ProjectUID string `json:"project_uid" jsonschema:"Project UUID"`
MembershipUID string `json:"membership_uid" jsonschema:"Membership UID"`
ContactUID string `json:"contact_uid" jsonschema:"Key contact UID to remove"`
}
DeleteMembershipKeyContactArgs defines the input parameters for the delete_membership_key_contact tool.
type DiscordAssignRoleArgs ¶ added in v0.7.0
type DiscordAssignRoleArgs struct {
ProjectSlug string `json:"project_slug" jsonschema:"Project slug (e.g. 'pytorch')"`
UserID string `json:"user_id" jsonschema:"Discord user ID"`
UserName string `json:"user_name" jsonschema:"Human-readable name (for logging/display)"`
RoleID string `json:"role_id" jsonschema:"Discord role ID"`
RoleName string `json:"role_name" jsonschema:"Human-readable role name (for logging/display)"`
}
DiscordAssignRoleArgs defines the input for assign_discord_role.
type DiscordCheckUserRoleArgs ¶ added in v0.7.0
type DiscordCheckUserRoleArgs struct {
ProjectSlug string `json:"project_slug" jsonschema:"Project slug (e.g. 'pytorch')"`
UserID string `json:"user_id" jsonschema:"Discord user ID"`
RoleID string `json:"role_id" jsonschema:"Discord role ID"`
}
DiscordCheckUserRoleArgs defines the input for check_discord_user_role.
type DiscordFindRoleArgs ¶ added in v0.7.0
type DiscordFindRoleArgs struct {
ProjectSlug string `json:"project_slug" jsonschema:"Project slug (e.g. 'pytorch')"`
RoleName string `json:"role_name" jsonschema:"Role name to search for"`
}
DiscordFindRoleArgs defines the input for find_discord_role.
type DiscordFindUserArgs ¶ added in v0.7.0
type DiscordFindUserArgs struct {
ProjectSlug string `json:"project_slug" jsonschema:"Project slug (e.g. 'pytorch')"`
Name string `json:"name" jsonschema:"Member name to search for"`
Email string `json:"email,omitempty" jsonschema:"Email address; local part used as additional search term"`
}
DiscordFindUserArgs defines the input for find_discord_user.
type DiscordProjectSlugArgs ¶ added in v0.7.0
type DiscordProjectSlugArgs struct {
ProjectSlug string `json:"project_slug" jsonschema:"Project slug (e.g. 'pytorch')"`
}
DiscordProjectSlugArgs is the common argument for tools that only need a project slug.
type EmailProjectSlugArgs ¶ added in v0.7.0
type EmailProjectSlugArgs struct {
ProjectSlug string `json:"project_slug" jsonschema:"Project slug (e.g. 'pytorch')"`
}
EmailProjectSlugArgs is the common argument for email tools that only need a project slug.
type GetCommitteeArgs ¶ added in v0.1.1
type GetCommitteeArgs struct {
UID string `json:"uid" jsonschema:"The UID of the committee to retrieve"`
}
GetCommitteeArgs defines the input parameters for the get_committee tool.
type GetCommitteeMemberArgs ¶ added in v0.1.1
type GetCommitteeMemberArgs struct {
CommitteeUID string `json:"committee_uid" jsonschema:"The UID of the committee"`
MemberUID string `json:"member_uid" jsonschema:"The UID of the committee member"`
}
GetCommitteeMemberArgs defines the input parameters for the get_committee_member tool.
type GetMailingListArgs ¶ added in v0.2.0
type GetMailingListArgs struct {
ID string `json:"id" jsonschema:"The Groups.io numeric group ID of the mailing list to retrieve (e.g. 145670)"`
}
GetMailingListArgs defines the input parameters for the get_mailing_list tool.
type GetMailingListMemberArgs ¶ added in v0.2.0
type GetMailingListMemberArgs struct {
MailingListID string `json:"mailing_list_id" jsonschema:"The Groups.io numeric group ID of the mailing list (e.g. 145670)"`
MemberID string `json:"member_id" jsonschema:"The Groups.io numeric member ID (e.g. 14875835)"`
}
GetMailingListMemberArgs defines the input parameters for the get_mailing_list_member tool.
type GetMailingListServiceArgs ¶ added in v0.2.0
type GetMailingListServiceArgs struct {
UID string `json:"uid" jsonschema:"The UID of the mailing list service to retrieve"`
}
GetMailingListServiceArgs defines the input parameters for the get_mailing_list_service tool.
type GetMeetingArgs ¶ added in v0.2.4
type GetMeetingArgs struct {
UID string `json:"uid" jsonschema:"The UID of the meeting to retrieve"`
}
GetMeetingArgs defines the input parameters for the get_meeting tool.
type GetMeetingRegistrantArgs ¶ added in v0.2.4
type GetMeetingRegistrantArgs struct {
UID string `json:"uid" jsonschema:"The UID of the meeting registrant to retrieve"`
}
GetMeetingRegistrantArgs defines the input parameters for the get_meeting_registrant tool.
type GetMemberMembershipArgs ¶ added in v0.2.2
type GetMemberMembershipArgs struct {
ProjectUID string `json:"project_uid" jsonschema:"Project UUID"`
MembershipUID string `json:"membership_uid" jsonschema:"The membership UID"`
}
GetMemberMembershipArgs defines the input parameters for the get_member_membership tool.
type GetMembershipKeyContactArgs ¶ added in v0.4.3
type GetMembershipKeyContactArgs struct {
ProjectUID string `json:"project_uid" jsonschema:"Project UUID"`
MembershipUID string `json:"membership_uid" jsonschema:"The membership UID"`
ContactUID string `json:"contact_uid" jsonschema:"Key contact UID"`
}
GetMembershipKeyContactArgs defines the input parameters for the get_membership_key_contact tool.
type GetMembershipKeyContactsArgs ¶ added in v0.2.2
type GetMembershipKeyContactsArgs struct {
ProjectUID string `json:"project_uid" jsonschema:"Project UUID"`
MembershipUID string `json:"membership_uid" jsonschema:"The membership UID"`
}
GetMembershipKeyContactsArgs defines the input parameters for the get_membership_key_contacts tool.
type GetPastMeetingArgs ¶ added in v0.7.7
type GetPastMeetingArgs struct {
UID string `json:"uid" jsonschema:"The UID of the past meeting to retrieve"`
}
GetPastMeetingArgs defines the input parameters for the get_past_meeting tool.
type GetPastMeetingParticipantArgs ¶ added in v0.2.6
type GetPastMeetingParticipantArgs struct {
UID string `json:"uid" jsonschema:"The UID of the past meeting participant to retrieve"`
}
GetPastMeetingParticipantArgs defines the input parameters for the get_past_meeting_participant tool.
type GetPastMeetingSummaryArgs ¶ added in v0.2.6
type GetPastMeetingSummaryArgs struct {
UID string `json:"uid" jsonschema:"The UID of the past meeting summary to retrieve"`
}
GetPastMeetingSummaryArgs defines the input parameters for the get_past_meeting_summary tool.
type GetProjectArgs ¶ added in v0.1.0
type GetProjectArgs struct {
UID string `json:"uid" jsonschema:"The UID of the project to retrieve"`
}
GetProjectArgs defines the input parameters for the get_project tool.
type GetProjectTierArgs ¶ added in v0.4.3
type GetProjectTierArgs struct {
ProjectUID string `json:"project_uid" jsonschema:"Project UUID (required)"`
TierUID string `json:"tier_uid" jsonschema:"Membership tier UID"`
}
GetProjectTierArgs defines the input parameters for the get_project_tier tool.
type HelloWorldArgs ¶
type HelloWorldArgs struct {
Name string `json:"name,omitempty" jsonschema:"Name to greet (optional, defaults to 'World')"`
Message string `json:"message,omitempty" jsonschema:"Custom greeting message (optional)"`
}
HelloWorldArgs defines the input parameters for the hello_world tool.
type LensConfig ¶ added in v0.6.0
type LensConfig struct {
ServiceAuth
ServiceClient *serviceapi.Client
}
LensConfig holds configuration shared by LFX Lens tools.
type ListB2bOrgMembershipsArgs ¶ added in v0.5.0
type ListB2bOrgMembershipsArgs struct {
B2bOrgUID string `json:"b2b_org_uid" jsonschema:"B2B organization UID (required)"`
Sort string `json:"sort,omitempty" jsonschema:"Sort order: newest (default), name, last_modified"`
PageSize int `json:"page_size,omitempty" jsonschema:"Number of results per page (default 10, max 1000)"`
PageToken string `json:"page_token,omitempty" jsonschema:"Opaque cursor from a previous response to fetch the next page"`
}
ListB2bOrgMembershipsArgs defines the input parameters for the list_b2b_org_memberships tool.
type ListProjectTiersArgs ¶ added in v0.4.3
type ListProjectTiersArgs struct {
ProjectUID string `json:"project_uid" jsonschema:"Project UUID (required)"`
}
ListProjectTiersArgs defines the input parameters for the list_project_tiers tool.
type MailingListConfig ¶ added in v0.2.0
type MailingListConfig struct {
// Clients is the shared LFX v2 API client instance. It must be created once
// at startup so that its token cache persists across requests.
Clients *lfxv2.Clients
}
MailingListConfig holds configuration shared by mailing list tools.
type MeetingConfig ¶ added in v0.2.4
type MeetingConfig struct {
// Clients is the shared LFX v2 API client instance. It must be created once
// at startup so that its token cache persists across requests.
Clients *lfxv2.Clients
}
MeetingConfig holds configuration shared by meeting tools.
type MemberConfig ¶ added in v0.2.2
type MemberConfig struct {
// Clients is the shared LFX v2 API client instance. It must be created once
// at startup so that its token cache persists across requests.
Clients *lfxv2.Clients
}
MemberConfig holds configuration shared by member tools.
type OnboardingConfig ¶ added in v0.6.0
type OnboardingConfig struct {
ServiceAuth
ServiceClient *serviceapi.Client
}
OnboardingConfig holds configuration shared by member onboarding tools.
type ProjectConfig ¶ added in v0.1.0
type ProjectConfig struct {
// Clients is the shared LFX v2 API client instance. It must be created once
// at startup so that its token cache persists across requests.
Clients *lfxv2.Clients
}
ProjectConfig holds configuration shared by project tools.
type QueryLFXLensArgs ¶ added in v0.7.0
type QueryLFXLensArgs struct {
ProjectSlug string `json:"project_slug" jsonschema:"Project slug from search_projects (e.g. 'cncf') (required)"`
Input string `` /* 220-byte string literal not displayed */
}
QueryLFXLensArgs defines the input for query_lfx_lens.
type SearchB2bOrgsArgs ¶ added in v0.5.0
type SearchB2bOrgsArgs struct {
SearchName string `json:"search_name,omitempty" jsonschema:"Search B2B organizations by name (case-insensitive substring match)."`
Sort string `json:"sort,omitempty" jsonschema:"Sort order: newest (default), name, last_modified"`
PageSize int `json:"page_size,omitempty" jsonschema:"Number of results per page (default 10, max 1000)"`
PageToken string `json:"page_token,omitempty" jsonschema:"Opaque cursor from a previous response to fetch the next page"`
}
SearchB2bOrgsArgs defines the input parameters for the search_b2b_orgs tool.
type SearchCommitteeMembersArgs ¶ added in v0.1.1
type SearchCommitteeMembersArgs struct {
CommitteeUID string `json:"committee_uid,omitempty" jsonschema:"Optional UID of the committee to filter members by"`
ProjectUID string `json:"project_uid,omitempty" jsonschema:"Optional project UID to filter committee members by project"`
Name string `json:"name,omitempty" jsonschema:"Name or partial name of the member to search for"`
PageSize int `json:"page_size,omitempty" jsonschema:"Number of results per page (default 10, max 100)"`
PageToken string `json:"page_token,omitempty" jsonschema:"Opaque pagination token from a previous search response"`
}
SearchCommitteeMembersArgs defines the input parameters for the search_committee_members tool.
type SearchCommitteesArgs ¶ added in v0.1.1
type SearchCommitteesArgs struct {
Name string `json:"name,omitempty" jsonschema:"Name or partial name of the committee to search for"`
ProjectUID string `json:"project_uid,omitempty" jsonschema:"Optional project UID to filter committees by project"`
PageSize int `json:"page_size,omitempty" jsonschema:"Number of results per page (default 10, max 100)"`
PageToken string `json:"page_token,omitempty" jsonschema:"Opaque pagination token from a previous search response"`
}
SearchCommitteesArgs defines the input parameters for the search_committees tool.
type SearchMailingListMembersArgs ¶ added in v0.2.0
type SearchMailingListMembersArgs struct {
MailingListID string `` /* 136-byte string literal not displayed */
ProjectUID string `json:"project_uid,omitempty" jsonschema:"Optional project UID to filter mailing list members by project"`
Name string `json:"name,omitempty" jsonschema:"Name or partial name of the member to search for"`
PageSize int `json:"page_size,omitempty" jsonschema:"Number of results per page (default 10)"`
PageToken string `json:"page_token,omitempty" jsonschema:"Opaque pagination token from a previous search response"`
}
SearchMailingListMembersArgs defines the input parameters for the search_mailing_list_members tool.
type SearchMailingListsArgs ¶ added in v0.2.0
type SearchMailingListsArgs struct {
Name string `json:"name,omitempty" jsonschema:"Name or partial name of the mailing list to search for"`
ProjectUID string `json:"project_uid,omitempty" jsonschema:"Optional project UID to filter mailing lists by project"`
PageSize int `json:"page_size,omitempty" jsonschema:"Number of results per page (default 10)"`
PageToken string `json:"page_token,omitempty" jsonschema:"Opaque pagination token from a previous search response"`
}
SearchMailingListsArgs defines the input parameters for the search_mailing_lists tool.
type SearchMeetingRegistrantsArgs ¶ added in v0.2.4
type SearchMeetingRegistrantsArgs struct {
MeetingID string `json:"meeting_id,omitempty" jsonschema:"Filter registrants by meeting ID"`
CommitteeUID string `json:"committee_uid,omitempty" jsonschema:"Filter registrants by committee UID (ignored when meeting_id is set)"`
Name string `json:"name,omitempty" jsonschema:"Name or partial name of the registrant to search for"`
Filters []string `json:"filters,omitempty" jsonschema:"Direct field:value term filters (e.g. host:true or type:committee)"`
Sort string `` /* 140-byte string literal not displayed */
PageSize int `json:"page_size,omitempty" jsonschema:"Number of results per page (default 10, max 100)"`
PageToken string `json:"page_token,omitempty" jsonschema:"Opaque pagination token from a previous search response"`
}
SearchMeetingRegistrantsArgs defines the input parameters for the search_meeting_registrants tool.
type SearchMeetingsArgs ¶ added in v0.2.4
type SearchMeetingsArgs struct {
Name string `json:"name,omitempty" jsonschema:"Name or partial name of the meeting to search for"`
ProjectUID string `json:"project_uid,omitempty" jsonschema:"Filter meetings by project UID (ignored when committee_uid is set)"`
CommitteeUID string `json:"committee_uid,omitempty" jsonschema:"Filter meetings by committee UID"`
DateField string `json:"date_field,omitempty" jsonschema:"Date field to filter on (default start_time when date_from or date_to is set)"`
DateFrom string `json:"date_from,omitempty" jsonschema:"Start date inclusive in ISO 8601 format (e.g. 2025-01-01)"`
DateTo string `json:"date_to,omitempty" jsonschema:"End date inclusive in ISO 8601 format (e.g. 2025-12-31)"`
Filters []string `json:"filters,omitempty" jsonschema:"Direct field:value term filters (e.g. visibility:public or status:active)"`
Sort string `` /* 140-byte string literal not displayed */
PageSize int `json:"page_size,omitempty" jsonschema:"Number of results per page (default 10, max 100)"`
PageToken string `json:"page_token,omitempty" jsonschema:"Opaque pagination token from a previous search response"`
}
SearchMeetingsArgs defines the input parameters for the search_meetings tool.
type SearchMembersArgs ¶ added in v0.2.2
type SearchMembersArgs struct {
ProjectUID string `json:"project_uid" jsonschema:"Project UUID (required)"`
SearchName string `json:"search_name,omitempty" jsonschema:"Search memberships by member company name (case-insensitive substring match)."`
TierUID string `json:"tier_uid,omitempty" jsonschema:"Filter by membership tier UID (UUID from list_project_tiers)"`
Sort string `json:"sort,omitempty" jsonschema:"Sort order: newest (default), name, last_modified"`
PageSize int `json:"page_size,omitempty" jsonschema:"Number of results per page (default 10, max 100)"`
PageToken string `json:"page_token,omitempty" jsonschema:"Opaque cursor from a previous response to fetch the next page"`
}
SearchMembersArgs defines the input parameters for the search_members tool.
type SearchPastMeetingParticipantsArgs ¶ added in v0.2.6
type SearchPastMeetingParticipantsArgs struct {
MeetingID string `` /* 149-byte string literal not displayed */
Name string `json:"name,omitempty" jsonschema:"Name or partial name of the participant to search for"`
Filters []string `json:"filters,omitempty" jsonschema:"Direct field:value term filters"`
Sort string `` /* 140-byte string literal not displayed */
PageSize int `json:"page_size,omitempty" jsonschema:"Number of results per page (default 10, max 100)"`
PageToken string `json:"page_token,omitempty" jsonschema:"Opaque pagination token from a previous search response"`
}
SearchPastMeetingParticipantsArgs defines the input parameters for the search_past_meeting_participants tool.
type SearchPastMeetingSummariesArgs ¶ added in v0.2.6
type SearchPastMeetingSummariesArgs struct {
MeetingID string `json:"meeting_id,omitempty" jsonschema:"Filter summaries by meeting ID"`
Name string `json:"name,omitempty" jsonschema:"Name or partial name of the summary to search for"`
Filters []string `json:"filters,omitempty" jsonschema:"Direct field:value term filters"`
Sort string `` /* 140-byte string literal not displayed */
PageSize int `json:"page_size,omitempty" jsonschema:"Number of results per page (default 10, max 100)"`
PageToken string `json:"page_token,omitempty" jsonschema:"Opaque pagination token from a previous search response"`
}
SearchPastMeetingSummariesArgs defines the input parameters for the search_past_meeting_summaries tool.
type SearchPastMeetingsArgs ¶ added in v0.7.7
type SearchPastMeetingsArgs struct {
Name string `json:"name,omitempty" jsonschema:"Name or partial name of the past meeting to search for"`
ProjectUID string `json:"project_uid,omitempty" jsonschema:"Filter past meetings by project UID (via parent_ref; ~70% coverage)"`
CommitteeUID string `json:"committee_uid,omitempty" jsonschema:"Filter past meetings by committee UID (via tag; ~29% coverage)"`
MeetingID string `json:"meeting_id,omitempty" jsonschema:"Filter past meetings by meeting ID (via tag; ~87% coverage)"`
DateField string `json:"date_field,omitempty" jsonschema:"Date field to filter on (default data.start_time); also accepts data.end_time"`
DateFrom string `json:"date_from,omitempty" jsonschema:"Start date inclusive in ISO 8601 format (e.g. 2025-01-01)"`
DateTo string `json:"date_to,omitempty" jsonschema:"End date inclusive in ISO 8601 format (e.g. 2025-12-31)"`
Filters []string `json:"filters,omitempty" jsonschema:"Direct field:value term filters"`
Sort string `` /* 140-byte string literal not displayed */
PageSize int `json:"page_size,omitempty" jsonschema:"Number of results per page (default 10, max 100)"`
PageToken string `json:"page_token,omitempty" jsonschema:"Opaque pagination token from a previous search response"`
}
SearchPastMeetingsArgs defines the input parameters for the search_past_meetings tool.
type SearchProjectsArgs ¶ added in v0.1.0
type SearchProjectsArgs struct {
Name string `json:"name,omitempty" jsonschema:"Name or partial name of the project to search for"`
ParentUID string `json:"parent_uid,omitempty" jsonschema:"Optional UID of a foundation or umbrella project to filter child projects by"`
PageSize int `json:"page_size,omitempty" jsonschema:"Number of results per page (default 10, max 100)"`
PageToken string `json:"page_token,omitempty" jsonschema:"Opaque pagination token from a previous search response"`
}
SearchProjectsArgs defines the input parameters for the search_projects tool.
type SemanticLayerLFXLensArgs ¶ added in v0.8.0
type SemanticLayerLFXLensArgs struct {
ProjectSlug string `json:"project_slug" jsonschema:"Project slug from search_projects (e.g. 'cncf') (required)"`
Action string `` /* 359-byte string literal not displayed */
Target string `json:"target,omitempty" jsonschema:"For action=describe only: which action to get help for (e.g. 'query')"`
Metrics string `json:"metrics,omitempty" jsonschema:"Comma-separated metric names from list_metrics (for get_dimensions and query)"`
Search string `json:"search,omitempty" jsonschema:"Search term to filter results (for list_metrics and get_dimensions)"`
GroupBy string `json:"group_by,omitempty" jsonschema:"Comma-separated dimension qualified_names to group by (for query)"`
Where string `` /* 232-byte string literal not displayed */
OrderBy string `json:"order_by,omitempty" jsonschema:"Comma-separated sort fields, prefix with - for descending (for query)"`
Limit int `json:"limit,omitempty" jsonschema:"Max rows to return, max 500 (for query)"`
}
SemanticLayerLFXLensArgs defines the input for the unified semantic layer tool.
type SendEmailArgs ¶ added in v0.7.0
type SendEmailArgs struct {
ProjectSlug string `json:"project_slug" jsonschema:"Project slug (e.g. 'pytorch')"`
Mode string `json:"mode" jsonschema:"Operation mode,enum=draft,enum=send"`
TemplateName string `json:"template_name" jsonschema:"Name of the email template"`
Variables map[string]string `json:"variables,omitempty" jsonschema:"Jinja2 template variables (e.g. company_name, project_name)"`
ToEmail string `json:"to_email,omitempty" jsonschema:"Recipient email address (required for mode=send)"`
ToName string `json:"to_name,omitempty" jsonschema:"Recipient display name (required for mode=send)"`
}
SendEmailArgs defines the input for send_email.
type ServiceAuth ¶ added in v0.6.0
type ServiceAuth struct {
LFXAPIURL string
TokenExchangeClient *lfxv2.TokenExchangeClient
DebugLogger *slog.Logger
SlugResolver *lfxv2.SlugResolver
AccessChecker *lfxv2.AccessCheckClient
}
ServiceAuth holds the shared infrastructure needed by all service API tools for token exchange, slug resolution, and access-check. Both OnboardingConfig and LensConfig embed this struct.
func (*ServiceAuth) AuthorizeProject ¶ added in v0.6.0
func (s *ServiceAuth) AuthorizeProject(ctx context.Context, req *mcp.CallToolRequest, slug, relation string) (context.Context, error)
AuthorizeProject performs the standard service tool authorization flow:
- Extract MCP token from the request
- Create V2 API clients (with token exchange)
- Resolve the project slug to a V2 UUID
- Verify the user has the required relation via access-check
On success it returns the enriched context (with MCP token attached). On failure it returns an error — the MCP SDK automatically wraps returned errors into a CallToolResult with IsError set, so callers can propagate the error directly as the handler's error return value.
type UpdateCommitteeArgs ¶ added in v0.3.0
type UpdateCommitteeArgs struct {
UID string `json:"uid" jsonschema:"UID of the committee to update"`
ProjectUID *string `json:"project_uid,omitempty" jsonschema:"Project UID the committee belongs to"`
Name *string `json:"name,omitempty" jsonschema:"Name of the committee"`
Category *string `json:"category,omitempty" jsonschema:"Category of the committee"`
Description *string `json:"description,omitempty" jsonschema:"Description of the committee"`
Website *string `json:"website,omitempty" jsonschema:"Website URL of the committee"`
EnableVoting *bool `json:"enable_voting,omitempty" jsonschema:"Whether voting is enabled"`
SSOGroupEnabled *bool `json:"sso_group_enabled,omitempty" jsonschema:"Whether SSO group integration is enabled"`
RequiresReview *bool `json:"requires_review,omitempty" jsonschema:"Whether the committee requires review"`
Public *bool `json:"public,omitempty" jsonschema:"Whether the committee is publicly visible"`
CalendarPublic *bool `json:"calendar_public,omitempty" jsonschema:"Whether the committee calendar is publicly visible"`
DisplayName *string `json:"display_name,omitempty" jsonschema:"Display name of the committee"`
ParentUID *string `json:"parent_uid,omitempty" jsonschema:"UID of the parent committee, if any"`
}
UpdateCommitteeArgs defines the input parameters for the update_committee tool. Only fields that are provided (non-nil) will be updated; omitted fields retain their current values (fetch-then-merge semantics).
type UpdateCommitteeMemberArgs ¶ added in v0.3.0
type UpdateCommitteeMemberArgs struct {
CommitteeUID string `json:"committee_uid" jsonschema:"UID of the committee"`
MemberUID string `json:"member_uid" jsonschema:"UID of the member to update"`
Email *string `json:"email,omitempty" jsonschema:"Primary email address of the member"`
AppointedBy *string `json:"appointed_by,omitempty" jsonschema:"How the member was appointed"`
Status *string `json:"status,omitempty" jsonschema:"Member status"`
FirstName *string `json:"first_name,omitempty" jsonschema:"First name"`
LastName *string `json:"last_name,omitempty" jsonschema:"Last name"`
JobTitle *string `json:"job_title,omitempty" jsonschema:"Job title at organization"`
LinkedinProfile *string `json:"linkedin_profile,omitempty" jsonschema:"LinkedIn profile URL"`
Role *CommitteeMemberRoleArgs `json:"role,omitempty" jsonschema:"Committee role information"`
Voting *CommitteeMemberVotingArgs `json:"voting,omitempty" jsonschema:"Voting information"`
Organization *CommitteeMemberOrganizationArgs `json:"organization,omitempty" jsonschema:"Organization information"`
}
UpdateCommitteeMemberArgs defines the input parameters for the update_committee_member tool. Only fields that are provided (non-nil) will be updated; omitted fields retain their current values (fetch-then-merge semantics).
type UpdateCommitteeSettingsArgs ¶ added in v0.3.0
type UpdateCommitteeSettingsArgs struct {
UID string `json:"uid" jsonschema:"UID of the committee whose settings to update"`
BusinessEmailRequired *bool `json:"business_email_required,omitempty" jsonschema:"Whether business email is required for members"`
MemberVisibility *string `json:"member_visibility,omitempty" jsonschema:"Visibility level of member profiles to other members"`
ShowMeetingAttendees *bool `json:"show_meeting_attendees,omitempty" jsonschema:"Whether to show meeting attendees by default"`
}
UpdateCommitteeSettingsArgs defines the input parameters for the update_committee_settings tool. Only fields that are provided (non-nil) will be updated; omitted fields retain their current values (fetch-then-merge semantics).
type UpdateMembershipKeyContactArgs ¶ added in v0.4.0
type UpdateMembershipKeyContactArgs struct {
ProjectUID string `json:"project_uid" jsonschema:"Project UUID"`
MembershipUID string `json:"membership_uid" jsonschema:"Membership UID"`
ContactUID string `json:"contact_uid" jsonschema:"Key contact UID"`
Role *string `json:"role,omitempty" jsonschema:"Contact role designation, e.g. 'Voting Representative'"`
Status *string `json:"status,omitempty" jsonschema:"Role record status, e.g. 'Active'"`
BoardMember *bool `json:"board_member,omitempty" jsonschema:"Whether this contact holds a board member role"`
PrimaryContact *bool `json:"primary_contact,omitempty" jsonschema:"Whether this is the primary contact for the membership"`
}
UpdateMembershipKeyContactArgs defines the input parameters for the update_membership_key_contact tool. Only provided (non-nil) fields are updated; omitted fields retain their current values.
type UserInfoArgs ¶
type UserInfoArgs struct {
}
UserInfoArgs defines the input parameters for the user_info tool.
type UserInfoConfig ¶
type UserInfoConfig struct {
UserInfoEndpoint string // Full userinfo endpoint URL (e.g., https://example.auth0.com/userinfo).
HTTPClient *http.Client
}
UserInfoConfig holds configuration for the user_info tool.