@cesteral/ttd-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 +308 -0
- package/dist/auth/index.d.ts +3 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +3 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/ttd-auth-adapter.d.ts +21 -0
- package/dist/auth/ttd-auth-adapter.d.ts.map +1 -0
- package/dist/auth/ttd-auth-adapter.js +70 -0
- package/dist/auth/ttd-auth-adapter.js.map +1 -0
- package/dist/auth/ttd-auth-strategy.d.ts +10 -0
- package/dist/auth/ttd-auth-strategy.d.ts.map +1 -0
- package/dist/auth/ttd-auth-strategy.js +28 -0
- package/dist/auth/ttd-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 +47 -0
- package/dist/config/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -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 +286 -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 +245 -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 +102 -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 +215 -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 +162 -0
- package/dist/mcp-server/prompts/definitions/entity-update-workflow.prompt.js.map +1 -0
- package/dist/mcp-server/prompts/definitions/report-generation-workflow.prompt.d.ts +4 -0
- package/dist/mcp-server/prompts/definitions/report-generation-workflow.prompt.d.ts.map +1 -0
- package/dist/mcp-server/prompts/definitions/report-generation-workflow.prompt.js +163 -0
- package/dist/mcp-server/prompts/definitions/report-generation-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 +259 -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 +193 -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 +119 -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 +388 -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 +145 -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 +318 -0
- package/dist/mcp-server/resources/definitions/entity-schemas.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/field-rules.resource.d.ts +3 -0
- package/dist/mcp-server/resources/definitions/field-rules.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/field-rules.resource.js +28 -0
- package/dist/mcp-server/resources/definitions/field-rules.resource.js.map +1 -0
- package/dist/mcp-server/resources/definitions/graphql-reference.resource.d.ts +3 -0
- package/dist/mcp-server/resources/definitions/graphql-reference.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/graphql-reference.resource.js +442 -0
- package/dist/mcp-server/resources/definitions/graphql-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 +108 -0
- package/dist/mcp-server/resources/definitions/index.js.map +1 -0
- package/dist/mcp-server/resources/definitions/report-reference.resource.d.ts +3 -0
- package/dist/mcp-server/resources/definitions/report-reference.resource.d.ts.map +1 -0
- package/dist/mcp-server/resources/definitions/report-reference.resource.js +291 -0
- package/dist/mcp-server/resources/definitions/report-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/resources/utils/field-rules.d.ts +18 -0
- package/dist/mcp-server/resources/utils/field-rules.d.ts.map +1 -0
- package/dist/mcp-server/resources/utils/field-rules.js +117 -0
- package/dist/mcp-server/resources/utils/field-rules.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 +162 -0
- package/dist/mcp-server/server.js.map +1 -0
- package/dist/mcp-server/tools/definitions/adjust-bids.tool.d.ts +1137 -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 +165 -0
- package/dist/mcp-server/tools/definitions/adjust-bids.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/archive-entities.tool.d.ts +145 -0
- package/dist/mcp-server/tools/definitions/archive-entities.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/archive-entities.tool.js +120 -0
- package/dist/mcp-server/tools/definitions/archive-entities.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.d.ts +174 -0
- package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.js +141 -0
- package/dist/mcp-server/tools/definitions/bid-list-bulk.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bid-list.tool.d.ts +225 -0
- package/dist/mcp-server/tools/definitions/bid-list.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bid-list.tool.js +169 -0
- package/dist/mcp-server/tools/definitions/bid-list.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.d.ts +198 -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 +135 -0
- package/dist/mcp-server/tools/definitions/bulk-create-entities.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts +258 -0
- package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js +187 -0
- package/dist/mcp-server/tools/definitions/bulk-update-entities.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/bulk-update-status.tool.d.ts +170 -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 +137 -0
- package/dist/mcp-server/tools/definitions/bulk-update-status.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.d.ts +109 -0
- package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.js +134 -0
- package/dist/mcp-server/tools/definitions/cancel-report-execution.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts +112 -0
- package/dist/mcp-server/tools/definitions/check-report-status.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/check-report-status.tool.js +94 -0
- package/dist/mcp-server/tools/definitions/check-report-status.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.d.ts +181 -0
- package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.js +52 -0
- package/dist/mcp-server/tools/definitions/create-ad-group-workflow.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.d.ts +300 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.js +63 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups.tool.d.ts +482 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups.tool.js +121 -0
- package/dist/mcp-server/tools/definitions/create-ad-groups.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.d.ts +172 -0
- package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.js +55 -0
- package/dist/mcp-server/tools/definitions/create-campaign-workflow.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.d.ts +286 -0
- package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.js +63 -0
- package/dist/mcp-server/tools/definitions/create-campaigns-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-campaigns.tool.d.ts +458 -0
- package/dist/mcp-server/tools/definitions/create-campaigns.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-campaigns.tool.js +124 -0
- package/dist/mcp-server/tools/definitions/create-campaigns.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-entity.tool.d.ts +196 -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 +126 -0
- package/dist/mcp-server/tools/definitions/create-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-report-schedule.tool.d.ts +147 -0
- package/dist/mcp-server/tools/definitions/create-report-schedule.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-report-schedule.tool.js +171 -0
- package/dist/mcp-server/tools/definitions/create-report-schedule.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-report-template.tool.d.ts +370 -0
- package/dist/mcp-server/tools/definitions/create-report-template.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-report-template.tool.js +224 -0
- package/dist/mcp-server/tools/definitions/create-report-template.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/create-template-schedule.tool.d.ts +316 -0
- package/dist/mcp-server/tools/definitions/create-template-schedule.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/create-template-schedule.tool.js +247 -0
- package/dist/mcp-server/tools/definitions/create-template-schedule.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts +147 -0
- package/dist/mcp-server/tools/definitions/delete-entity.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/delete-entity.tool.js +112 -0
- package/dist/mcp-server/tools/definitions/delete-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.d.ts +79 -0
- package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.js +89 -0
- package/dist/mcp-server/tools/definitions/delete-report-schedule.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/download-report.tool.d.ts +297 -0
- package/dist/mcp-server/tools/definitions/download-report.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/download-report.tool.js +160 -0
- package/dist/mcp-server/tools/definitions/download-report.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/execute-entity-report.tool.d.ts +147 -0
- package/dist/mcp-server/tools/definitions/execute-entity-report.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/execute-entity-report.tool.js +134 -0
- package/dist/mcp-server/tools/definitions/execute-entity-report.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-ad-preview.tool.d.ts +80 -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 +82 -0
- package/dist/mcp-server/tools/definitions/get-ad-preview.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-campaign-version.tool.d.ts +61 -0
- package/dist/mcp-server/tools/definitions/get-campaign-version.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-campaign-version.tool.js +51 -0
- package/dist/mcp-server/tools/definitions/get-campaign-version.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-context.tool.d.ts +77 -0
- package/dist/mcp-server/tools/definitions/get-context.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-context.tool.js +80 -0
- package/dist/mcp-server/tools/definitions/get-context.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.d.ts +169 -0
- package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.js +138 -0
- package/dist/mcp-server/tools/definitions/get-entity-report-types.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-entity.tool.d.ts +129 -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 +88 -0
- package/dist/mcp-server/tools/definitions/get-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.d.ts +110 -0
- package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.js +58 -0
- package/dist/mcp-server/tools/definitions/get-first-party-data-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-job-status.tool.d.ts +61 -0
- package/dist/mcp-server/tools/definitions/get-job-status.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-job-status.tool.js +54 -0
- package/dist/mcp-server/tools/definitions/get-job-status.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-executions.tool.d.ts +131 -0
- package/dist/mcp-server/tools/definitions/get-report-executions.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-executions.tool.js +253 -0
- package/dist/mcp-server/tools/definitions/get-report-executions.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-schedule.tool.d.ts +197 -0
- package/dist/mcp-server/tools/definitions/get-report-schedule.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-schedule.tool.js +66 -0
- package/dist/mcp-server/tools/definitions/get-report-schedule.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-template.tool.d.ts +303 -0
- package/dist/mcp-server/tools/definitions/get-report-template.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-template.tool.js +139 -0
- package/dist/mcp-server/tools/definitions/get-report-template.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.d.ts +152 -0
- package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.js +167 -0
- package/dist/mcp-server/tools/definitions/get-report-type-schema.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report.tool.d.ts +126 -0
- package/dist/mcp-server/tools/definitions/get-report.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-report.tool.js +138 -0
- package/dist/mcp-server/tools/definitions/get-report.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.d.ts +104 -0
- package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.js +57 -0
- package/dist/mcp-server/tools/definitions/get-third-party-data-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.d.ts +92 -0
- package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.js +124 -0
- package/dist/mcp-server/tools/definitions/graphql-bulk-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.d.ts +68 -0
- package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.js +102 -0
- package/dist/mcp-server/tools/definitions/graphql-cancel-bulk-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.d.ts +102 -0
- package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.js +152 -0
- package/dist/mcp-server/tools/definitions/graphql-mutation-bulk.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.d.ts +93 -0
- package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.js +133 -0
- package/dist/mcp-server/tools/definitions/graphql-query-bulk.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-query.tool.d.ts +189 -0
- package/dist/mcp-server/tools/definitions/graphql-query.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/graphql-query.tool.js +143 -0
- package/dist/mcp-server/tools/definitions/graphql-query.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/index.d.ts +45 -0
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/index.js +135 -0
- package/dist/mcp-server/tools/definitions/index.js.map +1 -0
- package/dist/mcp-server/tools/definitions/list-entities.tool.d.ts +231 -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 +147 -0
- package/dist/mcp-server/tools/definitions/list-entities.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/list-report-schedules.tool.d.ts +282 -0
- package/dist/mcp-server/tools/definitions/list-report-schedules.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/list-report-schedules.tool.js +128 -0
- package/dist/mcp-server/tools/definitions/list-report-schedules.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/list-report-templates.tool.d.ts +140 -0
- package/dist/mcp-server/tools/definitions/list-report-templates.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/list-report-templates.tool.js +118 -0
- package/dist/mcp-server/tools/definitions/list-report-templates.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/list-report-types.tool.d.ts +97 -0
- package/dist/mcp-server/tools/definitions/list-report-types.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/list-report-types.tool.js +89 -0
- package/dist/mcp-server/tools/definitions/list-report-types.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.d.ts +109 -0
- package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.js +130 -0
- package/dist/mcp-server/tools/definitions/rerun-report-schedule.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/rest-request.tool.d.ts +74 -0
- package/dist/mcp-server/tools/definitions/rest-request.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/rest-request.tool.js +54 -0
- package/dist/mcp-server/tools/definitions/rest-request.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/seed.tool.d.ts +156 -0
- package/dist/mcp-server/tools/definitions/seed.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/seed.tool.js +316 -0
- package/dist/mcp-server/tools/definitions/seed.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts +114 -0
- package/dist/mcp-server/tools/definitions/submit-report.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/submit-report.tool.js +136 -0
- package/dist/mcp-server/tools/definitions/submit-report.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.d.ts +82 -0
- package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.js +51 -0
- package/dist/mcp-server/tools/definitions/update-ad-group-workflow.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.d.ts +158 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.js +63 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups.tool.d.ts +241 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups.tool.js +120 -0
- package/dist/mcp-server/tools/definitions/update-ad-groups.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.d.ts +82 -0
- package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.js +53 -0
- package/dist/mcp-server/tools/definitions/update-campaign-workflow.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.d.ts +158 -0
- package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.js +63 -0
- package/dist/mcp-server/tools/definitions/update-campaigns-job.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-campaigns.tool.d.ts +241 -0
- package/dist/mcp-server/tools/definitions/update-campaigns.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-campaigns.tool.js +120 -0
- package/dist/mcp-server/tools/definitions/update-campaigns.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-entity.tool.d.ts +164 -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 +101 -0
- package/dist/mcp-server/tools/definitions/update-entity.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-report-schedule.tool.d.ts +116 -0
- package/dist/mcp-server/tools/definitions/update-report-schedule.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-report-schedule.tool.js +134 -0
- package/dist/mcp-server/tools/definitions/update-report-schedule.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/update-report-template.tool.d.ts +358 -0
- package/dist/mcp-server/tools/definitions/update-report-template.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/update-report-template.tool.js +156 -0
- package/dist/mcp-server/tools/definitions/update-report-template.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/validate-entity.tool.d.ts +226 -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 +205 -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/entity-mapping.d.ts +18 -0
- package/dist/mcp-server/tools/utils/entity-mapping.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/entity-mapping.js +66 -0
- package/dist/mcp-server/tools/utils/entity-mapping.js.map +1 -0
- package/dist/mcp-server/tools/utils/graphql-errors.d.ts +13 -0
- package/dist/mcp-server/tools/utils/graphql-errors.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/graphql-errors.js +48 -0
- package/dist/mcp-server/tools/utils/graphql-errors.js.map +1 -0
- package/dist/mcp-server/tools/utils/parent-id-validation.d.ts +11 -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 +60 -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/tools/utils/workflow-schemas.d.ts +646 -0
- package/dist/mcp-server/tools/utils/workflow-schemas.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/workflow-schemas.js +173 -0
- package/dist/mcp-server/tools/utils/workflow-schemas.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 +74 -0
- package/dist/mcp-server/transports/streamable-http-transport.js.map +1 -0
- package/dist/services/session-services.d.ts +22 -0
- package/dist/services/session-services.d.ts.map +1 -0
- package/dist/services/session-services.js +24 -0
- package/dist/services/session-services.js.map +1 -0
- package/dist/services/ttd/ttd-http-client.d.ts +13 -0
- package/dist/services/ttd/ttd-http-client.d.ts.map +1 -0
- package/dist/services/ttd/ttd-http-client.js +70 -0
- package/dist/services/ttd/ttd-http-client.js.map +1 -0
- package/dist/services/ttd/ttd-reporting-service.d.ts +79 -0
- package/dist/services/ttd/ttd-reporting-service.d.ts.map +1 -0
- package/dist/services/ttd/ttd-reporting-service.js +180 -0
- package/dist/services/ttd/ttd-reporting-service.js.map +1 -0
- package/dist/services/ttd/ttd-service.d.ts +107 -0
- package/dist/services/ttd/ttd-service.d.ts.map +1 -0
- package/dist/services/ttd/ttd-service.js +307 -0
- package/dist/services/ttd/ttd-service.js.map +1 -0
- package/dist/services/ttd/types.d.ts +153 -0
- package/dist/services/ttd/types.d.ts.map +1 -0
- package/dist/services/ttd/types.js +30 -0
- package/dist/services/ttd/types.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,28 @@
|
|
|
1
|
+
import { TtdDirectTokenAuthAdapter, parseTtdDirectTokenFromHeaders, getTtdDirectTokenFingerprint, } from "./ttd-auth-adapter.js";
|
|
2
|
+
export class TtdTokenAuthStrategy {
|
|
3
|
+
graphqlUrl;
|
|
4
|
+
logger;
|
|
5
|
+
constructor(graphqlUrl, logger) {
|
|
6
|
+
this.graphqlUrl = graphqlUrl;
|
|
7
|
+
this.logger = logger;
|
|
8
|
+
}
|
|
9
|
+
async verify(headers) {
|
|
10
|
+
const credentials = parseTtdDirectTokenFromHeaders(headers);
|
|
11
|
+
const adapter = new TtdDirectTokenAuthAdapter(credentials.token, "direct-token", this.graphqlUrl);
|
|
12
|
+
await adapter.validate();
|
|
13
|
+
this.logger?.debug("TTD direct API token accepted");
|
|
14
|
+
return {
|
|
15
|
+
authInfo: {
|
|
16
|
+
clientId: "ttd-direct-token",
|
|
17
|
+
authType: "ttd-token",
|
|
18
|
+
},
|
|
19
|
+
platformAuthAdapter: adapter,
|
|
20
|
+
credentialFingerprint: getTtdDirectTokenFingerprint(credentials),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
async getCredentialFingerprint(headers) {
|
|
24
|
+
const credentials = parseTtdDirectTokenFromHeaders(headers);
|
|
25
|
+
return getTtdDirectTokenFingerprint(credentials);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=ttd-auth-strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ttd-auth-strategy.js","sourceRoot":"","sources":["../../src/auth/ttd-auth-strategy.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAE/B,MAAM,OAAO,oBAAoB;IAEZ;IACA;IAFnB,YACmB,UAAkB,EAClB,MAAe;QADf,eAAU,GAAV,UAAU,CAAQ;QAClB,WAAM,GAAN,MAAM,CAAS;IAC/B,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,OAAsD;QACjE,MAAM,WAAW,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,yBAAyB,CAC3C,WAAW,CAAC,KAAK,EACjB,cAAc,EACd,IAAI,CAAC,UAAU,CAChB,CAAC;QACF,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QAEzB,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAEpD,OAAO;YACL,QAAQ,EAAE;gBACR,QAAQ,EAAE,kBAAkB;gBAC5B,QAAQ,EAAE,WAAW;aACtB;YACD,mBAAmB,EAAE,OAAO;YAC5B,qBAAqB,EAAE,4BAA4B,CAAC,WAAW,CAAC;SACjE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC5B,OAAsD;QAEtD,MAAM,WAAW,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,4BAA4B,CAAC,WAAW,CAAC,CAAC;IACnD,CAAC;CACF"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const ConfigSchema: z.ZodObject<{
|
|
3
|
+
host: z.ZodDefault<z.ZodString>;
|
|
4
|
+
nodeEnv: z.ZodDefault<z.ZodEnum<["development", "production", "test"]>>;
|
|
5
|
+
mcpStatefulSessionTimeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
6
|
+
mcpAuthSecretKey: z.ZodOptional<z.ZodString>;
|
|
7
|
+
mcpAllowedOrigins: z.ZodOptional<z.ZodString>;
|
|
8
|
+
logLevel: z.ZodDefault<z.ZodEnum<["debug", "info", "notice", "warning", "error"]>>;
|
|
9
|
+
mcpLogLevel: z.ZodDefault<z.ZodEnum<["debug", "info", "notice", "warning", "error"]>>;
|
|
10
|
+
otelEnabled: z.ZodDefault<z.ZodBoolean>;
|
|
11
|
+
otelExporterOtlpTracesEndpoint: z.ZodOptional<z.ZodString>;
|
|
12
|
+
otelExporterOtlpMetricsEndpoint: z.ZodOptional<z.ZodString>;
|
|
13
|
+
gcsBucketName: z.ZodOptional<z.ZodString>;
|
|
14
|
+
} & {
|
|
15
|
+
serviceName: z.ZodDefault<z.ZodString>;
|
|
16
|
+
port: z.ZodDefault<z.ZodNumber>;
|
|
17
|
+
otelServiceName: z.ZodDefault<z.ZodString>;
|
|
18
|
+
mcpAuthMode: z.ZodDefault<z.ZodEnum<["ttd-token", "jwt", "none"]>>;
|
|
19
|
+
ttdUseSandbox: z.ZodDefault<z.ZodBoolean>;
|
|
20
|
+
ttdApiBaseUrl: z.ZodDefault<z.ZodString>;
|
|
21
|
+
ttdGraphqlUrl: z.ZodDefault<z.ZodString>;
|
|
22
|
+
ttdRateLimitPerMinute: z.ZodDefault<z.ZodNumber>;
|
|
23
|
+
ttdApiToken: z.ZodOptional<z.ZodString>;
|
|
24
|
+
ttdReportPollIntervalMs: z.ZodDefault<z.ZodNumber>;
|
|
25
|
+
ttdReportMaxPollAttempts: z.ZodDefault<z.ZodNumber>;
|
|
26
|
+
}, "strip", z.ZodTypeAny, {
|
|
27
|
+
serviceName: string;
|
|
28
|
+
port: number;
|
|
29
|
+
otelServiceName: string;
|
|
30
|
+
mcpAuthMode: "ttd-token" | "jwt" | "none";
|
|
31
|
+
ttdUseSandbox: boolean;
|
|
32
|
+
ttdApiBaseUrl: string;
|
|
33
|
+
ttdGraphqlUrl: string;
|
|
34
|
+
ttdRateLimitPerMinute: number;
|
|
35
|
+
ttdReportPollIntervalMs: number;
|
|
36
|
+
ttdReportMaxPollAttempts: number;
|
|
37
|
+
host: string;
|
|
38
|
+
nodeEnv: "development" | "production" | "test";
|
|
39
|
+
mcpStatefulSessionTimeoutMs: number;
|
|
40
|
+
logLevel: "debug" | "info" | "notice" | "warning" | "error";
|
|
41
|
+
mcpLogLevel: "debug" | "info" | "notice" | "warning" | "error";
|
|
42
|
+
otelEnabled: boolean;
|
|
43
|
+
ttdApiToken?: string | undefined;
|
|
44
|
+
mcpAuthSecretKey?: string | undefined;
|
|
45
|
+
mcpAllowedOrigins?: string | undefined;
|
|
46
|
+
otelExporterOtlpTracesEndpoint?: string | undefined;
|
|
47
|
+
otelExporterOtlpMetricsEndpoint?: string | undefined;
|
|
48
|
+
gcsBucketName?: string | undefined;
|
|
49
|
+
}, {
|
|
50
|
+
serviceName?: string | undefined;
|
|
51
|
+
port?: number | undefined;
|
|
52
|
+
otelServiceName?: string | undefined;
|
|
53
|
+
mcpAuthMode?: "ttd-token" | "jwt" | "none" | undefined;
|
|
54
|
+
ttdUseSandbox?: boolean | undefined;
|
|
55
|
+
ttdApiBaseUrl?: string | undefined;
|
|
56
|
+
ttdGraphqlUrl?: string | undefined;
|
|
57
|
+
ttdRateLimitPerMinute?: number | undefined;
|
|
58
|
+
ttdApiToken?: string | undefined;
|
|
59
|
+
ttdReportPollIntervalMs?: number | undefined;
|
|
60
|
+
ttdReportMaxPollAttempts?: number | undefined;
|
|
61
|
+
host?: string | undefined;
|
|
62
|
+
nodeEnv?: "development" | "production" | "test" | undefined;
|
|
63
|
+
mcpStatefulSessionTimeoutMs?: number | undefined;
|
|
64
|
+
mcpAuthSecretKey?: string | undefined;
|
|
65
|
+
mcpAllowedOrigins?: string | undefined;
|
|
66
|
+
logLevel?: "debug" | "info" | "notice" | "warning" | "error" | undefined;
|
|
67
|
+
mcpLogLevel?: "debug" | "info" | "notice" | "warning" | "error" | undefined;
|
|
68
|
+
otelEnabled?: boolean | undefined;
|
|
69
|
+
otelExporterOtlpTracesEndpoint?: string | undefined;
|
|
70
|
+
otelExporterOtlpMetricsEndpoint?: string | undefined;
|
|
71
|
+
gcsBucketName?: string | undefined;
|
|
72
|
+
}>;
|
|
73
|
+
export type AppConfig = z.infer<typeof ConfigSchema>;
|
|
74
|
+
export declare function parseConfig(): AppConfig;
|
|
75
|
+
export declare const mcpConfig: {
|
|
76
|
+
serviceName: string;
|
|
77
|
+
port: number;
|
|
78
|
+
otelServiceName: string;
|
|
79
|
+
mcpAuthMode: "ttd-token" | "jwt" | "none";
|
|
80
|
+
ttdUseSandbox: boolean;
|
|
81
|
+
ttdApiBaseUrl: string;
|
|
82
|
+
ttdGraphqlUrl: string;
|
|
83
|
+
ttdRateLimitPerMinute: number;
|
|
84
|
+
ttdReportPollIntervalMs: number;
|
|
85
|
+
ttdReportMaxPollAttempts: number;
|
|
86
|
+
host: string;
|
|
87
|
+
nodeEnv: "development" | "production" | "test";
|
|
88
|
+
mcpStatefulSessionTimeoutMs: number;
|
|
89
|
+
logLevel: "debug" | "info" | "notice" | "warning" | "error";
|
|
90
|
+
mcpLogLevel: "debug" | "info" | "notice" | "warning" | "error";
|
|
91
|
+
otelEnabled: boolean;
|
|
92
|
+
ttdApiToken?: string | undefined;
|
|
93
|
+
mcpAuthSecretKey?: string | undefined;
|
|
94
|
+
mcpAllowedOrigins?: string | undefined;
|
|
95
|
+
otelExporterOtlpTracesEndpoint?: string | undefined;
|
|
96
|
+
otelExporterOtlpMetricsEndpoint?: string | undefined;
|
|
97
|
+
gcsBucketName?: string | undefined;
|
|
98
|
+
};
|
|
99
|
+
export {};
|
|
100
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4BhB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAErD,wBAAgB,WAAW,IAAI,SAAS,CAwCvC;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;CAAgB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { loadDotEnv, BaseConfigSchema, getBaseEnvConfig, parseConfigWithSchema, getDefaultHost, } from "@cesteral/shared";
|
|
3
|
+
loadDotEnv();
|
|
4
|
+
const ConfigSchema = BaseConfigSchema.extend({
|
|
5
|
+
serviceName: z.string().default("ttd-mcp"),
|
|
6
|
+
port: z.number().int().min(1).max(65535).default(3003),
|
|
7
|
+
otelServiceName: z.string().default("ttd-mcp"),
|
|
8
|
+
mcpAuthMode: z.enum(["ttd-token", "jwt", "none"]).default("ttd-token"),
|
|
9
|
+
ttdUseSandbox: z.boolean().default(false),
|
|
10
|
+
ttdApiBaseUrl: z.string().url().default("https://api.thetradedesk.com/v3"),
|
|
11
|
+
ttdGraphqlUrl: z.string().url().default("https://desk.thetradedesk.com/graphql"),
|
|
12
|
+
ttdRateLimitPerMinute: z.number().default(60),
|
|
13
|
+
ttdApiToken: z.string().optional(),
|
|
14
|
+
ttdReportPollIntervalMs: z.number().int().min(1000).default(2000),
|
|
15
|
+
ttdReportMaxPollAttempts: z.number().int().min(1).default(60),
|
|
16
|
+
});
|
|
17
|
+
export function parseConfig() {
|
|
18
|
+
const defaultHost = getDefaultHost();
|
|
19
|
+
const rawConfig = {
|
|
20
|
+
...getBaseEnvConfig(defaultHost),
|
|
21
|
+
serviceName: process.env.SERVICE_NAME,
|
|
22
|
+
...(process.env.TTD_MCP_PORT ? { port: Number(process.env.TTD_MCP_PORT) } : {}),
|
|
23
|
+
host: process.env.TTD_MCP_HOST || defaultHost,
|
|
24
|
+
ttdUseSandbox: process.env.TTD_USE_SANDBOX === "true",
|
|
25
|
+
ttdApiBaseUrl: process.env.TTD_API_BASE_URL ||
|
|
26
|
+
(process.env.TTD_USE_SANDBOX === "true"
|
|
27
|
+
? "https://ext-api.sb.thetradedesk.com/v3"
|
|
28
|
+
: undefined),
|
|
29
|
+
ttdGraphqlUrl: process.env.TTD_GRAPHQL_URL ||
|
|
30
|
+
(process.env.TTD_USE_SANDBOX === "true"
|
|
31
|
+
? "https://ext-api.sb.thetradedesk.com/graphql"
|
|
32
|
+
: undefined),
|
|
33
|
+
ttdRateLimitPerMinute: process.env.TTD_RATE_LIMIT_PER_MINUTE
|
|
34
|
+
? Number(process.env.TTD_RATE_LIMIT_PER_MINUTE)
|
|
35
|
+
: undefined,
|
|
36
|
+
ttdApiToken: process.env.TTD_API_TOKEN,
|
|
37
|
+
ttdReportPollIntervalMs: process.env.TTD_REPORT_POLL_INTERVAL_MS
|
|
38
|
+
? parseInt(process.env.TTD_REPORT_POLL_INTERVAL_MS, 10)
|
|
39
|
+
: undefined,
|
|
40
|
+
ttdReportMaxPollAttempts: process.env.TTD_REPORT_MAX_POLL_ATTEMPTS
|
|
41
|
+
? parseInt(process.env.TTD_REPORT_MAX_POLL_ATTEMPTS, 10)
|
|
42
|
+
: undefined,
|
|
43
|
+
};
|
|
44
|
+
return parseConfigWithSchema(ConfigSchema, rawConfig);
|
|
45
|
+
}
|
|
46
|
+
export const mcpConfig = parseConfig();
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAG1B,UAAU,EAAE,CAAC;AAEb,MAAM,YAAY,GAAG,gBAAgB,CAAC,MAAM,CAAC;IAE3C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACtD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;IAG9C,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAMtE,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACzC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,iCAAiC,CAAC;IAC1E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC;IAKhF,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAG7C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAGlC,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACjE,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC9D,CAAC,CAAC;AAIH,MAAM,UAAU,WAAW;IACzB,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,MAAM,SAAS,GAA4B;QACzC,GAAG,gBAAgB,CAAC,WAAW,CAAC;QAGhC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;QACrC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,WAAW;QAG7C,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM;QACrD,aAAa,EACX,OAAO,CAAC,GAAG,CAAC,gBAAgB;YAC5B,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM;gBACrC,CAAC,CAAC,wCAAwC;gBAC1C,CAAC,CAAC,SAAS,CAAC;QAChB,aAAa,EACX,OAAO,CAAC,GAAG,CAAC,eAAe;YAC3B,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM;gBACrC,CAAC,CAAC,6CAA6C;gBAC/C,CAAC,CAAC,SAAS,CAAC;QAChB,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;YAC1D,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC;YAC/C,CAAC,CAAC,SAAS;QAGb,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;QAGtC,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B;YAC9D,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,EAAE,CAAC;YACvD,CAAC,CAAC,SAAS;QACb,wBAAwB,EAAE,OAAO,CAAC,GAAG,CAAC,4BAA4B;YAChE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,EAAE,CAAC;YACxD,CAAC,CAAC,SAAS;KACd,CAAC;IAEF,OAAO,qBAAqB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,EAAE,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { mcpConfig } from "./config/index.js";
|
|
3
|
+
import { createMcpServer, runStdioServer } from "./mcp-server/server.js";
|
|
4
|
+
import { startHttpServer } from "./mcp-server/transports/streamable-http-transport.js";
|
|
5
|
+
import { initializeOpenTelemetry, otelLogMixin } from "@cesteral/shared";
|
|
6
|
+
import { TtdDirectTokenAuthAdapter } from "./auth/ttd-auth-adapter.js";
|
|
7
|
+
import { detectTransportMode, createServerLogger, bootstrapMcpServer } from "@cesteral/shared";
|
|
8
|
+
import { createSessionServices, sessionServiceStore } from "./services/session-services.js";
|
|
9
|
+
import { rateLimiter } from "./utils/platform.js";
|
|
10
|
+
const transportMode = detectTransportMode();
|
|
11
|
+
const logger = createServerLogger("ttd-mcp", transportMode, otelLogMixin());
|
|
12
|
+
async function setupStdioCredentials(sessionId) {
|
|
13
|
+
const directToken = mcpConfig.ttdApiToken;
|
|
14
|
+
if (!directToken) {
|
|
15
|
+
logger.warn("No TTD API token found in env vars. Set TTD_API_TOKEN for stdio mode.");
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
const authAdapter = new TtdDirectTokenAuthAdapter(directToken, "direct-token", mcpConfig.ttdGraphqlUrl);
|
|
19
|
+
await authAdapter.validate();
|
|
20
|
+
const services = createSessionServices(authAdapter, {
|
|
21
|
+
baseUrl: mcpConfig.ttdApiBaseUrl,
|
|
22
|
+
graphqlUrl: mcpConfig.ttdGraphqlUrl,
|
|
23
|
+
reportPollIntervalMs: mcpConfig.ttdReportPollIntervalMs,
|
|
24
|
+
reportMaxPollAttempts: mcpConfig.ttdReportMaxPollAttempts,
|
|
25
|
+
}, logger, rateLimiter);
|
|
26
|
+
sessionServiceStore.set(sessionId, services);
|
|
27
|
+
logger.info("Stdio session services created successfully");
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
bootstrapMcpServer({
|
|
31
|
+
serviceName: "ttd-mcp",
|
|
32
|
+
config: mcpConfig,
|
|
33
|
+
logger,
|
|
34
|
+
transportMode,
|
|
35
|
+
initOtel: initializeOpenTelemetry,
|
|
36
|
+
setupStdioSession: setupStdioCredentials,
|
|
37
|
+
createMcpServer,
|
|
38
|
+
runStdio: runStdioServer,
|
|
39
|
+
startHttp: startHttpServer,
|
|
40
|
+
onShutdown: () => rateLimiter.destroy(),
|
|
41
|
+
}).catch((err) => {
|
|
42
|
+
logger.fatal({ err }, "Failed to start ttd-mcp");
|
|
43
|
+
process.exit(1);
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,sDAAsD,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;AAC5C,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;AAM5E,KAAK,UAAU,qBAAqB,CAAC,SAAiB;IACpD,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;IAE1C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,yBAAyB,CAC/C,WAAW,EACX,cAAc,EACd,SAAS,CAAC,aAAa,CACxB,CAAC;IAGF,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;IAE7B,MAAM,QAAQ,GAAG,qBAAqB,CACpC,WAAW,EACX;QACE,OAAO,EAAE,SAAS,CAAC,aAAa;QAChC,UAAU,EAAE,SAAS,CAAC,aAAa;QACnC,oBAAoB,EAAE,SAAS,CAAC,uBAAuB;QACvD,qBAAqB,EAAE,SAAS,CAAC,wBAAwB;KAC1D,EACD,MAAM,EACN,WAAW,CACZ,CAAC;IAEF,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kBAAkB,CAAC;IACjB,WAAW,EAAE,SAAS;IACtB,MAAM,EAAE,SAAS;IACjB,MAAM;IACN,aAAa;IACb,QAAQ,EAAE,uBAAuB;IACjC,iBAAiB,EAAE,qBAAqB;IACxC,eAAe;IACf,QAAQ,EAAE,cAAc;IACxB,SAAS,EAAE,eAAe;IAC1B,UAAU,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE;CACxC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACf,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,yBAAyB,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Prompt } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
export declare const bulkOperationsWorkflowPrompt: Prompt;
|
|
3
|
+
export declare function getBulkOperationsWorkflowMessage(args?: Record<string, string>): string;
|
|
4
|
+
//# sourceMappingURL=bulk-operations-workflow.prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulk-operations-workflow.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAQjE,eAAO,MAAM,4BAA4B,EAAE,MAiB1C,CAAC;AAEF,wBAAgB,gCAAgC,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CA6QtF"}
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
export const bulkOperationsWorkflowPrompt = {
|
|
2
|
+
name: "ttd_bulk_operations_workflow",
|
|
3
|
+
description: "Step-by-step guide for TTD bulk operations: batch create/update campaigns and ad groups, batch status changes, archive entities, batch bid adjustments, and GraphQL bulk jobs. Covers PUT semantics, partial failure handling, and verification.",
|
|
4
|
+
arguments: [
|
|
5
|
+
{
|
|
6
|
+
name: "advertiserId",
|
|
7
|
+
description: "TTD Advertiser ID",
|
|
8
|
+
required: true,
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
name: "operation",
|
|
12
|
+
description: "Operation type: 'create', 'update', 'status', 'archive', 'bids', or 'graphql' (default: status)",
|
|
13
|
+
required: false,
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
};
|
|
17
|
+
export function getBulkOperationsWorkflowMessage(args) {
|
|
18
|
+
const advertiserId = args?.advertiserId || "{advertiserId}";
|
|
19
|
+
const operation = args?.operation || "status";
|
|
20
|
+
return `# TTD Bulk Operations Workflow
|
|
21
|
+
|
|
22
|
+
Advertiser: \`${advertiserId}\`
|
|
23
|
+
Operation: \`${operation}\`
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Overview
|
|
28
|
+
|
|
29
|
+
TTD supports these bulk operation tools:
|
|
30
|
+
|
|
31
|
+
| Tool | Purpose | Max Items |
|
|
32
|
+
|------|---------|-----------|
|
|
33
|
+
| \`ttd_bulk_create_entities\` | Create multiple campaigns or ad groups | 50 |
|
|
34
|
+
| \`ttd_bulk_update_entities\` | Update multiple campaigns or ad groups (PUT) | 50 |
|
|
35
|
+
| \`ttd_bulk_update_status\` | Change status: Available, Paused, Archived | 100 |
|
|
36
|
+
| \`ttd_archive_entities\` | Archive (soft-delete) campaigns or ad groups | 100 |
|
|
37
|
+
| \`ttd_adjust_bids\` | Adjust ad group bid CPMs | 50 |
|
|
38
|
+
| \`ttd_graphql_query_bulk\` | Bulk GraphQL queries (async job) | per job limits |
|
|
39
|
+
| \`ttd_graphql_mutation_bulk\` | Bulk GraphQL mutations (async, non-cancelable) | 1000 |
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Bulk Status Updates
|
|
44
|
+
|
|
45
|
+
### Step 1: Identify Entities
|
|
46
|
+
|
|
47
|
+
\`\`\`json
|
|
48
|
+
{
|
|
49
|
+
"tool": "ttd_list_entities",
|
|
50
|
+
"params": {
|
|
51
|
+
"entityType": "adGroup",
|
|
52
|
+
"advertiserId": "${advertiserId}",
|
|
53
|
+
"campaignId": "{campaignId}"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
\`\`\`
|
|
57
|
+
|
|
58
|
+
### Step 2: Execute Status Change
|
|
59
|
+
|
|
60
|
+
\`\`\`json
|
|
61
|
+
{
|
|
62
|
+
"tool": "ttd_bulk_update_status",
|
|
63
|
+
"params": {
|
|
64
|
+
"entityType": "adGroup",
|
|
65
|
+
"entityIds": ["{adGroupId1}", "{adGroupId2}", "{adGroupId3}"],
|
|
66
|
+
"status": "Paused"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
\`\`\`
|
|
70
|
+
|
|
71
|
+
Valid statuses: \`Available\`, \`Paused\`, \`Archived\`
|
|
72
|
+
|
|
73
|
+
⚠️ **GOTCHA**: TTD uses "Available" (not "Active") for the active state.
|
|
74
|
+
|
|
75
|
+
⚠️ **GOTCHA**: Archiving is **irreversible** — use \`ttd_archive_entities\` or set status to "Archived". Cannot be un-archived.
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Bulk Entity Creation
|
|
80
|
+
|
|
81
|
+
### Step 1: Fetch Schema
|
|
82
|
+
|
|
83
|
+
**Resource:** \`entity-schema://{entityType}\` and \`entity-examples://{entityType}\`
|
|
84
|
+
|
|
85
|
+
### Step 2: Build and Execute
|
|
86
|
+
|
|
87
|
+
\`\`\`json
|
|
88
|
+
{
|
|
89
|
+
"tool": "ttd_bulk_create_entities",
|
|
90
|
+
"params": {
|
|
91
|
+
"entityType": "adGroup",
|
|
92
|
+
"advertiserId": "${advertiserId}",
|
|
93
|
+
"campaignId": "{campaignId}",
|
|
94
|
+
"items": [
|
|
95
|
+
{
|
|
96
|
+
"AdGroupName": "Ad Group - US Targeting",
|
|
97
|
+
"BaseBidCPM": { "Amount": 5.00, "CurrencyCode": "USD" },
|
|
98
|
+
"MaxBidCPM": { "Amount": 10.00, "CurrencyCode": "USD" },
|
|
99
|
+
"RTBAttributes": {
|
|
100
|
+
"BudgetSettings": {
|
|
101
|
+
"DailyBudget": { "Amount": 100.00, "CurrencyCode": "USD" }
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"AdGroupName": "Ad Group - UK Targeting",
|
|
107
|
+
"BaseBidCPM": { "Amount": 4.00, "CurrencyCode": "USD" },
|
|
108
|
+
"MaxBidCPM": { "Amount": 8.00, "CurrencyCode": "USD" },
|
|
109
|
+
"RTBAttributes": {
|
|
110
|
+
"BudgetSettings": {
|
|
111
|
+
"DailyBudget": { "Amount": 75.00, "CurrencyCode": "USD" }
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
\`\`\`
|
|
119
|
+
|
|
120
|
+
⚠️ **GOTCHA**: \`RTBAttributes\` is required for ad groups and must include budget settings.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Bulk Entity Updates
|
|
125
|
+
|
|
126
|
+
### Step 1: Fetch Current State
|
|
127
|
+
|
|
128
|
+
TTD uses **PUT semantics** — the entire entity is replaced. You MUST fetch the current entity first, merge your changes, then send the full payload.
|
|
129
|
+
|
|
130
|
+
\`\`\`json
|
|
131
|
+
{
|
|
132
|
+
"tool": "ttd_get_entity",
|
|
133
|
+
"params": {
|
|
134
|
+
"entityType": "adGroup",
|
|
135
|
+
"entityId": "{adGroupId}"
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
\`\`\`
|
|
139
|
+
|
|
140
|
+
### Step 2: Merge and Execute
|
|
141
|
+
|
|
142
|
+
\`\`\`json
|
|
143
|
+
{
|
|
144
|
+
"tool": "ttd_bulk_update_entities",
|
|
145
|
+
"params": {
|
|
146
|
+
"entityType": "adGroup",
|
|
147
|
+
"advertiserId": "${advertiserId}",
|
|
148
|
+
"campaignId": "{campaignId}",
|
|
149
|
+
"items": [
|
|
150
|
+
{
|
|
151
|
+
"entityId": "{adGroupId1}",
|
|
152
|
+
"data": { "...full entity with your changes merged in..." }
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"entityId": "{adGroupId2}",
|
|
156
|
+
"data": { "...full entity with your changes merged in..." }
|
|
157
|
+
}
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
\`\`\`
|
|
162
|
+
|
|
163
|
+
⚠️ **GOTCHA**: Unlike DV360 (PATCH with updateMask), TTD uses **PUT** (full replacement). Omitting a field resets it to default. Always GET first, then merge changes.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Archive Entities
|
|
168
|
+
|
|
169
|
+
For permanent soft-deletion:
|
|
170
|
+
|
|
171
|
+
\`\`\`json
|
|
172
|
+
{
|
|
173
|
+
"tool": "ttd_archive_entities",
|
|
174
|
+
"params": {
|
|
175
|
+
"entityType": "campaign",
|
|
176
|
+
"entityIds": ["{campaignId1}", "{campaignId2}"]
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
\`\`\`
|
|
180
|
+
|
|
181
|
+
⚠️ **WARNING**: Archiving is irreversible. Consider pausing first if you might want to reactivate later.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Batch Bid Adjustments
|
|
186
|
+
|
|
187
|
+
### Step 1: Review Current Bids
|
|
188
|
+
|
|
189
|
+
\`\`\`json
|
|
190
|
+
{
|
|
191
|
+
"tool": "ttd_list_entities",
|
|
192
|
+
"params": {
|
|
193
|
+
"entityType": "adGroup",
|
|
194
|
+
"advertiserId": "${advertiserId}",
|
|
195
|
+
"campaignId": "{campaignId}"
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
\`\`\`
|
|
199
|
+
|
|
200
|
+
Note the current \`BaseBidCPM\` and \`MaxBidCPM\` for each ad group.
|
|
201
|
+
|
|
202
|
+
### Step 2: Execute Adjustments
|
|
203
|
+
|
|
204
|
+
TTD bids are in **dollars** (not micros like DV360/Google Ads).
|
|
205
|
+
|
|
206
|
+
\`\`\`json
|
|
207
|
+
{
|
|
208
|
+
"tool": "ttd_adjust_bids",
|
|
209
|
+
"params": {
|
|
210
|
+
"adjustments": [
|
|
211
|
+
{
|
|
212
|
+
"adGroupId": "{adGroupId1}",
|
|
213
|
+
"baseBidCpm": 6.50,
|
|
214
|
+
"maxBidCpm": 12.00
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"adGroupId": "{adGroupId2}",
|
|
218
|
+
"baseBidCpm": 5.25,
|
|
219
|
+
"maxBidCpm": 10.00
|
|
220
|
+
}
|
|
221
|
+
]
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
\`\`\`
|
|
225
|
+
|
|
226
|
+
⚠️ **GOTCHA**: TTD bids are in **dollars** (e.g., 5.00 = $5.00 CPM), not micros or cents. This differs from DV360 (micros) and Meta (cents).
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## GraphQL Bulk Jobs (Advanced)
|
|
231
|
+
|
|
232
|
+
For large-scale operations beyond REST API limits.
|
|
233
|
+
|
|
234
|
+
### Bulk Query
|
|
235
|
+
|
|
236
|
+
\`\`\`json
|
|
237
|
+
{
|
|
238
|
+
"tool": "ttd_graphql_query_bulk",
|
|
239
|
+
"params": {
|
|
240
|
+
"query": "query GetAdGroup(\$adGroupId: ID!) { adGroup(id: \$adGroupId) { name status } }",
|
|
241
|
+
"variables": [
|
|
242
|
+
{ "adGroupId": "{id1}" },
|
|
243
|
+
{ "adGroupId": "{id2}" }
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
\`\`\`
|
|
248
|
+
|
|
249
|
+
### Check Job Status
|
|
250
|
+
|
|
251
|
+
\`\`\`json
|
|
252
|
+
{
|
|
253
|
+
"tool": "ttd_graphql_bulk_job",
|
|
254
|
+
"params": { "jobId": "{jobId}" }
|
|
255
|
+
}
|
|
256
|
+
\`\`\`
|
|
257
|
+
|
|
258
|
+
### Cancel Query Job
|
|
259
|
+
|
|
260
|
+
\`\`\`json
|
|
261
|
+
{
|
|
262
|
+
"tool": "ttd_graphql_cancel_bulk_job",
|
|
263
|
+
"params": { "jobId": "{jobId}" }
|
|
264
|
+
}
|
|
265
|
+
\`\`\`
|
|
266
|
+
|
|
267
|
+
⚠️ **GOTCHA**: Bulk **mutation** jobs are **non-cancelable** once submitted. Double-check inputs before submitting.
|
|
268
|
+
|
|
269
|
+
⚠️ **GOTCHA**: Result URLs expire after **1 hour**. Download promptly.
|
|
270
|
+
|
|
271
|
+
⚠️ **GOTCHA**: Max 10 active / 20 queued jobs per partner.
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Safety Checklist
|
|
276
|
+
|
|
277
|
+
- [ ] Correct \`advertiserId\`
|
|
278
|
+
- [ ] Entity IDs verified by listing first
|
|
279
|
+
- [ ] For updates: GET current entity first (PUT semantics = full replacement)
|
|
280
|
+
- [ ] For archive: confirmed irreversibility with user
|
|
281
|
+
- [ ] For bids: amounts in dollars (not micros or cents)
|
|
282
|
+
- [ ] For GraphQL mutations: inputs double-checked (non-cancelable)
|
|
283
|
+
- [ ] Partial failure results reviewed before proceeding
|
|
284
|
+
`;
|
|
285
|
+
}
|
|
286
|
+
//# sourceMappingURL=bulk-operations-workflow.prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bulk-operations-workflow.prompt.js","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/bulk-operations-workflow.prompt.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,4BAA4B,GAAW;IAClD,IAAI,EAAE,8BAA8B;IACpC,WAAW,EACT,kPAAkP;IACpP,SAAS,EAAE;QACT;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,mBAAmB;YAChC,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,WAAW;YACjB,WAAW,EACT,iGAAiG;YACnG,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,MAAM,UAAU,gCAAgC,CAAC,IAA6B;IAC5E,MAAM,YAAY,GAAG,IAAI,EAAE,YAAY,IAAI,gBAAgB,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,QAAQ,CAAC;IAE9C,OAAO;;gBAEO,YAAY;eACb,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBA6BD,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAwCZ,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAuDZ,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBA+CZ,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0FlC,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Prompt } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
export declare const campaignSetupWorkflowPrompt: Prompt;
|
|
3
|
+
export declare function getCampaignSetupWorkflowMessage(args?: Record<string, string>): string;
|
|
4
|
+
//# sourceMappingURL=campaign-setup-workflow.prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaign-setup-workflow.prompt.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/prompts/definitions/campaign-setup-workflow.prompt.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAEjE,eAAO,MAAM,2BAA2B,EAAE,MAWzC,CAAC;AAEF,wBAAgB,+BAA+B,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAyOrF"}
|