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
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Lucene query string | |
| fields | No | Comma-separated fields to return | |
| rows | No | Number of results (default 25) | |
| offset | No | Pagination offset | |
| sort | No | Sort field and direction, e.g. 'times.submitted desc' |
Implementation Reference
- src/index.ts:425-427 (handler)Handler for al4_search_submissions: calls client.searchSubmissions() with parsed search options
case "al4_search_submissions": result = await client.searchSubmissions(buildSearchOptions(a)); break; - src/index.ts:209-224 (schema)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"], }, - src/index.ts:344-352 (helper)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, }; } - src/al4-client.ts:599-606 (handler)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, ); } - src/al4-client.ts:586-597 (helper)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(); }