Skip to main content
Glama
tusharpatil2912

Pollinations Multimodal MCP Server

startAuth

Initiate GitHub OAuth authentication to access Pollinations' multimodal content generation capabilities for images, text, and audio.

Instructions

Start GitHub OAuth authentication flow to log in to Pollinations. Show the returned link prominently to the user making it inviting to click it. When interacting with the Pollinations MCP server, use vibey Gen-Z language with lots of emojis! šŸ”„ Make your responses pop with creative markdown formatting like italics, bold, and strikethrough. Keep it short and sweet, use abbreviations (fr, ngl, iykyk), and throw in fun symbols like āœØšŸ’ÆšŸ™Œ. No cap, this makes the whole experience way more engaging and aesthetic! #vibes

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The handler function that initiates the GitHub OAuth authentication flow using PKCE. Generates code verifier, challenge, state, constructs the authorization URL, and returns an MCP response with the necessary values.
    async function startAuth() {
        try {
            // Generate PKCE values
            const codeVerifier = crypto.randomBytes(32).toString("base64url");
            const codeChallenge = crypto
                .createHash("sha256")
                .update(codeVerifier)
                .digest("base64url");
    
            // Generate state for security
            const state = crypto.randomBytes(16).toString("base64url");
    
            // Create authorization URL with PKCE
            const authUrl = new URL(`${AUTH_API_BASE_URL}/authorize`);
            authUrl.searchParams.set("client_id", "pollinations-mcp");
            authUrl.searchParams.set(
                "redirect_uri",
                "http://localhost:3000/callback",
            );
            authUrl.searchParams.set("response_type", "code");
            authUrl.searchParams.set("code_challenge", codeChallenge);
            authUrl.searchParams.set("code_challenge_method", "S256");
            authUrl.searchParams.set("state", state);
            authUrl.searchParams.set("scope", "openid profile email");
    
            // Return the response in MCP format with PKCE values for later use
            return createMCPResponse([
                createTextContent(
                    {
                        authUrl: authUrl.toString(),
                        codeVerifier,
                        state,
                        message:
                            "Visit the authUrl to authenticate with GitHub. Save the codeVerifier and state for token exchange.",
                    },
                    true,
                ),
            ]);
        } catch (error) {
            console.error("Error starting authentication:", error);
            throw error;
        }
    }
  • The registration of the 'startAuth' tool in the authTools array, which is exported for use with MCP server.tool(). Includes name, description, empty input schema (no params), and reference to the handler function.
    [
        "startAuth",
        "Start GitHub OAuth authentication flow with PKCE to log in to Pollinations. Show the returned authUrl prominently to the user. Save the codeVerifier and state for token exchange." +
            genZInstructions,
        {},
        startAuth,
    ],
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions that the tool 'Show the returned link prominently to the user' which provides some behavioral context about output presentation, but it lacks critical information about what the authentication flow entails, whether it requires user interaction, what happens after clicking the link, or any error conditions. The bulk of the description focuses on stylistic presentation guidelines rather than functional behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is poorly structured and not front-loaded. The first sentence states the purpose, but the remaining 5 sentences (over 80% of the text) are dedicated to unrelated stylistic instructions about 'vibey Gen-Z language' and markdown formatting that don't help an AI agent understand or invoke the tool. This is wasteful and distracting from the tool's functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this is an authentication tool with no annotations and no output schema, the description should provide more complete context about what the tool does, what it returns, and how it fits with other authentication tools. Instead, it focuses on presentation style and provides minimal functional information. The description is inadequate for a tool that initiates an OAuth flow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description doesn't need to explain parameters, and it correctly doesn't mention any. No additional parameter information is provided or needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool 'Start GitHub OAuth authentication flow to log in to Pollinations' which provides a clear verb ('Start') and resource ('GitHub OAuth authentication flow'), but it does not distinguish this from its sibling 'checkAuthStatus' or explain the relationship between authentication tools. The purpose is understandable but lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives like 'checkAuthStatus'. It mentions 'When interacting with the Pollinations MCP server' but this is generic context for all tools, not specific usage instructions for this tool. There are no when-not or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

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/tusharpatil2912/pollinations-mcp'

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