get_entity_details
Retrieve comprehensive monitoring data for a specific New Relic entity using its GUID to analyze performance and troubleshoot issues.
Instructions
Get detailed information about a specific entity
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| entity_guid | Yes | The GUID of the entity |
Implementation Reference
- src/tools/entity.ts:103-163 (handler)Core handler function that executes a comprehensive NerdGraph GraphQL query to retrieve detailed entity information, including GUID, name, type, tags, alert violations, APM settings, relationships, and golden metrics.async getEntityDetails(input: { entity_guid: string }): Promise<Record<string, unknown>> { const graphqlQuery = `{ actor { entity(guid: "${input.entity_guid}") { guid name type domain entityType reporting tags { key values } ... on AlertableEntity { alertSeverity recentAlertViolations { alertSeverity violationId openedAt closedAt violationUrl } } ... on ApmApplicationEntity { language settings { apdexTarget } } relationships { type target { entities { guid name } } } goldenMetrics { metrics { name value unit } } } } }`; const response = (await this.client.executeNerdGraphQuery(graphqlQuery)) as { data?: { actor?: { entity?: Record<string, unknown> } }; }; const entity = response.data?.actor?.entity; if (!entity) { throw new Error('Entity not found'); } return entity; }
- src/tools/entity.ts:37-52 (schema)Defines the MCP Tool specification for 'get_entity_details', including name, description, and inputSchema requiring a non-empty 'entity_guid' string.getDetailsTool(): Tool { return { name: 'get_entity_details', description: 'Get detailed information about a specific entity', inputSchema: { type: 'object', properties: { entity_guid: { type: 'string', description: 'The GUID of the entity', }, }, required: ['entity_guid'], }, }; }
- src/server.ts:57-106 (registration)Registers the get_entity_details tool (via entityTool.getDetailsTool()) along with other tools into the server's tools map, which is used for tool listing and discovery.private registerTools(): void { const nrqlTool = new NrqlTool(this.client); const apmTool = new ApmTool(this.client); const entityTool = new EntityTool(this.client); const alertTool = new AlertTool(this.client); const syntheticsTool = new SyntheticsTool(this.client); const nerdGraphTool = new NerdGraphTool(this.client); const restDeployments = new RestDeploymentsTool(); const restApm = new RestApmTool(); const restMetrics = new RestMetricsTool(); // Register all tools const tools = [ nrqlTool.getToolDefinition(), apmTool.getListApplicationsTool(), entityTool.getSearchTool(), entityTool.getDetailsTool(), alertTool.getPoliciesTool(), alertTool.getIncidentsTool(), alertTool.getAcknowledgeTool(), syntheticsTool.getListMonitorsTool(), syntheticsTool.getCreateMonitorTool(), nerdGraphTool.getQueryTool(), // REST v2 tools restDeployments.getCreateTool(), restDeployments.getListTool(), restDeployments.getDeleteTool(), restApm.getListApplicationsTool(), restMetrics.getListMetricNamesTool(), restMetrics.getMetricDataTool(), restMetrics.getListApplicationHostsTool(), { name: 'get_account_details', description: 'Get New Relic account details', inputSchema: { type: 'object' as const, properties: { target_account_id: { type: 'string' as const, description: 'Optional account ID to get details for', }, }, }, }, ]; tools.forEach((tool) => { this.tools.set(tool.name, tool); }); }
- src/server.ts:246-252 (handler)Server dispatch handler for the tool: validates the entity_guid input argument and delegates execution to EntityTool.getEntityDetails.case 'get_entity_details': { const { entity_guid } = args as Record<string, unknown>; if (typeof entity_guid !== 'string' || entity_guid.trim() === '') { throw new Error('get_entity_details: "entity_guid" (non-empty string) is required'); } return await new EntityTool(this.client).getEntityDetails({ entity_guid }); }