Skip to main content
Glama

jules_set_cookies

Configure browser authentication by setting cookies from JSON or string format to maintain session persistence in Google Jules AI coding workflows.

Instructions

Set browser cookies from string or JSON for authentication

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cookiesYesCookies as JSON string or cookie string format
formatNoFormat of input cookies (default: json)

Implementation Reference

  • The handler function that implements the jules_set_cookies tool. Parses cookies from JSON or string input, adds them to the browser page context using Playwright's addCookies, and saves to file if configured.
    private async setCookies(args: any) {
      const { cookies, format = 'json' } = args;
      const page = await this.getPage();
    
      try {
        let cookiesToSet: Array<{name: string, value: string, domain: string}> = [];
    
        if (format === 'string') {
          cookiesToSet = this.parseCookiesFromString(cookies);
        } else {
          const parsed = JSON.parse(cookies);
          cookiesToSet = Array.isArray(parsed) ? parsed : [parsed];
        }
    
        await page.context().addCookies(cookiesToSet.map(cookie => ({
          name: cookie.name,
          value: cookie.value,
          domain: cookie.domain,
          path: '/',
        })));
    
        // Save cookies if in cookies mode
        if (this.config.sessionMode === 'cookies' && this.config.cookiePath) {
          await this.saveCookiesToFile(cookiesToSet, this.config.cookiePath);
        }
    
        return {
          content: [
            {
              type: 'text',
              text: `Successfully set ${cookiesToSet.length} cookies. Session authentication should now work for Google Jules.`
            }
          ]
        };
      } catch (error) {
        throw new Error(`Failed to set cookies: ${error}`);
      }
    }
  • The input schema definition for the jules_set_cookies tool, registered in the ListTools response.
      name: 'jules_set_cookies',
      description: 'Set browser cookies from string or JSON for authentication',
      inputSchema: {
        type: 'object',
        properties: {
          cookies: {
            type: 'string',
            description: 'Cookies as JSON string or cookie string format',
          },
          format: {
            type: 'string',
            enum: ['json', 'string'],
            description: 'Format of input cookies (default: json)',
          },
        },
        required: ['cookies'],
      },
    },
  • src/index.ts:384-387 (registration)
    Registration of the jules_set_cookies handler in the CallToolRequestSchema switch statement.
      return await this.getCookies(args);
    case 'jules_set_cookies':
      return await this.setCookies(args);
    case 'jules_session_info':
  • Helper function to parse cookie strings in 'name=value; name2=value2' format into Playwright cookie objects, used by the setCookies handler.
    private parseCookiesFromString(cookieString: string): Array<{name: string, value: string, domain: string}> {
      const cookies: Array<{name: string, value: string, domain: string}> = [];
      
      // Split by semicolon and process each cookie
      const parts = cookieString.split(';');
      
      for (let i = 0; i < parts.length; i++) {
        const part = parts[i].trim();
        
        // Skip domain specifications
        if (part.startsWith('domain=')) {
          continue;
        }
        
        // Parse name=value pairs
        const equalIndex = part.indexOf('=');
        if (equalIndex > 0) {
          const name = part.substring(0, equalIndex).trim();
          const value = part.substring(equalIndex + 1).trim();
          
          if (name && value) {
            cookies.push({
              name,
              value,
              domain: '.google.com'
            });
          }
        }
      }
      
      console.error(`Parsed ${cookies.length} cookies from string`);
      return cookies;
    }

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only states the basic action without mentioning whether it overwrites existing cookies, requires a valid session, or what happens after setting (e.g., page reload, token refresh). This is insufficient for safe invocation.

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

Conciseness4/5

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

The description is a single concise sentence that directly states the purpose. It is front-loaded and efficient, though it could include more details without being verbose.

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 the lack of output schema and annotations, the description is incomplete. It does not describe the return value (success/failure, updated cookies), nor does it clarify if the tool affects existing cookies or requires a browser session. More context is needed for a tool that modifies state.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds 'for authentication' context but does not explain the difference between 'json' and 'string' formats or provide examples. No additional value beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Set browser cookies') and the source ('from string or JSON') and purpose ('for authentication'). It distinguishes from the sibling 'jules_get_cookies' which retrieves cookies.

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

Usage Guidelines3/5

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

The description implies the tool is used to set cookies for authentication, but provides no explicit guidance on when to use it vs alternatives (e.g., jules_analyze_code) or when not to use it (e.g., if cookies already set). No prerequisites or side effects mentioned.

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