Skip to main content
Glama
SurfRankAI

SurfRank MCP Server

by SurfRankAI

create_project

Create a new tracked project by providing a domain and brand name. Optionally include industry and country for improved analysis quality.

Instructions

Create a new tracked project. Requires domain (the root URL without scheme) and brandName. industry and country are optional but improve analysis quality.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainYesRoot domain, e.g. "example.com"
brandNameYesHuman-readable brand name
industryNoIndustry vertical (optional)
countryNoPrimary country (ISO-2), optional

Implementation Reference

  • The 'create_project' tool definition including its name, description, inputSchema, and handler. The handler sends a POST request to '/projects' with the input (domain, brandName, optional industry, country).
    {
      name: 'create_project',
      description:
        'Create a new tracked project. Requires `domain` (the root URL without scheme) and ' +
        '`brandName`. `industry` and `country` are optional but improve analysis quality.',
      inputSchema: {
        type: 'object',
        properties: {
          domain: { type: 'string', description: 'Root domain, e.g. "example.com"' },
          brandName: { type: 'string', description: 'Human-readable brand name' },
          industry: { type: 'string', description: 'Industry vertical (optional)' },
          country: { type: 'string', description: 'Primary country (ISO-2), optional' },
        },
        required: ['domain', 'brandName'],
      },
      handler: async (input) => api.post('/projects', input),
    },
  • Input schema for create_project: requires 'domain' (string) and 'brandName' (string); optional 'industry' and 'country' (strings).
    inputSchema: {
      type: 'object',
      properties: {
        domain: { type: 'string', description: 'Root domain, e.g. "example.com"' },
        brandName: { type: 'string', description: 'Human-readable brand name' },
        industry: { type: 'string', description: 'Industry vertical (optional)' },
        country: { type: 'string', description: 'Primary country (ISO-2), optional' },
      },
      required: ['domain', 'brandName'],
    },
  • src/index.js:23-23 (registration)
    Import of projectTools (which includes create_project) into the main server file.
    import { projectTools } from './tools/projects.js';
  • src/index.js:31-32 (registration)
    projectTools spread into ALL_TOOLS array, registering create_project as an available MCP tool.
    const ALL_TOOLS = [
      ...projectTools,
  • The api.post method used by the create_project handler to make the HTTP POST request to '/projects'.
    export const api = {
      get: (path, query) => request('GET', path, { query }),
      post: (path, body) => request('POST', path, { body }),
      patch: (path, body) => request('PATCH', path, { body }),
      delete: (path) => request('DELETE', path),
    };
Behavior2/5

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

No annotations provided; description only mentions requirements and optional fields, with no disclosure of side effects, permissions, or error behavior.

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

Conciseness5/5

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

Two succinct sentences, front-loaded with action and requirements, no extraneous information.

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

Completeness3/5

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

Adequate for a basic creation tool with four parameters, but lacks behavioral context and output details, given no output schema or annotations.

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?

Adds meaning beyond schema by explaining that domain should be root URL without scheme and that optional fields improve analysis quality. Nearly all parameters are enhanced.

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

Purpose4/5

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

Clearly states 'Create a new tracked project' and specifies required parameters. However, does not explicitly differentiate from sibling tools like update_project.

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?

Implies usage by stating required and optional parameters but lacks guidance on when to use this tool versus alternatives.

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/SurfRankAI/mcp-server'

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