Skip to main content
Glama
Stankye

AssemblyLine 4 MCP Server

by Stankye

al4_search_submissions

Search AssemblyLine submissions using Lucene query syntax to filter by fields, sort, and paginate results.

Instructions

Search AssemblyLine submissions using Lucene query syntax (e.g. 'params.submitter:admin AND al_score:[500 TO *]').

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesLucene query string
fieldsNoComma-separated fields to return
rowsNoNumber of results (default 25)
offsetNoPagination offset
sortNoSort field and direction, e.g. 'times.submitted desc'

Implementation Reference

  • Handler for al4_search_submissions: calls client.searchSubmissions() with parsed search options
    case "al4_search_submissions":
      result = await client.searchSubmissions(buildSearchOptions(a));
      break;
  • Tool registration schema for al4_search_submissions: declares input schema with query, fields, rows, offset, sort
    // ── Search ──────────────────────────────────────────────────────────────
    {
      name: "al4_search_submissions",
      description:
        "Search AssemblyLine submissions using Lucene query syntax (e.g. 'params.submitter:admin AND al_score:[500 TO *]').",
      inputSchema: {
        type: "object",
        properties: {
          query: { type: "string", description: "Lucene query string" },
          fields: { type: "string", description: "Comma-separated fields to return" },
          rows: { type: "number", description: "Number of results (default 25)" },
          offset: { type: "number", description: "Pagination offset" },
          sort: { type: "string", description: "Sort field and direction, e.g. 'times.submitted desc'" },
        },
        required: ["query"],
      },
  • buildSearchOptions helper: extracts query, fl, rows, offset, sort from raw args for the search API
    function buildSearchOptions(args: Record<string, unknown>) {
      return {
        query: args.query as string,
        fl: args.fields as string | undefined,
        rows: args.rows as number | undefined,
        offset: args.offset as number | undefined,
        sort: args.sort as string | undefined,
      };
    }
  • searchSubmissions method: sends GET request to /api/v4/search/submission/ with query params via buildSearchParams
    searchSubmissions(opts: SearchOptions): Promise<Record<string, unknown>> {
      return this.requestJson(
        "GET",
        `/api/v4/search/submission/?${this.buildSearchParams(opts)}`,
        undefined,
        opts,
      );
    }
  • buildSearchParams helper: constructs URLSearchParams from SearchOptions (query, fl, rows, offset, sort, filters)
    private buildSearchParams(opts: SearchOptions): string {
      if (!opts.query) throw new Error("SearchOptions.query is required");
      const p = new URLSearchParams({ query: opts.query });
      if (opts.fl) p.set("fl", opts.fl);
      if (opts.rows !== undefined)
        p.set("rows", String(Math.max(0, Math.floor(opts.rows))));
      if (opts.offset !== undefined)
        p.set("offset", String(Math.max(0, Math.floor(opts.offset))));
      if (opts.sort) p.set("sort", opts.sort);
      if (opts.filters) opts.filters.forEach((f) => p.append("filters", f));
      return p.toString();
    }
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It does not mention that the operation is read-only (search implies it but not stated), authentication requirements, rate limits, or result format. The description lacks sufficient behavioral context for the agent.

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?

The description is a single sentence with an example, conveying the core functionality without extraneous words. It is efficient and well-structured for quick comprehension.

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?

Given the 5-parameter schema (all described) and no output schema, the description covers core purpose but lacks behavioral details and comprehensive guidance. It is adequate for a straightforward search tool but leaves gaps in transparency.

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%, setting baseline at 3. The description adds value with a Lucene query example for the 'query' parameter, but does not elaborate on fields, rows, offset, or sort beyond their schema descriptions. Overall, modest addition.

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 it searches AssemblyLine submissions using Lucene query syntax, with an illustrative example. It distinguishes from sibling tools like al4_search_alerts and al4_search_files by specifying 'submissions' as the target resource.

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

Usage Guidelines4/5

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

The description implies usage for searching submissions via Lucene syntax, but does not explicitly contrast with alternatives or provide when-not-to-use guidance. However, the distinct resource name ('submissions') among siblings provides implicit context.

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/Stankye/vibe-assemblylinev4-mcp'

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