list_apm_applications_rest
Retrieve APM application data from New Relic using REST v2 API with filtering options for name, host, IDs, language, and region.
Instructions
List APM applications via REST v2.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| filter_name | No | ||
| filter_host | No | ||
| filter_ids | No | ||
| filter_language | No | ||
| page | No | ||
| auto_paginate | No | ||
| region | No |
Implementation Reference
- src/tools/rest/apm.ts:39-69 (handler)The handler function `listApplications` that executes the tool logic: constructs REST query with filters, performs GET requests to /applications, handles pagination and auto-pagination, returns list of applications.async listApplications(args: ListApplicationsArgs): Promise<unknown> { const client = this.restFor(args.region); const path = '/applications'; const query: Record<string, unknown> = {}; if (args.filter_name) query['filter[name]'] = args.filter_name; if (args.filter_host) query['filter[host]'] = args.filter_host; if (args.filter_language) query['filter[language]'] = args.filter_language; if (args.filter_ids && args.filter_ids.length > 0) query['filter[ids]'] = args.filter_ids.join(','); if (args.page) query.page = args.page; const results: unknown[] = []; let nextUrl: string | undefined; let page = args.page; do { const res = await client.get<unknown>(path, page ? { ...query, page } : query); results.push(res.data); const next = res.links?.next; if (args.auto_paginate && next) { const u = new URL(next); const p = u.searchParams.get('page'); page = p ? Number(p) : undefined; nextUrl = next; } else { nextUrl = undefined; } } while (args.auto_paginate && nextUrl); return { items: args.auto_paginate ? results : results[0], page }; } }
- src/tools/rest/apm.ts:20-37 (schema)Defines the tool's schema: name, description, and inputSchema with properties for filtering, pagination, and region selection.getListApplicationsTool(): Tool { return { name: 'list_apm_applications_rest', description: 'List APM applications via REST v2.', inputSchema: { type: 'object', properties: { filter_name: { type: 'string' }, filter_host: { type: 'string' }, filter_ids: { type: 'array', items: { type: 'number' } }, filter_language: { type: 'string' }, page: { type: 'number' }, auto_paginate: { type: 'boolean' }, region: { type: 'string', enum: ['US', 'EU'] }, }, }, }; }
- src/server.ts:84-84 (registration)Registers the tool definition (schema) into the tools array, which is later added to the server's tools Map.restApm.getListApplicationsTool(),
- src/server.ts:187-190 (registration)Switch case in executeTool that dispatches calls to this tool name to the RestApmTool.listApplications handler.case 'list_apm_applications_rest': return await new RestApmTool().listApplications( args as Parameters<RestApmTool['listApplications']>[0] );
- src/tools/rest/apm.ts:15-18 (helper)Helper method to create a NewRelicRestClient instance with API key and region.private restFor(region?: Region): NewRelicRestClient { const apiKey = process.env.NEW_RELIC_API_KEY as string; return new NewRelicRestClient({ apiKey, region: region ?? 'US' }); }