@cesteral/gads-mcp 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +201 -0
- package/README.md +262 -0
- package/dist/auth/gads-auth-adapter.d.ts +31 -0
- package/dist/auth/gads-auth-adapter.d.ts.map +1 -0
- package/dist/auth/gads-auth-adapter.js +70 -0
- package/dist/auth/gads-auth-adapter.js.map +1 -0
- package/dist/auth/gads-auth-strategy.d.ts +9 -0
- package/dist/auth/gads-auth-strategy.d.ts.map +1 -0
- package/dist/auth/gads-auth-strategy.js +27 -0
- package/dist/auth/gads-auth-strategy.js.map +1 -0
- package/dist/config/index.d.ts +100 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +37 -0
- package/dist/config/index.js.map +1 -0
- package/dist/container/index.d.ts +5 -0
- package/dist/container/index.d.ts.map +1 -0
- package/dist/container/index.js +14 -0
- package/dist/container/index.js.map +1 -0
- package/dist/container/registrations/core.d.ts +3 -0
- package/dist/container/registrations/core.d.ts.map +1 -0
- package/dist/container/registrations/core.js +14 -0
- package/dist/container/registrations/core.js.map +1 -0
- package/dist/container/registrations/mcp.d.ts +2 -0
- package/dist/container/registrations/mcp.d.ts.map +1 -0
- package/dist/container/registrations/mcp.js +3 -0
- package/dist/container/registrations/mcp.js.map +1 -0
- package/dist/container/tokens.d.ts +6 -0
- package/dist/container/tokens.d.ts.map +1 -0
- package/dist/container/tokens.js +6 -0
- package/dist/container/tokens.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js +230 -0
- package/dist/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js +237 -0
- package/dist/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.js +154 -0
- package/dist/mcp-server/prompts/definitions/creative-setup-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js +299 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-campaign-setup.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js +170 -0
- package/dist/mcp-server/prompts/definitions/cross-platform-performance.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js +221 -0
- package/dist/mcp-server/prompts/definitions/entity-duplication-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js +207 -0
- package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/gaql-reporting-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/gaql-reporting-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/gaql-reporting-workflow.prompt.js +182 -0
- package/dist/mcp-server/prompts/definitions/gaql-reporting-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js +223 -0
- package/dist/mcp-server/prompts/definitions/targeting-discovery-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js +125 -0
- package/dist/mcp-server/prompts/definitions/tool-schema-exploration.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js +177 -0
- package/dist/mcp-server/prompts/definitions/troubleshoot-entity.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/index.d.ts +9 -0
- package/dist/mcp-server/prompts/index.d.ts.map +1 -0
- package/dist/mcp-server/prompts/index.js +97 -0
- package/dist/mcp-server/prompts/index.js.map +1 -0
- package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts +4 -0
- package/dist/mcp-server/resources/definitions/entity-examples.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/entity-examples.resource.js +574 -0
- package/dist/mcp-server/resources/definitions/entity-examples.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts +3 -0
- package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js +124 -0
- package/dist/mcp-server/resources/definitions/entity-hierarchy.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts +4 -0
- package/dist/mcp-server/resources/definitions/entity-schemas.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/entity-schemas.resource.js +264 -0
- package/dist/mcp-server/resources/definitions/entity-schemas.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/gaql-reference.resource.d.ts +3 -0
- package/dist/mcp-server/resources/definitions/gaql-reference.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/gaql-reference.resource.js +157 -0
- package/dist/mcp-server/resources/definitions/gaql-reference.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/index.d.ts +8 -0
- package/dist/mcp-server/resources/definitions/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/index.js +42 -0
- package/dist/mcp-server/resources/definitions/index.js.map +1 -0
- package/dist/mcp-server/resources/definitions/insights-reference.resource.d.ts +3 -0
- package/dist/mcp-server/resources/definitions/insights-reference.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/insights-reference.resource.js +78 -0
- package/dist/mcp-server/resources/definitions/insights-reference.resource.js.map +1 -0
- package/dist/mcp-server/resources/index.d.ts +3 -0
- package/dist/mcp-server/resources/index.d.ts.map +1 -0
- package/dist/mcp-server/resources/index.js +2 -0
- package/dist/mcp-server/resources/index.js.map +1 -0
- package/dist/mcp-server/resources/types.d.ts +8 -0
- package/dist/mcp-server/resources/types.d.ts.map +1 -0
- package/dist/mcp-server/resources/types.js +2 -0
- package/dist/mcp-server/resources/types.js.map +1 -0
- package/dist/mcp-server/server.d.ts +5 -0
- package/dist/mcp-server/server.d.ts.map +1 -0
- package/dist/mcp-server/server.js +124 -0
- package/dist/mcp-server/server.js.map +1 -0
- package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts +270 -0
- package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/adjust-bids.tool.js +189 -0
- package/dist/mcp-server/tools/definitions/adjust-bids.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts +148 -0
- package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js +141 -0
- package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-mutate.tool.d.ts +136 -0
- package/dist/mcp-server/tools/definitions/bulk-mutate.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-mutate.tool.js +127 -0
- package/dist/mcp-server/tools/definitions/bulk-mutate.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts +185 -0
- package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js +149 -0
- package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts +123 -0
- package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-entity.tool.js +98 -0
- package/dist/mcp-server/tools/definitions/create-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/gaql-search.tool.d.ts +197 -0
- package/dist/mcp-server/tools/definitions/gaql-search.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/gaql-search.tool.js +110 -0
- package/dist/mcp-server/tools/definitions/gaql-search.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts +87 -0
- package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js +91 -0
- package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts +92 -0
- package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-entity.tool.js +87 -0
- package/dist/mcp-server/tools/definitions/get-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-insights.tool.d.ts +382 -0
- package/dist/mcp-server/tools/definitions/get-insights.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-insights.tool.js +246 -0
- package/dist/mcp-server/tools/definitions/get-insights.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-pacing-status.tool.d.ts +141 -0
- package/dist/mcp-server/tools/definitions/get-pacing-status.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-pacing-status.tool.js +163 -0
- package/dist/mcp-server/tools/definitions/get-pacing-status.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/index.d.ts +18 -0
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/index.js +53 -0
- package/dist/mcp-server/tools/definitions/index.js.map +1 -0
- package/dist/mcp-server/tools/definitions/list-accounts.tool.d.ts +54 -0
- package/dist/mcp-server/tools/definitions/list-accounts.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/list-accounts.tool.js +61 -0
- package/dist/mcp-server/tools/definitions/list-accounts.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts +220 -0
- package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/list-entities.tool.js +112 -0
- package/dist/mcp-server/tools/definitions/list-entities.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/remove-entity.tool.d.ts +116 -0
- package/dist/mcp-server/tools/definitions/remove-entity.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/remove-entity.tool.js +120 -0
- package/dist/mcp-server/tools/definitions/remove-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts +129 -0
- package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-entity.tool.js +91 -0
- package/dist/mcp-server/tools/definitions/update-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts +239 -0
- package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/validate-entity.tool.js +151 -0
- package/dist/mcp-server/tools/definitions/validate-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/index.d.ts +2 -0
- package/dist/mcp-server/tools/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/index.js +2 -0
- package/dist/mcp-server/tools/index.js.map +1 -0
- package/dist/mcp-server/tools/utils/computed-metrics.d.ts +8 -0
- package/dist/mcp-server/tools/utils/computed-metrics.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/computed-metrics.js +19 -0
- package/dist/mcp-server/tools/utils/computed-metrics.js.map +1 -0
- package/dist/mcp-server/tools/utils/entity-mapping.d.ts +22 -0
- package/dist/mcp-server/tools/utils/entity-mapping.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/entity-mapping.js +99 -0
- package/dist/mcp-server/tools/utils/entity-mapping.js.map +1 -0
- package/dist/mcp-server/tools/utils/gaql-helpers.d.ts +4 -0
- package/dist/mcp-server/tools/utils/gaql-helpers.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/gaql-helpers.js +82 -0
- package/dist/mcp-server/tools/utils/gaql-helpers.js.map +1 -0
- package/dist/mcp-server/tools/utils/parent-id-validation.d.ts +10 -0
- package/dist/mcp-server/tools/utils/parent-id-validation.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/parent-id-validation.js +58 -0
- package/dist/mcp-server/tools/utils/parent-id-validation.js.map +1 -0
- package/dist/mcp-server/tools/utils/resolve-session.d.ts +4 -0
- package/dist/mcp-server/tools/utils/resolve-session.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/resolve-session.js +6 -0
- package/dist/mcp-server/tools/utils/resolve-session.js.map +1 -0
- package/dist/mcp-server/transports/streamable-http-transport.d.ts +49 -0
- package/dist/mcp-server/transports/streamable-http-transport.d.ts.map +1 -0
- package/dist/mcp-server/transports/streamable-http-transport.js +84 -0
- package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
- package/dist/services/gads/gads-http-client.d.ts +13 -0
- package/dist/services/gads/gads-http-client.d.ts.map +1 -0
- package/dist/services/gads/gads-http-client.js +113 -0
- package/dist/services/gads/gads-http-client.js.map +1 -0
- package/dist/services/gads/gads-service.d.ts +60 -0
- package/dist/services/gads/gads-service.d.ts.map +1 -0
- package/dist/services/gads/gads-service.js +363 -0
- package/dist/services/gads/gads-service.js.map +1 -0
- package/dist/services/gads/types.d.ts +211 -0
- package/dist/services/gads/types.d.ts.map +1 -0
- package/dist/services/gads/types.js +16 -0
- package/dist/services/gads/types.js.map +1 -0
- package/dist/services/session-services.d.ts +17 -0
- package/dist/services/session-services.d.ts.map +1 -0
- package/dist/services/session-services.js +14 -0
- package/dist/services/session-services.js.map +1 -0
- package/dist/types-global/mcp.d.ts +2 -0
- package/dist/types-global/mcp.d.ts.map +1 -0
- package/dist/types-global/mcp.js +2 -0
- package/dist/types-global/mcp.js.map +1 -0
- package/dist/utils/errors/index.d.ts +2 -0
- package/dist/utils/errors/index.d.ts.map +1 -0
- package/dist/utils/errors/index.js +2 -0
- package/dist/utils/errors/index.js.map +1 -0
- package/dist/utils/platform.d.ts +3 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +5 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/utils/security/rate-limiter.d.ts +3 -0
- package/dist/utils/security/rate-limiter.d.ts.map +1 -0
- package/dist/utils/security/rate-limiter.js +5 -0
- package/dist/utils/security/rate-limiter.js.map +1 -0
- package/dist/utils/telemetry/index.d.ts +2 -0
- package/dist/utils/telemetry/index.d.ts.map +1 -0
- package/dist/utils/telemetry/index.js +2 -0
- package/dist/utils/telemetry/index.js.map +1 -0
- package/dist/utils/telemetry/tracing.d.ts +3 -0
- package/dist/utils/telemetry/tracing.d.ts.map +1 -0
- package/dist/utils/telemetry/tracing.js +4 -0
- package/dist/utils/telemetry/tracing.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
let cachedContent;
|
|
2
|
+
function formatEntityHierarchyMarkdown() {
|
|
3
|
+
return `# Google Ads Entity Hierarchy
|
|
4
|
+
|
|
5
|
+
## Relationship Diagram
|
|
6
|
+
|
|
7
|
+
\`\`\`
|
|
8
|
+
Customer (Google Ads Account)
|
|
9
|
+
├── Campaign Budget (shared or dedicated)
|
|
10
|
+
├── Campaign
|
|
11
|
+
│ ├── Ad Group
|
|
12
|
+
│ │ ├── Ad (AdGroupAd)
|
|
13
|
+
│ │ ├── Keyword (AdGroupCriterion)
|
|
14
|
+
│ │ └── (Targeting criteria)
|
|
15
|
+
│ └── Campaign-level targeting (locations, languages)
|
|
16
|
+
└── Asset (reusable text/image/video/sitelink/callout)
|
|
17
|
+
├── CampaignAsset (links asset to campaign)
|
|
18
|
+
└── AdGroupAsset (links asset to ad group)
|
|
19
|
+
\`\`\`
|
|
20
|
+
|
|
21
|
+
## Entity Types (6 in Phase 1)
|
|
22
|
+
|
|
23
|
+
| Entity Type | GAQL Resource | Mutate Endpoint | Parent |
|
|
24
|
+
|-------------|--------------|-----------------|--------|
|
|
25
|
+
| **campaign** | \`campaign\` | \`campaigns:mutate\` | customerId |
|
|
26
|
+
| **adGroup** | \`ad_group\` | \`adGroups:mutate\` | customerId + campaign |
|
|
27
|
+
| **ad** | \`ad_group_ad\` | \`adGroupAds:mutate\` | customerId + adGroup |
|
|
28
|
+
| **keyword** | \`ad_group_criterion\` | \`adGroupCriteria:mutate\` | customerId + adGroup |
|
|
29
|
+
| **campaignBudget** | \`campaign_budget\` | \`campaignBudgets:mutate\` | customerId |
|
|
30
|
+
| **asset** | \`asset\` | \`assets:mutate\` | customerId |
|
|
31
|
+
|
|
32
|
+
## API Patterns
|
|
33
|
+
|
|
34
|
+
### Reading: GAQL Queries
|
|
35
|
+
All reads use GAQL via \`POST /customers/{customerId}/googleAds:search\`:
|
|
36
|
+
\`\`\`json
|
|
37
|
+
{
|
|
38
|
+
"query": "SELECT campaign.id, campaign.name FROM campaign WHERE campaign.status = 'ENABLED'"
|
|
39
|
+
}
|
|
40
|
+
\`\`\`
|
|
41
|
+
|
|
42
|
+
### Writing: :mutate Endpoints
|
|
43
|
+
All writes use \`POST /customers/{customerId}/{resource}:mutate\`:
|
|
44
|
+
\`\`\`json
|
|
45
|
+
{
|
|
46
|
+
"operations": [
|
|
47
|
+
{ "create": { "name": "My Campaign", ... } },
|
|
48
|
+
{ "update": { "resourceName": "customers/123/campaigns/456", "name": "Updated" }, "updateMask": "name" },
|
|
49
|
+
{ "remove": "customers/123/campaigns/789" }
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
\`\`\`
|
|
53
|
+
|
|
54
|
+
### Resource Names
|
|
55
|
+
Every entity has a resource name: \`customers/{customerId}/{entityType}/{entityId}\`
|
|
56
|
+
- Campaign: \`customers/123/campaigns/456\`
|
|
57
|
+
- Ad Group: \`customers/123/adGroups/789\`
|
|
58
|
+
- Campaign Budget: \`customers/123/campaignBudgets/101\`
|
|
59
|
+
- Ad (composite): \`customers/123/adGroupAds/{adGroupId}~{adId}\`
|
|
60
|
+
- Keyword (composite): \`customers/123/adGroupCriteria/{adGroupId}~{criterionId}\`
|
|
61
|
+
- Asset: \`customers/123/assets/202\`
|
|
62
|
+
|
|
63
|
+
## Creation Order
|
|
64
|
+
|
|
65
|
+
Full campaign structure (top-down):
|
|
66
|
+
|
|
67
|
+
1. **List accessible accounts** — \`gads_list_accounts\` to find your customer ID
|
|
68
|
+
2. **Campaign Budget** — create budget first (\`amountMicros\` = daily budget in micros)
|
|
69
|
+
3. **Campaign** — reference budget via \`campaignBudget\` resource name field
|
|
70
|
+
4. **Ad Group(s)** — reference campaign via \`campaign\` resource name field
|
|
71
|
+
5. **Keyword(s)** — reference ad group via \`adGroup\` resource name field
|
|
72
|
+
6. **Ad(s)** — reference ad group via \`adGroup\` resource name field
|
|
73
|
+
7. **Asset(s)** — optional, create then link via CampaignAsset or AdGroupAsset
|
|
74
|
+
|
|
75
|
+
## Key Differences from Other Platforms
|
|
76
|
+
|
|
77
|
+
| Feature | Google Ads | DV360 | TTD |
|
|
78
|
+
|---------|-----------|-------|-----|
|
|
79
|
+
| **Budget model** | Separate CampaignBudget entity | Budget in campaign object | Budget in campaign + ad group |
|
|
80
|
+
| **Query language** | GAQL (SQL-like) | REST GET with filters | POST to /query endpoints |
|
|
81
|
+
| **Mutations** | :mutate with operations[] | REST PUT/PATCH | REST POST/PUT |
|
|
82
|
+
| **Update mask** | Required on update | Required on update | Full PUT (no mask) |
|
|
83
|
+
| **Status values** | ENABLED/PAUSED/REMOVED | ACTIVE/PAUSED/DRAFT/ARCHIVED | Available/Paused/Archived |
|
|
84
|
+
| **ID format** | Numeric strings | Numeric strings | Alphanumeric strings |
|
|
85
|
+
| **Currency** | Micros (÷1,000,000) | Standard units | Standard units |
|
|
86
|
+
|
|
87
|
+
## Deletion / Removal Order
|
|
88
|
+
|
|
89
|
+
Remove bottom-up to avoid dependency errors:
|
|
90
|
+
|
|
91
|
+
1. **Keywords** and **Ads** first
|
|
92
|
+
2. **Ad Groups**
|
|
93
|
+
3. **Campaigns**
|
|
94
|
+
4. **Campaign Budgets** (only if not shared)
|
|
95
|
+
5. **Assets** (only if not linked to campaigns/ad groups)
|
|
96
|
+
|
|
97
|
+
Note: In Google Ads, "remove" sets status to REMOVED. Entities cannot be un-removed.
|
|
98
|
+
|
|
99
|
+
## Available Tools Summary
|
|
100
|
+
|
|
101
|
+
| Tool | Purpose | Read/Write |
|
|
102
|
+
|------|---------|:----------:|
|
|
103
|
+
| \`gads_gaql_search\` | Execute arbitrary GAQL queries | Read |
|
|
104
|
+
| \`gads_list_accounts\` | List accessible customer accounts | Read |
|
|
105
|
+
| \`gads_get_entity\` | Get single entity by type/ID | Read |
|
|
106
|
+
| \`gads_list_entities\` | List entities with filters | Read |
|
|
107
|
+
| \`gads_create_entity\` | Create via :mutate API | Write |
|
|
108
|
+
| \`gads_update_entity\` | Update with updateMask | Write |
|
|
109
|
+
| \`gads_remove_entity\` | Remove via :mutate API | Write |
|
|
110
|
+
| \`gads_bulk_mutate\` | Multi-operation mutate | Write |
|
|
111
|
+
| \`gads_bulk_update_status\` | Batch enable/pause/remove | Write |
|
|
112
|
+
`;
|
|
113
|
+
}
|
|
114
|
+
export const entityHierarchyResource = {
|
|
115
|
+
uri: "entity-hierarchy://gads",
|
|
116
|
+
name: "Google Ads Entity Hierarchy",
|
|
117
|
+
description: "Parent-child relationships between Google Ads entities, API patterns, creation/deletion ordering, and platform differences",
|
|
118
|
+
mimeType: "text/markdown",
|
|
119
|
+
getContent: () => {
|
|
120
|
+
cachedContent ??= formatEntityHierarchyMarkdown();
|
|
121
|
+
return cachedContent;
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=entity-hierarchy.resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-hierarchy.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-hierarchy.resource.ts"],"names":[],"mappings":"AAUA,IAAI,aAAiC,CAAC;AAEtC,SAAS,6BAA6B;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6GR,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAa;IAC/C,GAAG,EAAE,yBAAyB;IAC9B,IAAI,EAAE,6BAA6B;IACnC,WAAW,EACT,4HAA4H;IAC9H,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE;QACf,aAAa,KAAK,6BAA6B,EAAE,CAAC;QAClD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-schemas.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-schemas.resource.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAqQ5C,eAAO,MAAM,qBAAqB,EAAE,QAAQ,EAMzC,CAAC;AAEJ,eAAO,MAAM,uBAAuB,EAAE,QASrC,CAAC"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
const cachedSchemas = new Map();
|
|
2
|
+
function campaignSchemaMarkdown() {
|
|
3
|
+
return `# Google Ads Campaign Schema
|
|
4
|
+
|
|
5
|
+
## Fields
|
|
6
|
+
|
|
7
|
+
| Field | Type | Required | Description |
|
|
8
|
+
|-------|------|----------|-------------|
|
|
9
|
+
| \`name\` | string | **Yes** | Campaign name (unique within account) |
|
|
10
|
+
| \`advertisingChannelType\` | enum | **Yes** | \`SEARCH\`, \`DISPLAY\`, \`SHOPPING\`, \`VIDEO\`, \`MULTI_CHANNEL\`, \`PERFORMANCE_MAX\`, \`DEMAND_GEN\` |
|
|
11
|
+
| \`status\` | enum | No | \`ENABLED\`, \`PAUSED\`, \`REMOVED\` (default: \`ENABLED\`) |
|
|
12
|
+
| \`campaignBudget\` | string | **Yes** | Resource name of the campaign budget (e.g., \`customers/{id}/campaignBudgets/{budgetId}\`) |
|
|
13
|
+
| \`startDate\` | string | No | Start date in YYYY-MM-DD format |
|
|
14
|
+
| \`endDate\` | string | No | End date in YYYY-MM-DD format |
|
|
15
|
+
| \`biddingStrategyType\` | enum | No | \`MANUAL_CPC\`, \`MAXIMIZE_CONVERSIONS\`, \`MAXIMIZE_CONVERSION_VALUE\`, \`TARGET_CPA\`, \`TARGET_ROAS\`, etc. |
|
|
16
|
+
| \`manualCpc\` | object | Cond. | Manual CPC settings (when biddingStrategyType = MANUAL_CPC) |
|
|
17
|
+
| \`maximizeConversions\` | object | Cond. | Maximize conversions settings |
|
|
18
|
+
| \`targetCpa\` | object | Cond. | Target CPA settings with \`targetCpaMicros\` |
|
|
19
|
+
| \`targetRoas\` | object | Cond. | Target ROAS settings with \`targetRoas\` (float) |
|
|
20
|
+
| \`networkSettings\` | object | No | Network targeting (Search, Display, YouTube, partners) |
|
|
21
|
+
| \`geoTargetTypeSetting\` | object | No | Geo targeting type configuration |
|
|
22
|
+
| \`frequencyCaps\` | object[] | No | Frequency capping rules |
|
|
23
|
+
| \`urlCustomParameters\` | object[] | No | Custom URL parameters |
|
|
24
|
+
|
|
25
|
+
## Network Settings Object
|
|
26
|
+
|
|
27
|
+
| Field | Type | Description |
|
|
28
|
+
|-------|------|-------------|
|
|
29
|
+
| \`targetGoogleSearch\` | boolean | Show ads on Google Search |
|
|
30
|
+
| \`targetSearchNetwork\` | boolean | Show ads on search partner sites |
|
|
31
|
+
| \`targetContentNetwork\` | boolean | Show ads on Display Network |
|
|
32
|
+
| \`targetPartnerSearchNetwork\` | boolean | Show ads on partner search network |
|
|
33
|
+
|
|
34
|
+
## Notes
|
|
35
|
+
- \`campaignBudget\` must reference an existing CampaignBudget resource (create budget first).
|
|
36
|
+
- \`advertisingChannelType\` cannot be changed after creation.
|
|
37
|
+
- Use \`PERFORMANCE_MAX\` for AI-optimized campaigns across all Google surfaces.
|
|
38
|
+
- Bidding strategy fields are mutually exclusive — set only one.
|
|
39
|
+
`;
|
|
40
|
+
}
|
|
41
|
+
function adGroupSchemaMarkdown() {
|
|
42
|
+
return `# Google Ads Ad Group Schema
|
|
43
|
+
|
|
44
|
+
## Fields
|
|
45
|
+
|
|
46
|
+
| Field | Type | Required | Description |
|
|
47
|
+
|-------|------|----------|-------------|
|
|
48
|
+
| \`name\` | string | **Yes** | Ad group name |
|
|
49
|
+
| \`campaign\` | string | **Yes** | Parent campaign resource name |
|
|
50
|
+
| \`status\` | enum | No | \`ENABLED\`, \`PAUSED\`, \`REMOVED\` |
|
|
51
|
+
| \`type\` | enum | No | \`SEARCH_STANDARD\`, \`DISPLAY_STANDARD\`, \`SHOPPING_PRODUCT_ADS\`, \`VIDEO_BUMPER\`, etc. |
|
|
52
|
+
| \`cpcBidMicros\` | string (int64) | No | Default max CPC bid in micros (1,000,000 micros = 1 currency unit) |
|
|
53
|
+
| \`cpmBidMicros\` | string (int64) | No | Default CPM bid in micros |
|
|
54
|
+
| \`targetCpaMicros\` | string (int64) | No | Target CPA bid in micros |
|
|
55
|
+
| \`targetRoas\` | number | No | Target ROAS (e.g., 2.0 = 200% return) |
|
|
56
|
+
| \`adRotationMode\` | enum | No | \`OPTIMIZE\`, \`ROTATE_FOREVER\` |
|
|
57
|
+
| \`urlCustomParameters\` | object[] | No | Custom URL parameters |
|
|
58
|
+
|
|
59
|
+
## Notes
|
|
60
|
+
- \`campaign\` must be a valid campaign resource name: \`customers/{customerId}/campaigns/{campaignId}\`.
|
|
61
|
+
- \`cpcBidMicros\` is in micros: to set $2.50 bid, use \`"2500000"\`.
|
|
62
|
+
- Ad group type is typically inferred from the parent campaign's channel type.
|
|
63
|
+
- For Display campaigns, targeting options (audiences, placements) are set separately.
|
|
64
|
+
`;
|
|
65
|
+
}
|
|
66
|
+
function adSchemaMarkdown() {
|
|
67
|
+
return `# Google Ads Ad (AdGroupAd) Schema
|
|
68
|
+
|
|
69
|
+
## Fields
|
|
70
|
+
|
|
71
|
+
| Field | Type | Required | Description |
|
|
72
|
+
|-------|------|----------|-------------|
|
|
73
|
+
| \`adGroup\` | string | **Yes** | Parent ad group resource name |
|
|
74
|
+
| \`status\` | enum | No | \`ENABLED\`, \`PAUSED\`, \`REMOVED\` |
|
|
75
|
+
| \`ad\` | object | **Yes** | The ad creative object (see below) |
|
|
76
|
+
|
|
77
|
+
## Ad Object (varies by type)
|
|
78
|
+
|
|
79
|
+
### Responsive Search Ad
|
|
80
|
+
|
|
81
|
+
| Field | Type | Required | Description |
|
|
82
|
+
|-------|------|----------|-------------|
|
|
83
|
+
| \`responsiveSearchAd\` | object | **Yes** | RSA creative content |
|
|
84
|
+
| \`responsiveSearchAd.headlines\` | object[] | **Yes** | 3-15 headline options (\`{ text: string }\`) |
|
|
85
|
+
| \`responsiveSearchAd.descriptions\` | object[] | **Yes** | 2-4 description options (\`{ text: string }\`) |
|
|
86
|
+
| \`responsiveSearchAd.path1\` | string | No | Display URL path 1 (max 15 chars) |
|
|
87
|
+
| \`responsiveSearchAd.path2\` | string | No | Display URL path 2 (max 15 chars) |
|
|
88
|
+
| \`finalUrls\` | string[] | **Yes** | Landing page URLs |
|
|
89
|
+
| \`finalMobileUrls\` | string[] | No | Mobile-specific landing pages |
|
|
90
|
+
| \`trackingUrlTemplate\` | string | No | Tracking URL template |
|
|
91
|
+
|
|
92
|
+
### Responsive Display Ad
|
|
93
|
+
|
|
94
|
+
| Field | Type | Required | Description |
|
|
95
|
+
|-------|------|----------|-------------|
|
|
96
|
+
| \`responsiveDisplayAd\` | object | **Yes** | Display ad content |
|
|
97
|
+
| \`responsiveDisplayAd.headlines\` | object[] | **Yes** | Short headlines |
|
|
98
|
+
| \`responsiveDisplayAd.longHeadline\` | object | **Yes** | Long headline |
|
|
99
|
+
| \`responsiveDisplayAd.descriptions\` | object[] | **Yes** | Description options |
|
|
100
|
+
| \`responsiveDisplayAd.marketingImages\` | object[] | **Yes** | Marketing image assets |
|
|
101
|
+
| \`responsiveDisplayAd.squareMarketingImages\` | object[] | No | Square format images |
|
|
102
|
+
| \`responsiveDisplayAd.businessName\` | string | **Yes** | Business/brand name |
|
|
103
|
+
| \`finalUrls\` | string[] | **Yes** | Landing page URLs |
|
|
104
|
+
|
|
105
|
+
## Notes
|
|
106
|
+
- Google Ads strongly favors Responsive Search Ads (RSA) over expanded text ads.
|
|
107
|
+
- Provide 8-15 headlines and 3-4 descriptions for best RSA performance.
|
|
108
|
+
- Headlines max 30 chars each; descriptions max 90 chars each.
|
|
109
|
+
- \`finalUrls\` is required for all ad types.
|
|
110
|
+
`;
|
|
111
|
+
}
|
|
112
|
+
function keywordSchemaMarkdown() {
|
|
113
|
+
return `# Google Ads Keyword (AdGroupCriterion) Schema
|
|
114
|
+
|
|
115
|
+
## Fields
|
|
116
|
+
|
|
117
|
+
| Field | Type | Required | Description |
|
|
118
|
+
|-------|------|----------|-------------|
|
|
119
|
+
| \`adGroup\` | string | **Yes** | Parent ad group resource name |
|
|
120
|
+
| \`status\` | enum | No | \`ENABLED\`, \`PAUSED\`, \`REMOVED\` |
|
|
121
|
+
| \`keyword\` | object | **Yes** | Keyword targeting settings |
|
|
122
|
+
| \`keyword.text\` | string | **Yes** | The keyword text |
|
|
123
|
+
| \`keyword.matchType\` | enum | **Yes** | \`BROAD\`, \`PHRASE\`, \`EXACT\` |
|
|
124
|
+
| \`cpcBidMicros\` | string (int64) | No | Keyword-level max CPC bid override (in micros) |
|
|
125
|
+
| \`finalUrls\` | string[] | No | Keyword-level landing page override |
|
|
126
|
+
| \`negative\` | boolean | No | Whether this is a negative keyword |
|
|
127
|
+
|
|
128
|
+
## Match Types
|
|
129
|
+
|
|
130
|
+
| Match Type | Behavior | Example for "running shoes" |
|
|
131
|
+
|------------|----------|---------------------------|
|
|
132
|
+
| \`BROAD\` | Shows for related searches | "buy sneakers", "jogging footwear" |
|
|
133
|
+
| \`PHRASE\` | Shows when search includes phrase | "best running shoes", "running shoes sale" |
|
|
134
|
+
| \`EXACT\` | Shows for exact or close variant | "running shoes", "running shoe" |
|
|
135
|
+
|
|
136
|
+
## Notes
|
|
137
|
+
- Keywords are created as AdGroupCriterion resources.
|
|
138
|
+
- Bid in micros: $1.50 = \`"1500000"\`.
|
|
139
|
+
- Negative keywords exclude searches — set \`negative: true\`.
|
|
140
|
+
- Broad match is recommended with Smart Bidding strategies.
|
|
141
|
+
`;
|
|
142
|
+
}
|
|
143
|
+
function campaignBudgetSchemaMarkdown() {
|
|
144
|
+
return `# Google Ads Campaign Budget Schema
|
|
145
|
+
|
|
146
|
+
## Fields
|
|
147
|
+
|
|
148
|
+
| Field | Type | Required | Description |
|
|
149
|
+
|-------|------|----------|-------------|
|
|
150
|
+
| \`name\` | string | No | Budget name (for reference) |
|
|
151
|
+
| \`amountMicros\` | string (int64) | **Yes** | Daily budget in micros (1,000,000 micros = 1 currency unit) |
|
|
152
|
+
| \`deliveryMethod\` | enum | No | \`STANDARD\` (spread evenly) or \`ACCELERATED\` (spend quickly, limited availability) |
|
|
153
|
+
| \`explicitlyShared\` | boolean | No | Whether budget is shared across campaigns |
|
|
154
|
+
| \`status\` | enum | Read-only | \`ENABLED\`, \`REMOVED\` |
|
|
155
|
+
| \`totalAmountMicros\` | string (int64) | No | Total lifetime budget in micros (optional) |
|
|
156
|
+
|
|
157
|
+
## Notes
|
|
158
|
+
- Create budget first, then reference it in campaign creation via \`campaignBudget\` field.
|
|
159
|
+
- \`amountMicros\` is the **daily** budget: $50/day = \`"50000000"\`.
|
|
160
|
+
- A budget can be shared across multiple campaigns if \`explicitlyShared: true\`.
|
|
161
|
+
- \`STANDARD\` delivery is recommended — spreads spend evenly throughout the day.
|
|
162
|
+
`;
|
|
163
|
+
}
|
|
164
|
+
function assetSchemaMarkdown() {
|
|
165
|
+
return `# Google Ads Asset Schema
|
|
166
|
+
|
|
167
|
+
## Overview
|
|
168
|
+
|
|
169
|
+
Assets are reusable building blocks (text, images, videos, etc.) that can be linked to
|
|
170
|
+
campaigns and ad groups via CampaignAsset and AdGroupAsset associations.
|
|
171
|
+
|
|
172
|
+
## Common Fields
|
|
173
|
+
|
|
174
|
+
| Field | Type | Required | Description |
|
|
175
|
+
|-------|------|----------|-------------|
|
|
176
|
+
| \`name\` | string | No | Optional asset name for reference |
|
|
177
|
+
| \`type\` | enum | Read-only | Auto-set based on asset content: \`TEXT\`, \`IMAGE\`, \`YOUTUBE_VIDEO\`, \`CALLOUT\`, \`SITELINK\`, \`CALL\`, \`STRUCTURED_SNIPPET\`, etc. |
|
|
178
|
+
| \`resourceName\` | string | Read-only | \`customers/{customerId}/assets/{assetId}\` |
|
|
179
|
+
|
|
180
|
+
## Asset Type-Specific Fields
|
|
181
|
+
|
|
182
|
+
### Text Asset
|
|
183
|
+
| Field | Type | Description |
|
|
184
|
+
|-------|------|-------------|
|
|
185
|
+
| \`textAsset.text\` | string | The text content |
|
|
186
|
+
|
|
187
|
+
### Image Asset
|
|
188
|
+
| Field | Type | Description |
|
|
189
|
+
|-------|------|-------------|
|
|
190
|
+
| \`imageAsset.data\` | bytes (base64) | Raw image data |
|
|
191
|
+
| \`imageAsset.fileSize\` | int64 | File size in bytes |
|
|
192
|
+
| \`imageAsset.mimeType\` | enum | \`IMAGE_JPEG\`, \`IMAGE_PNG\`, \`IMAGE_GIF\` |
|
|
193
|
+
| \`imageAsset.fullSize\` | object | Full-size image dimensions |
|
|
194
|
+
|
|
195
|
+
### Sitelink Asset
|
|
196
|
+
| Field | Type | Description |
|
|
197
|
+
|-------|------|-------------|
|
|
198
|
+
| \`sitelinkAsset.linkText\` | string | Sitelink anchor text (max 25 chars) |
|
|
199
|
+
| \`sitelinkAsset.description1\` | string | Description line 1 |
|
|
200
|
+
| \`sitelinkAsset.description2\` | string | Description line 2 |
|
|
201
|
+
| \`finalUrls\` | string[] | Landing page URLs |
|
|
202
|
+
|
|
203
|
+
### Callout Asset
|
|
204
|
+
| Field | Type | Description |
|
|
205
|
+
|-------|------|-------------|
|
|
206
|
+
| \`calloutAsset.calloutText\` | string | Callout text (max 25 chars) |
|
|
207
|
+
|
|
208
|
+
### Call Asset
|
|
209
|
+
| Field | Type | Description |
|
|
210
|
+
|-------|------|-------------|
|
|
211
|
+
| \`callAsset.countryCode\` | string | Two-letter country code |
|
|
212
|
+
| \`callAsset.phoneNumber\` | string | Phone number string |
|
|
213
|
+
|
|
214
|
+
## Notes
|
|
215
|
+
- Assets replaced the legacy Extension Feed Items API (removed in API v23).
|
|
216
|
+
- Create assets first, then link via \`CampaignAsset\` or \`AdGroupAsset\` associations.
|
|
217
|
+
- Assets can be shared across multiple campaigns/ad groups.
|
|
218
|
+
- At least 2 sitelink assets recommended for best ad performance.
|
|
219
|
+
`;
|
|
220
|
+
}
|
|
221
|
+
const SCHEMA_GENERATORS = {
|
|
222
|
+
campaign: campaignSchemaMarkdown,
|
|
223
|
+
adgroup: adGroupSchemaMarkdown,
|
|
224
|
+
ad: adSchemaMarkdown,
|
|
225
|
+
keyword: keywordSchemaMarkdown,
|
|
226
|
+
campaignbudget: campaignBudgetSchemaMarkdown,
|
|
227
|
+
asset: assetSchemaMarkdown,
|
|
228
|
+
};
|
|
229
|
+
const ENTITY_TYPES = ["campaign", "adGroup", "ad", "keyword", "campaignBudget", "asset"];
|
|
230
|
+
function getSchemaContent(entityType) {
|
|
231
|
+
const key = entityType.toLowerCase();
|
|
232
|
+
if (!cachedSchemas.has(key)) {
|
|
233
|
+
const generator = SCHEMA_GENERATORS[key];
|
|
234
|
+
if (generator) {
|
|
235
|
+
cachedSchemas.set(key, generator());
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
return `# Unknown entity type: ${entityType}\n\nSupported types: ${ENTITY_TYPES.join(", ")}`;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return cachedSchemas.get(key);
|
|
242
|
+
}
|
|
243
|
+
let cachedAllSchemas;
|
|
244
|
+
function getAllSchemasMarkdown() {
|
|
245
|
+
return ENTITY_TYPES.map((t) => getSchemaContent(t)).join("\n---\n\n");
|
|
246
|
+
}
|
|
247
|
+
export const entitySchemaResources = ENTITY_TYPES.map((entityType) => ({
|
|
248
|
+
uri: `entity-schema://${entityType}`,
|
|
249
|
+
name: `Google Ads ${entityType} Schema`,
|
|
250
|
+
description: `Field reference for Google Ads ${entityType} entities including required fields, types, and nested objects`,
|
|
251
|
+
mimeType: "text/markdown",
|
|
252
|
+
getContent: () => getSchemaContent(entityType),
|
|
253
|
+
}));
|
|
254
|
+
export const entitySchemaAllResource = {
|
|
255
|
+
uri: "entity-schema://all",
|
|
256
|
+
name: "Google Ads All Entity Schemas",
|
|
257
|
+
description: "Combined field reference for all Google Ads entity types",
|
|
258
|
+
mimeType: "text/markdown",
|
|
259
|
+
getContent: () => {
|
|
260
|
+
cachedAllSchemas ??= getAllSchemasMarkdown();
|
|
261
|
+
return cachedAllSchemas;
|
|
262
|
+
},
|
|
263
|
+
};
|
|
264
|
+
//# sourceMappingURL=entity-schemas.resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-schemas.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/entity-schemas.resource.ts"],"names":[],"mappings":"AAUA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEhD,SAAS,sBAAsB;IAC7B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCR,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;CAsBR,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CR,CAAC;AACF,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BR,CAAC;AACF,CAAC;AAED,SAAS,4BAA4B;IACnC,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDR,CAAC;AACF,CAAC;AAID,MAAM,iBAAiB,GAAiC;IACtD,QAAQ,EAAE,sBAAsB;IAChC,OAAO,EAAE,qBAAqB;IAC9B,EAAE,EAAE,gBAAgB;IACpB,OAAO,EAAE,qBAAqB;IAC9B,cAAc,EAAE,4BAA4B;IAC5C,KAAK,EAAE,mBAAmB;CAC3B,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,gBAAgB,EAAE,OAAO,CAAU,CAAC;AAElG,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,SAAS,EAAE,CAAC;YACd,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,OAAO,0BAA0B,UAAU,wBAAwB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/F,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;AACjC,CAAC;AAED,IAAI,gBAAoC,CAAC;AAEzC,SAAS,qBAAqB;IAC5B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAe,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACjF,GAAG,EAAE,mBAAmB,UAAU,EAAE;IACpC,IAAI,EAAE,cAAc,UAAU,SAAS;IACvC,WAAW,EAAE,kCAAkC,UAAU,gEAAgE;IACzH,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC;CAC/C,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,uBAAuB,GAAa;IAC/C,GAAG,EAAE,qBAAqB;IAC1B,IAAI,EAAE,+BAA+B;IACrC,WAAW,EAAE,0DAA0D;IACvE,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE;QACf,gBAAgB,KAAK,qBAAqB,EAAE,CAAC;QAC7C,OAAO,gBAAgB,CAAC;IAC1B,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gaql-reference.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/gaql-reference.resource.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAsJ5C,eAAO,MAAM,qBAAqB,EAAE,QAUnC,CAAC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
let cachedContent;
|
|
2
|
+
function buildGaqlReferenceMarkdown() {
|
|
3
|
+
return `# GAQL (Google Ads Query Language) Reference
|
|
4
|
+
|
|
5
|
+
## Query Structure
|
|
6
|
+
|
|
7
|
+
\`\`\`
|
|
8
|
+
SELECT field1, field2, metrics.metric1
|
|
9
|
+
FROM resource
|
|
10
|
+
WHERE condition1 AND condition2
|
|
11
|
+
ORDER BY field1 ASC
|
|
12
|
+
LIMIT 100
|
|
13
|
+
PARAMETERS include_drafts=true
|
|
14
|
+
\`\`\`
|
|
15
|
+
|
|
16
|
+
Only \`SELECT\` and \`FROM\` are required. All other clauses are optional.
|
|
17
|
+
|
|
18
|
+
## Field Types
|
|
19
|
+
|
|
20
|
+
| Type | Example | Description |
|
|
21
|
+
|------|---------|-------------|
|
|
22
|
+
| **Resource fields** | \`campaign.name\`, \`campaign.id\` | Entity attributes |
|
|
23
|
+
| **Segment fields** | \`segments.date\`, \`segments.device\` | Breakdowns/dimensions |
|
|
24
|
+
| **Metrics** | \`metrics.impressions\`, \`metrics.clicks\` | Performance data |
|
|
25
|
+
|
|
26
|
+
## Common Resources (FROM clause)
|
|
27
|
+
|
|
28
|
+
| Resource | Description | Key Fields |
|
|
29
|
+
|----------|-------------|------------|
|
|
30
|
+
| \`campaign\` | Campaign data | \`campaign.id\`, \`campaign.name\`, \`campaign.status\` |
|
|
31
|
+
| \`ad_group\` | Ad group data | \`ad_group.id\`, \`ad_group.name\`, \`ad_group.status\` |
|
|
32
|
+
| \`ad_group_ad\` | Ad data | \`ad_group_ad.ad.id\`, \`ad_group_ad.status\` |
|
|
33
|
+
| \`ad_group_criterion\` | Keywords/criteria | \`ad_group_criterion.keyword.text\`, \`ad_group_criterion.keyword.match_type\` |
|
|
34
|
+
| \`campaign_budget\` | Budget data | \`campaign_budget.amount_micros\`, \`campaign_budget.status\` |
|
|
35
|
+
| \`customer\` | Account data | \`customer.id\`, \`customer.descriptive_name\` |
|
|
36
|
+
|
|
37
|
+
## Common Metrics
|
|
38
|
+
|
|
39
|
+
| Metric | Description |
|
|
40
|
+
|--------|-------------|
|
|
41
|
+
| \`metrics.impressions\` | Number of impressions |
|
|
42
|
+
| \`metrics.clicks\` | Number of clicks |
|
|
43
|
+
| \`metrics.ctr\` | Click-through rate (clicks/impressions) |
|
|
44
|
+
| \`metrics.average_cpc\` | Average cost per click (micros) |
|
|
45
|
+
| \`metrics.average_cpm\` | Average cost per thousand impressions (micros) |
|
|
46
|
+
| \`metrics.cost_micros\` | Total cost (micros) |
|
|
47
|
+
| \`metrics.conversions\` | Number of conversions |
|
|
48
|
+
| \`metrics.conversions_value\` | Total conversion value |
|
|
49
|
+
| \`metrics.cost_per_conversion\` | Cost per conversion (micros) |
|
|
50
|
+
| \`metrics.video_views\` | Video views |
|
|
51
|
+
| \`metrics.video_view_rate\` | Video view rate |
|
|
52
|
+
|
|
53
|
+
## Common Segments
|
|
54
|
+
|
|
55
|
+
| Segment | Description |
|
|
56
|
+
|---------|-------------|
|
|
57
|
+
| \`segments.date\` | Date (YYYY-MM-DD) |
|
|
58
|
+
| \`segments.device\` | \`MOBILE\`, \`DESKTOP\`, \`TABLET\` |
|
|
59
|
+
| \`segments.ad_network_type\` | \`SEARCH\`, \`CONTENT\`, \`YOUTUBE_SEARCH\`, \`YOUTUBE_WATCH\` |
|
|
60
|
+
| \`segments.day_of_week\` | \`MONDAY\` through \`SUNDAY\` |
|
|
61
|
+
| \`segments.hour\` | Hour of day (0-23) |
|
|
62
|
+
|
|
63
|
+
## WHERE Operators
|
|
64
|
+
|
|
65
|
+
| Operator | Example | Description |
|
|
66
|
+
|----------|---------|-------------|
|
|
67
|
+
| \`=\` | \`campaign.status = 'ENABLED'\` | Equals |
|
|
68
|
+
| \`!=\` | \`campaign.status != 'REMOVED'\` | Not equals |
|
|
69
|
+
| \`>\`, \`<\`, \`>=\`, \`<=\` | \`metrics.impressions > 100\` | Comparison |
|
|
70
|
+
| \`IN\` | \`campaign.status IN ('ENABLED', 'PAUSED')\` | Set membership |
|
|
71
|
+
| \`NOT IN\` | \`campaign.status NOT IN ('REMOVED')\` | Set exclusion |
|
|
72
|
+
| \`LIKE\` | \`campaign.name LIKE '%brand%'\` | Pattern match |
|
|
73
|
+
| \`CONTAINS ANY\` | \`campaign.labels CONTAINS ANY ('label1')\` | Label matching |
|
|
74
|
+
| \`IS NULL\` / \`IS NOT NULL\` | \`campaign.end_date IS NOT NULL\` | Null check |
|
|
75
|
+
| \`BETWEEN\` | \`segments.date BETWEEN '2025-01-01' AND '2025-01-31'\` | Date range |
|
|
76
|
+
| \`DURING\` | \`segments.date DURING LAST_30_DAYS\` | Relative date range |
|
|
77
|
+
|
|
78
|
+
## DURING Predefined Ranges
|
|
79
|
+
|
|
80
|
+
\`TODAY\`, \`YESTERDAY\`, \`LAST_7_DAYS\`, \`LAST_14_DAYS\`, \`LAST_30_DAYS\`,
|
|
81
|
+
\`THIS_WEEK_MON_TODAY\`, \`THIS_MONTH\`, \`LAST_MONTH\`, \`THIS_QUARTER\`
|
|
82
|
+
|
|
83
|
+
## Example Queries
|
|
84
|
+
|
|
85
|
+
### Campaign Performance (Last 30 Days)
|
|
86
|
+
\`\`\`
|
|
87
|
+
SELECT campaign.name, campaign.status,
|
|
88
|
+
metrics.impressions, metrics.clicks, metrics.ctr,
|
|
89
|
+
metrics.cost_micros, metrics.conversions
|
|
90
|
+
FROM campaign
|
|
91
|
+
WHERE campaign.status != 'REMOVED'
|
|
92
|
+
AND segments.date DURING LAST_30_DAYS
|
|
93
|
+
ORDER BY metrics.cost_micros DESC
|
|
94
|
+
LIMIT 50
|
|
95
|
+
\`\`\`
|
|
96
|
+
|
|
97
|
+
### Active Ad Groups with Performance
|
|
98
|
+
\`\`\`
|
|
99
|
+
SELECT ad_group.name, ad_group.status, ad_group.campaign,
|
|
100
|
+
metrics.impressions, metrics.clicks, metrics.average_cpc
|
|
101
|
+
FROM ad_group
|
|
102
|
+
WHERE ad_group.status = 'ENABLED'
|
|
103
|
+
AND segments.date DURING LAST_7_DAYS
|
|
104
|
+
ORDER BY metrics.impressions DESC
|
|
105
|
+
\`\`\`
|
|
106
|
+
|
|
107
|
+
### Keywords with Low Quality Score
|
|
108
|
+
\`\`\`
|
|
109
|
+
SELECT ad_group_criterion.keyword.text,
|
|
110
|
+
ad_group_criterion.keyword.match_type,
|
|
111
|
+
ad_group_criterion.quality_info.quality_score,
|
|
112
|
+
metrics.impressions, metrics.clicks, metrics.average_cpc
|
|
113
|
+
FROM keyword_view
|
|
114
|
+
WHERE ad_group_criterion.quality_info.quality_score < 5
|
|
115
|
+
AND segments.date DURING LAST_30_DAYS
|
|
116
|
+
ORDER BY metrics.impressions DESC
|
|
117
|
+
\`\`\`
|
|
118
|
+
|
|
119
|
+
### Daily Campaign Spend
|
|
120
|
+
\`\`\`
|
|
121
|
+
SELECT campaign.name, segments.date,
|
|
122
|
+
metrics.cost_micros, metrics.impressions, metrics.clicks
|
|
123
|
+
FROM campaign
|
|
124
|
+
WHERE segments.date DURING LAST_14_DAYS
|
|
125
|
+
AND campaign.status = 'ENABLED'
|
|
126
|
+
ORDER BY segments.date DESC
|
|
127
|
+
\`\`\`
|
|
128
|
+
|
|
129
|
+
### Device Breakdown
|
|
130
|
+
\`\`\`
|
|
131
|
+
SELECT campaign.name, segments.device,
|
|
132
|
+
metrics.impressions, metrics.clicks, metrics.ctr
|
|
133
|
+
FROM campaign
|
|
134
|
+
WHERE segments.date DURING LAST_7_DAYS
|
|
135
|
+
AND campaign.status = 'ENABLED'
|
|
136
|
+
\`\`\`
|
|
137
|
+
|
|
138
|
+
## Important Notes
|
|
139
|
+
|
|
140
|
+
- **Micros**: All monetary values are in micros. Divide by 1,000,000 for display currency.
|
|
141
|
+
- **Segment compatibility**: Not all segments can be combined. Use Google Ads FieldService for validation.
|
|
142
|
+
- **Date segments**: Adding \`segments.date\` returns one row per entity per day.
|
|
143
|
+
- **Resource limits**: Queries return max 10,000 rows by default; use \`LIMIT\` to control.
|
|
144
|
+
- **Removed entities**: By default, REMOVED entities are excluded. Add \`PARAMETERS include_drafts=true\` to include them.
|
|
145
|
+
`;
|
|
146
|
+
}
|
|
147
|
+
export const gaqlReferenceResource = {
|
|
148
|
+
uri: "gaql-reference://syntax",
|
|
149
|
+
name: "GAQL Syntax Reference",
|
|
150
|
+
description: "Google Ads Query Language syntax guide with common query patterns, operators, metrics, and segments",
|
|
151
|
+
mimeType: "text/markdown",
|
|
152
|
+
getContent: () => {
|
|
153
|
+
cachedContent ??= buildGaqlReferenceMarkdown();
|
|
154
|
+
return cachedContent;
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
//# sourceMappingURL=gaql-reference.resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gaql-reference.resource.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/gaql-reference.resource.ts"],"names":[],"mappings":"AAUA,IAAI,aAAiC,CAAC;AAEtC,SAAS,0BAA0B;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8IR,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAa;IAC7C,GAAG,EAAE,yBAAyB;IAC9B,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EACT,qGAAqG;IACvG,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,GAAG,EAAE;QACf,aAAa,KAAK,0BAA0B,EAAE,CAAC;QAC/C,OAAO,aAAa,CAAC;IACvB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { entityHierarchyResource } from "./entity-hierarchy.resource.js";
|
|
2
|
+
export { entitySchemaResources, entitySchemaAllResource } from "./entity-schemas.resource.js";
|
|
3
|
+
export { entityExampleResources, entityExampleAllResource } from "./entity-examples.resource.js";
|
|
4
|
+
export { gaqlReferenceResource } from "./gaql-reference.resource.js";
|
|
5
|
+
export { insightsReferenceResource } from "./insights-reference.resource.js";
|
|
6
|
+
import type { Resource } from "../types.js";
|
|
7
|
+
export declare const allResources: Resource[];
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAS7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAwB5C,eAAO,MAAM,YAAY,EAAE,QAAQ,EAUlC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export { entityHierarchyResource } from "./entity-hierarchy.resource.js";
|
|
2
|
+
export { entitySchemaResources, entitySchemaAllResource } from "./entity-schemas.resource.js";
|
|
3
|
+
export { entityExampleResources, entityExampleAllResource } from "./entity-examples.resource.js";
|
|
4
|
+
export { gaqlReferenceResource } from "./gaql-reference.resource.js";
|
|
5
|
+
export { insightsReferenceResource } from "./insights-reference.resource.js";
|
|
6
|
+
import { entityHierarchyResource } from "./entity-hierarchy.resource.js";
|
|
7
|
+
import { entitySchemaResources, entitySchemaAllResource } from "./entity-schemas.resource.js";
|
|
8
|
+
import { entityExampleResources, entityExampleAllResource } from "./entity-examples.resource.js";
|
|
9
|
+
import { gaqlReferenceResource } from "./gaql-reference.resource.js";
|
|
10
|
+
import { insightsReferenceResource } from "./insights-reference.resource.js";
|
|
11
|
+
import { allTools } from "../../tools/definitions/index.js";
|
|
12
|
+
import { createToolExamplesResource, createServerCapabilitiesResource } from "@cesteral/shared";
|
|
13
|
+
const toolExamplesResource = createToolExamplesResource(allTools, "gads-mcp");
|
|
14
|
+
const serverCapabilitiesResource = createServerCapabilitiesResource({
|
|
15
|
+
serverName: "gads-mcp",
|
|
16
|
+
toolGroups: {
|
|
17
|
+
read: [
|
|
18
|
+
"gads_gaql_search",
|
|
19
|
+
"gads_list_accounts",
|
|
20
|
+
"gads_get_entity",
|
|
21
|
+
"gads_list_entities",
|
|
22
|
+
"gads_get_insights",
|
|
23
|
+
],
|
|
24
|
+
write: ["gads_create_entity", "gads_update_entity", "gads_remove_entity"],
|
|
25
|
+
bulk: ["gads_bulk_mutate", "gads_bulk_update_status", "gads_adjust_bids"],
|
|
26
|
+
validation: ["gads_validate_entity"],
|
|
27
|
+
},
|
|
28
|
+
commonWorkflows: ["campaign_setup", "performance_analysis", "bulk_status_update"],
|
|
29
|
+
startHere: "gads_list_accounts",
|
|
30
|
+
});
|
|
31
|
+
export const allResources = [
|
|
32
|
+
entityHierarchyResource,
|
|
33
|
+
entitySchemaAllResource,
|
|
34
|
+
...entitySchemaResources,
|
|
35
|
+
entityExampleAllResource,
|
|
36
|
+
...entityExampleResources,
|
|
37
|
+
gaqlReferenceResource,
|
|
38
|
+
insightsReferenceResource,
|
|
39
|
+
...(toolExamplesResource ? [toolExamplesResource] : []),
|
|
40
|
+
serverCapabilitiesResource,
|
|
41
|
+
];
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAC9F,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AAGhG,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC9E,MAAM,0BAA0B,GAAG,gCAAgC,CAAC;IAClE,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,kBAAkB;YAClB,oBAAoB;YACpB,iBAAiB;YACjB,oBAAoB;YACpB,mBAAmB;SACpB;QACD,KAAK,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,oBAAoB,CAAC;QACzE,IAAI,EAAE,CAAC,kBAAkB,EAAE,yBAAyB,EAAE,kBAAkB,CAAC;QACzE,UAAU,EAAE,CAAC,sBAAsB,CAAC;KACrC;IACD,eAAe,EAAE,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,oBAAoB,CAAC;IACjF,SAAS,EAAE,oBAAoB;CAChC,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,YAAY,GAAe;IACtC,uBAAuB;IACvB,uBAAuB;IACvB,GAAG,qBAAqB;IACxB,wBAAwB;IACxB,GAAG,sBAAsB;IACzB,qBAAqB;IACrB,yBAAyB;IACzB,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,oBAA2C,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,0BAAiD;CAClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insights-reference.resource.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/definitions/insights-reference.resource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,eAAO,MAAM,yBAAyB,EAAE,QA6EvC,CAAC"}
|