Skip to main content
Glama
waldur

Waldur MCP Server

Official
by waldur

create_invitation

Invite users to projects or organizations by email, assign roles, and include custom messages for collaboration setup.

Instructions

Invite users to project or organization by email

Args: scope_type: Whether to invite users to organization or project scope_name: Name of the organization or project to invite users to role: Role to assign to invited users emails: List of email addresses to invite extra_invitation_text: Custom message to include in the invitation

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
scope_typeYes
scope_nameYes
roleYes
emailsYes
extra_invitation_textNo

Implementation Reference

  • Handler function for the 'create_invitation' tool, decorated with @mcp.tool() for registration. It resolves roles, scopes (customer/project), and creates invitations using the Waldur API client.
    @mcp.tool()
    async def create_invitation(
        scope_type: Literal["customer", "project"],
        scope_name: str,
        role: str,
        emails: list[str],
        extra_invitation_text: str = "",
    ) -> list[Invitation]:
        """Invite users to project or organization by email
    
        Args:
            scope_type: Whether to invite users to organization or project
            scope_name: Name of the organization or project to invite users to
            role: Role to assign to invited users
            emails: List of email addresses to invite
            extra_invitation_text: Custom message to include in the invitation
        """
    
        matching_roles = await roles_list.asyncio(client=client, description=role)
        if not matching_roles:
            raise ValueError(f"Role '{role}' not found")
        role_uuid = matching_roles[0]["uuid"]
    
        if scope_type == "customer":
            matching_customers = await customers_list.asyncio(
                client=client, name=scope_name
            )
            if not matching_customers:
                raise ValueError(f"Customer '{scope_name}' not found")
            scope_url = matching_customers[0]["url"]
        elif scope_type == "project":
            matching_projects = await projects_list.asyncio(client=client, name=scope_name)
            if not matching_projects:
                raise ValueError(f"Project '{scope_name}' not found")
            scope_url = matching_projects[0]["url"]
    
        if not scope_url:
            raise ValueError(f"Invalid scope type: {scope_type}")
    
        results = []
        for email in emails:
            result = await user_invitations_create.asyncio(
                client=client,
                body=InvitationRequest(
                    scope=scope_url,
                    role=role_uuid,
                    email=email,
                    extra_invitation_text=extra_invitation_text,
                ),
            )
            results.append(result)
    
        return results

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/waldur/waldur-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server