Jake Shore e4a40298e4 Full cleanup: 65 servers compile clean, 15 new builds, TSC fixes across all existing servers
- Built from scratch: apollo, chargebee, datadog, greenhouse, lever, loom, pandadoc, salesloft, sendgrid, supabase, typeform, webflow, zoho-crm, twilio, reonomy
- TSC fixes: brevo, google-console, housecall-pro, meta-ads, rippling, bamboohr, close, fieldedge, freshdesk, helpscout, toast, touchbistro, hubspot, notion, quickbooks, airtable, gusto, intercom, linear, monday, salesforce, shopify, square, wave, xero
- Entry points added: close, touchbistro
- All 65 active servers compile with 0 TypeScript errors
- 4 specialty servers skipped (competitor-research, compliance-grc, n8n-apps, product-analytics)
2026-02-14 04:37:01 -05:00

127 lines
3.6 KiB
TypeScript

/**
* Datadog Dashboard Tools
*/
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
export const listDashboardsTool: Tool = {
name: 'list_dashboards',
description: 'Lists all dashboards from Datadog. Use when the user wants to browse available dashboards, find specific visualizations, or audit dashboard inventory. Returns list of dashboards with titles, descriptions, URLs, and metadata.',
inputSchema: {
type: 'object',
properties: {},
},
_meta: {
category: 'dashboards',
access_level: 'read',
complexity: 'low',
},
};
export const getDashboardTool: Tool = {
name: 'get_dashboard',
description: 'Retrieves a single dashboard by ID from Datadog with full configuration. Use when the user needs to view dashboard layout, widget configurations, template variables, or export dashboard definitions. Returns complete dashboard JSON including all widgets and settings.',
inputSchema: {
type: 'object',
properties: {
id: {
type: 'string',
description: 'Dashboard ID',
},
},
required: ['id'],
},
_meta: {
category: 'dashboards',
access_level: 'read',
complexity: 'low',
},
};
export const createDashboardTool: Tool = {
name: 'create_dashboard',
description: 'Creates a new dashboard in Datadog. Use when the user wants to build custom visualizations, create team-specific views, or set up monitoring dashboards. Supports ordered and free layout types with various widget types (timeseries, query value, toplist, etc.). Returns the newly created dashboard.',
inputSchema: {
type: 'object',
properties: {
title: {
type: 'string',
description: 'Dashboard title',
},
description: {
type: 'string',
description: 'Dashboard description',
},
layout_type: {
type: 'string',
enum: ['ordered', 'free'],
description: 'Layout type',
},
widgets: {
type: 'array',
items: { type: 'object' },
description: 'Array of widget definitions',
},
},
required: ['title', 'layout_type', 'widgets'],
},
_meta: {
category: 'dashboards',
access_level: 'write',
complexity: 'high',
},
};
export const updateDashboardTool: Tool = {
name: 'update_dashboard',
description: 'Updates an existing dashboard in Datadog. Use when modifying dashboard layout, adding/removing widgets, updating queries, or changing template variables. Returns the updated dashboard configuration.',
inputSchema: {
type: 'object',
properties: {
id: {
type: 'string',
description: 'Dashboard ID to update',
},
title: {
type: 'string',
description: 'Updated title',
},
description: {
type: 'string',
description: 'Updated description',
},
widgets: {
type: 'array',
items: { type: 'object' },
description: 'Updated widget definitions',
},
},
required: ['id'],
},
_meta: {
category: 'dashboards',
access_level: 'write',
complexity: 'high',
},
};
export const deleteDashboardTool: Tool = {
name: 'delete_dashboard',
description: 'Deletes a dashboard from Datadog. Use when removing obsolete dashboards or cleaning up test visualizations. This action cannot be undone. Returns confirmation of deletion.',
inputSchema: {
type: 'object',
properties: {
id: {
type: 'string',
description: 'Dashboard ID to delete',
},
},
required: ['id'],
},
_meta: {
category: 'dashboards',
access_level: 'delete',
complexity: 'low',
},
};