Deploy the agent
Before you start, make sure you have:- A LangSmith Cloud account. Use a personal access token (an API key that starts with
lsv2_pt_), or sign in with your browser on the first deploy. A service key cannot set up the Slack app. - A key for your model provider. On the LLM Gateway, the agent uses your LangSmith key instead.
- A Pipeboard account for Google Ads, Meta Ads, LinkedIn Ads, TikTok Ads, Pinterest Ads, Snap Ads, Reddit Ads, and Google Analytics. Check Pipeboard pricing for plan limits. X Ads and OpenAI Ads use separate keys and stay read-only.
- Permission to install apps in your Slack workspace, or a workspace admin who can approve the agent’s Slack app.
Deploy the paid media agent with your coding agent
Install the project
Add your keys
uv run paid-media-agent setup, does the same in your browser. On the LLM Gateway, skip the provider key and run uv run paid-media-agent config set PAID_MEDIA_MODEL=langsmith:anthropic/claude-opus-5-5 instead. To sign in with your browser instead of a LangSmith key, leave LANGSMITH_API_KEY out.Connect your ad accounts
.env and account mappings to config/accounts.toml. Git ignores both files.Add your business context
workspace/skills/company-context/. Start from the template, or ask your coding agent to follow .agents/skills/paid-media-org-onboarding/SKILL.md. Add this context before the first real analysis.Deploy
sandbox/setup.sh, which installs Python tools and PDF libraries, into a snapshot. The sandbox is small, so it needs no separate publish step.Run the first deploy in your own terminal, since it sets up the Slack app. Choose the app that LangSmith manages. If the command prints a link, open it and approve the app for your workspace. The deploy waits until Slack reports the approval done. A workspace admin may need to approve the app.Ask a first question

Example Slack thread with a spend comparison and caveats.
Customize the paid media agent
Most changes are edits to files in the repository. Common ones:- Business context: Goals, conversion definitions, and campaign briefs live in
workspace/skills/company-context/. - Reports: The weekly and monthly reports run from
schedules/, on Mondays and the first of each month at 13:00 UTC. Setdeliver_toin a schedule to post the result to a Slack channel. - Report design: Colors, typography, and layout live in
workspace/skills/report-design/DESIGN.md. Ask your coding agent to follow.agents/skills/paid-media-design/SKILL.mdto keep the renderer in step. - Slack app: Set the name, description, and triggers in
channels/slack.py. - Memory: Memory is off by default. Add a
memory.pyto turn on memory when every caller may share what the agent learns. - Live changes: Writes to ad accounts need a write policy from
config/write-policy.example.toml, the release checks, and an authorized reviewer. Pending proposals live in the deployment process, and the default serverless deployment can scale down and lose one before approval, so deploy with--deployment-type dedicatedbefore you turn on live changes.
mda commands:
Explore the project
Each managed capability is a file or folder at the root of the repository:Architecture
Managed Deep Agents provides the Slack app, identity, schedules, and a sandbox per thread. The repository adds ad platform tools, analysis skills, and the approval policy.

Request path from Slack or a schedule through the agent back to the thread.

Slack approval card for a proposed campaign change.


Approval path for a live write once an operator enables writes.
See also
- Paid media agent repository
- Design agent template
- Managed Deep Agents project structure
- Deploy a Managed Deep Agents project

