Skip to main content

Documentation Index

Fetch the complete documentation index at: https://agenticadvertisingorg-changeset-release-main.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Addie Tool Reference

This page lists every tool Addie can call. Each tool’s description is the same one that ships into Addie’s prompt, so the language is router-facing rather than tutorial-style — but it tells you exactly what Addie can do, when she should reach for the tool, and what fields it accepts. Tools are grouped by capability set (router category). The router selects one or more sets based on the user’s intent, then Addie picks specific tools within those sets. A handful of tools are always available regardless of routing — bug-report flow, content submission, escalation — see the Always available section. If you’re an integrator or admin and you want to know whether Addie can do X: search this page first. If you can’t find a tool here, Addie can’t do X — please don’t ask her to invent one.

knowledge

Search documentation, code repos, Slack history, curated resources, GitHub issues/PRs, and validate JSON against AdCP schemas for protocol questions, implementation help, roadmap/RFC lookups, and community discussions

search_docs

Search the AdCP documentation for relevant content. Use this to answer questions about AdCP, the protocol, tools, or how things work. Source: server/src/addie/mcp/docs-search.ts

get_doc

Get the full content of a specific documentation page. Use this after search_docs to read a document in detail. Source: server/src/addie/mcp/docs-search.ts

search_slack

Search Slack messages from public channels in the AAO workspace. Use this when you need community discussions, Q&A threads, or real-world implementation examples. When asked about a specific channel or working group (e.g., “Governance working group”), use the channel parameter to filter results. When asked to summarize discussions, search for relevant keywords then synthesize the results. Cite the Slack permalink when using information from results. Source: server/src/addie/mcp/knowledge-search.ts

get_channel_activity

Get recent messages from a specific Slack channel. Use this when asked to summarize channel activity, see what a working group has been discussing, or get an overview of conversations in a channel. Returns messages sorted by recency. After getting results, synthesize them into a summary for the user. Source: server/src/addie/mcp/knowledge-search.ts

search_resources

Search curated external resources (articles, blog posts, industry content) that have been indexed with summaries and contextual analysis. Use this for industry trends, competitor info, and external perspectives on agentic advertising. Source: server/src/addie/mcp/knowledge-search.ts

get_recent_news

Get recent news and articles about ad tech and agentic advertising from curated industry feeds. Returns articles sorted by recency with summaries and analysis. Use this when users ask “what’s happening in the news?”, “what’s new in ad tech?”, or “what have we learned lately?” Source: server/src/addie/mcp/knowledge-search.ts

fetch_url

Fetch and read the content of a web URL. Use this when a user shares a link and asks about it, or when you need to read external content. Returns the text content of the page. Note: Does not work for pages requiring authentication. Source: server/src/addie/mcp/url-tools.ts

read_slack_file

Download and read a file that was shared in Slack. PROACTIVELY use this whenever a user shares a file (PDF, document, text file, image, etc.) - don’t wait to be asked. Users expect you to see what they shared. Provide the file URL from the shared file info. Source: server/src/addie/mcp/url-tools.ts

list_github_issues

Search or list GitHub issues and PRs to find open items on a topic, check RFC/epic status, or answer “what is being worked on for X” questions. Pass query for keyword search (GitHub search syntax, but repo:/org:/user:/is: qualifiers are rejected — use the repo param instead). Returns title, number, state, labels, author, last-updated. Works on any public GitHub repo. Do NOT use when the user has a specific issue number — use get_github_issue. Source: server/src/addie/mcp/member-tools.ts

validate_json

Validate a JSON object against an AdCP schema. Use this to verify if user-provided JSON is valid according to the specification. Returns validation errors if invalid. Source: server/src/addie/mcp/schema-tools.ts

get_schema

Fetch and display an AdCP JSON schema. Use this to show the exact schema definition, including all properties, required fields, and constraints. This is the authoritative source for what fields are valid. Source: server/src/addie/mcp/schema-tools.ts

list_schemas

List available AdCP schemas and versions. Use this to help users discover what schemas exist and what versions are available. Source: server/src/addie/mcp/schema-tools.ts

compare_schema_versions

Compare two schema versions to show what changed. Use this when users ask about differences between AdCP versions or are confused about which version to use. Source: server/src/addie/mcp/schema-tools.ts

member

Manage member profile, working groups, committees, and account settings. Includes listing working group documents, attaching assets to content, and updating the company logo or brand color.

get_my_profile

Get the current user’s personal profile — who they are as a person. Shows headline, bio, expertise, interests, and social links. Source: server/src/addie/mcp/member-tools.ts

update_my_profile

Update the current user’s personal profile — who they are as a person. Can update headline, bio, expertise, interests, location, and social links. Only updates fields that are provided. Source: server/src/addie/mcp/member-tools.ts

get_company_listing

Get the company’s directory listing — how the organization appears in the member directory and to Addie. Shows tagline, description, offerings, headquarters, and contact info. Source: server/src/addie/mcp/member-tools.ts

update_company_listing

Update the company’s directory listing text fields — tagline, description, contact info, social links, and headquarters. Only updates fields that are provided. For logo or brand color, use update_company_logo instead. Source: server/src/addie/mcp/member-tools.ts Update the company logo or brand color on the directory listing. Use when a member wants to upload, change, or fix their company logo. The logo URL must be a publicly accessible HTTPS image (PNG, JPG, SVG, etc.) — file-viewer links like Google Drive don’t work. If the brand domain was previously registered by another organization, the tool returns a notice asking the user whether to adopt the prior brand identity (logos, colors, agents) or start fresh — pass adopt_prior_manifest: true to adopt or false to clear, then call again. Source: server/src/addie/mcp/member-tools.ts

request_brand_domain_challenge

Issue a DNS TXT challenge so the caller’s organization can claim a brand domain currently registered to another org or unregistered. Returns the verification record (Name/Type/Value) for the user to publish at their DNS host. DO NOT use when: the domain is already owned by the caller’s org (already linked in their member profile); the user is just asking what their domain is; the user is asking generic ‘is my domain set up?’ questions. Pair with verify_brand_domain_challenge ONLY after the user confirms they’ve published the record. Response begins with an HTML comment ’<!— STATUS: <code> —>’ for machine parsing (invisible in rendered markdown) — codes: dns_record_issued, already_verified, collision, invalid_domain, workos_error, not_authenticated, no_org, not_admin, missing_domain. Source: server/src/addie/mcp/member-tools.ts

verify_brand_domain_challenge

Run the WorkOS DNS lookup against a previously-issued challenge and, on success, apply the brand-registry update. ONLY call after request_brand_domain_challenge returned DNS instructions in this same conversation AND the user has explicitly confirmed they published the record. NEVER call speculatively, as a ‘check status’ tool, or in a retry loop — DNS propagation takes minutes and the server enforces a cooldown that will return still_pending if you call again too soon. If the call returns still_pending, STOP and ask the user to confirm before any retry. Response begins with an HTML comment ’<!— STATUS: <code> —>’ (invisible in rendered markdown) — codes: verified, still_pending, no_challenge, workos_error, not_authenticated, no_org, not_admin, missing_domain. After ‘verified’ the claim is complete; after ‘still_pending’ STOP and ask the user to confirm before retrying. Source: server/src/addie/mcp/member-tools.ts

list_working_groups

List active committees in AgenticAdvertising.org. Can filter by type: working groups (technical), councils (industry verticals), or chapters (regional). Shows public groups to everyone, and includes private groups for members. Source: server/src/addie/mcp/member-tools.ts

get_working_group

Get details about a specific working group including its description, leaders, member count, and recent posts. Use the group slug (URL-friendly name). Pass include_members: true to get the full member list with names, org, and email (admins only for private groups). Source: server/src/addie/mcp/member-tools.ts

join_working_group

Join a working group on behalf of the current user. If the group is private, suggests using request_working_group_invitation instead. The user must be a member of AgenticAdvertising.org. Source: server/src/addie/mcp/member-tools.ts

request_working_group_invitation

Request an invitation to a private working group on behalf of the user. Creates an escalation so an admin can process the invite. Use this when join_working_group fails because a group is private. Source: server/src/addie/mcp/member-tools.ts

get_my_working_groups

Get the current user’s working group memberships. Shows which groups they belong to and their role in each. Source: server/src/addie/mcp/member-tools.ts

express_council_interest

Express interest in joining an industry council or other committee that is not yet launched. The user can indicate whether they want to be a participant or a potential leader. This helps gauge interest before the council officially launches. Source: server/src/addie/mcp/member-tools.ts

withdraw_council_interest

Withdraw interest in a council or committee. Use this when the user no longer wants to be notified when the council launches. Source: server/src/addie/mcp/member-tools.ts

get_my_council_interests

Get the current user’s council interest signups. Shows which councils they’ve expressed interest in joining. Source: server/src/addie/mcp/member-tools.ts

list_perspectives

List published perspectives (articles/posts) from AgenticAdvertising.org members. These are public articles shared by the community. Source: server/src/addie/mcp/member-tools.ts

create_working_group_post

Create a post in a working group on behalf of the current user. The user must be a member of the working group. Supports article, link, and discussion post types. Source: server/src/addie/mcp/member-tools.ts

attach_content_asset

Attach a file (image, PDF) to a published perspective. Fetches from a URL and stores it. Use after propose_content to add cover images or report PDFs. Source: server/src/addie/mcp/member-tools.ts

bookmark_resource

Save a useful web resource to the knowledge base for future reference. Use this when you find valuable external content during web search that would be helpful for future questions. The content will be fetched, summarized, and indexed. Source: server/src/addie/mcp/knowledge-search.ts

list_committee_documents

List documents tracked by a committee. Shows document titles, status, and summaries. Source: server/src/addie/mcp/member-tools.ts

directory

The searchable partner/vendor directory — find partners, vendors, consultants, service providers, and member organizations. Also: request introductions, browse the member directory, research brands, look up brand assets, and find registry gaps

search_members

Search for member ORGANIZATIONS (companies) that offer specific capabilities or services. Searches member names, descriptions, taglines, offerings, and tags. Use this when users want to find vendors, consultants, implementation partners, or managed services. The query should reflect what the user actually needs (e.g., “CTV measurement”, “sales agent implementation”) — not a generic term like “partner”. Returns public member profiles with contact info. Source: server/src/addie/mcp/member-tools.ts

request_introduction

Send an introduction email connecting a user with a member organization. Addie sends the email directly on behalf of the requester. Use this when a user explicitly asks to be introduced to or connected with a specific member after seeing search results. Source: server/src/addie/mcp/member-tools.ts

get_my_search_analytics

Get search analytics for the user’s member profile. Shows how many times their profile appeared in searches, profile clicks, and introduction requests. Only works for members with a public profile. Source: server/src/addie/mcp/member-tools.ts

list_members

List AgenticAdvertising.org member organizations. Can filter by offerings (buyer_agent, sales_agent, creative_agent, signals_agent, si_agent, governance_agent, publisher, consulting), markets (North America, EMEA, APAC, LATAM, Global), or search term. Source: server/src/addie/mcp/directory-tools.ts

get_member

Get detailed information about a specific AAO member by their slug identifier. Source: server/src/addie/mcp/directory-tools.ts

list_agents

List all public AdCP agents from member organizations. Can filter by type: creative (asset generation), signals (audience data), sales (media buying), governance (property lists and content standards), or si (sponsored intelligence/conversational commerce). Source: server/src/addie/mcp/directory-tools.ts

get_agent

Get details for a specific agent by its URL. Source: server/src/addie/mcp/directory-tools.ts

list_publishers

List all publishers that have published a /.well-known/adagents.json file, indicating they support AdCP. Source: server/src/addie/mcp/directory-tools.ts

lookup_domain

Find all agents authorized for a specific publisher domain. Shows both verified agents (from adagents.json) and claimed agents (from agent registrations). Source: server/src/addie/mcp/directory-tools.ts

research_brand

Research a brand by domain using Brandfetch API. Returns brand info (logo, colors, company details) if found. Automatically saves enrichment data to the registry — no need to call save_brand after. Source: server/src/addie/mcp/brand-tools.ts

resolve_brand

Resolve a domain to its canonical brand identity by checking for brand.json at /.well-known/brand.json. Returns the authoritative brand info if found. Source: server/src/addie/mcp/brand-tools.ts

save_brand

Save a brand to the registry as a community brand. Use for manually adding brands (not needed after research_brand, which auto-saves). Preserves any existing enrichment data when manifest is not provided. Source: server/src/addie/mcp/brand-tools.ts

list_brands

List brands in the registry with optional filters. Can filter by source type and search by name or domain. Source: server/src/addie/mcp/brand-tools.ts

list_missing_brands

List the most-requested brand domains that are not yet in the registry. Shows demand signals — which brands people are looking for but we don’t have. Source: server/src/addie/mcp/brand-tools.ts

agent_testing

Publisher and agent setup, verification, and testing — validate adagents.json, check brand.json, verify publisher authorization, resolve properties, probe agent endpoints, run compliance tests, grade RFC 9421 request signing, and diagnose OAuth handshakes. Use for any “my agent can’t see properties”, “authorization not working”, “is my signing setup correct?”, “diagnose OAuth”, or publisher setup questions.

validate_adagents

Validate a domain’s /.well-known/adagents.json file. Returns validation results including any errors or warnings. Source: server/src/addie/mcp/property-tools.ts

resolve_brand

Resolve a domain to its canonical brand identity by checking for brand.json at /.well-known/brand.json. Returns the authoritative brand info if found. Source: server/src/addie/mcp/brand-tools.ts

get_agent_status

Return the AAO registry’s current status for an agent: health (online / last checked), declared capabilities, and the most recent compliance verdict per track from the comply storyboard suite. Reads cached state — does NOT perform a live probe. For agents not in the registry, returns guidance to register the agent (so the heartbeat picks it up) or to run evaluate_agent_quality for an on-demand check. Source: server/src/addie/mcp/member-tools.ts

check_publisher_authorization

Check if a publisher domain has authorized a specific agent. Source: server/src/addie/mcp/member-tools.ts

test_adcp_agent

Deprecated — use evaluate_agent_quality instead. Runs evaluate_agent_quality and returns the same results. Source: server/src/addie/mcp/member-tools.ts

evaluate_agent_quality

Run protocol compliance evaluation on an AdCP agent and return structured results for coaching. Tests all capability tracks the agent supports (core, products, media buy, creative, governance, signals, etc.) and collects advisory observations about performance, completeness, and best practices. Results include specific actionable observations, not just pass/fail. The public test agent works for any logged-in user with no setup required. For custom agents requiring authentication, use save_agent first. Source: server/src/addie/mcp/member-tools.ts

grade_agent_signing

Run the RFC 9421 request-signing conformance grader against an agent. Tests whether the agent’s verifier accepts valid signed requests and rejects unsigned, expired, replayed, wrong-key, etc. requests with the right error codes. Returns a per-vector pass/fail report with diagnostics. Preconditions: the agent declares request_signing.supported: true in get_adcp_capabilities and has its verifier preconfigured per test-kits/signed-requests-runner.yaml (accepts the runner’s signing keyids test-ed25519-2026 and test-es256-2026, has test-revoked-2026 in its revocation list). Live-side-effect vectors (real create_media_buy, replay-cap flood) are skipped by default — pass allow_live_side_effects: true to run them, and only do that against a sandbox endpoint. Source: server/src/addie/mcp/auth-grader-tools.ts

diagnose_agent_auth

Diagnose an agent’s OAuth handshake by probing RFC 9728 protected-resource metadata and RFC 8414 authorization-server metadata, decoding any access token in scope, and reporting ranked hypotheses about what’s wrong (likely / possible / ruled out). Use when an agent returns 401/403 unexpectedly, when OAuth metadata might be misconfigured, or when validating an agent’s OAuth setup before integrating. This is anonymous-mode diagnosis — token refresh and authenticated tool-call probes are skipped, so the report describes what the public surface advertises rather than whether a specific token works. Source: server/src/addie/mcp/auth-grader-tools.ts

compare_media_kit

[DEPRECATED — use test_rfp_response or test_io_execution instead] Compare a publisher’s stated inventory against what their agent returns. Prefer test_rfp_response (tests against real RFPs) or test_io_execution (tests whether IOs can execute through the agent). Source: server/src/addie/mcp/member-tools.ts

test_rfp_response

Test how a publisher’s agent responds to a real RFP or campaign brief. Addie parses the RFP document first, then calls this tool with structured data. Calls get_products on the agent and returns gap analysis comparing what the agent surfaces vs what the RFP requests. The publisher’s stated response (what they’d normally propose) is the highest-value input — it lets you compare agent output to how the sales team actually responds. Source: server/src/addie/mcp/member-tools.ts

test_io_execution

Test whether a buyer agent can execute a real IO or proposal through the publisher’s agent. Addie parses the IO document first, then calls this tool with structured line items. Maps each line item to agent products using deterministic scoring, constructs the exact create_media_buy JSON a buyer agent would send, and optionally dry-runs it. Source: server/src/addie/mcp/member-tools.ts

validate_agent

Validate if an agent is authorized for a publisher domain by checking their /.well-known/adagents.json file. Source: server/src/addie/mcp/directory-tools.ts

resolve_property

Resolve a publisher domain to its property information. Checks hosted properties, discovered properties, and live adagents.json. Source: server/src/addie/mcp/property-tools.ts

save_property

Save or approve a hosted property in the registry. Creates new properties, approves pending ones, or updates existing ones. Source: server/src/addie/mcp/property-tools.ts

list_properties

List publisher properties in the registry. Can filter by source type and search by domain. Source: server/src/addie/mcp/property-tools.ts

list_missing_properties

List the most-requested publisher domains that are not yet in the registry. Shows demand signals — which properties people are looking for but we don’t have. Source: server/src/addie/mcp/property-tools.ts

agent_conformance

Run AdCP compliance storyboards against the user’s own dev/staging MCP server via Addie’s Socket Mode channel — outbound WebSocket from the adopter to Addie, no public DNS or ngrok needed. Use when the user wants to test their own AdCP agent during development. Requires the user to be mapped to a WorkOS organization. Tools issue a session-bound token and then run a storyboard against the connected adopter agent.

issue_conformance_token

Issue a short-lived JWT (1h TTL) the adopter pastes into their @adcp/sdk/server ConformanceClient config to connect their dev/staging MCP server outbound to Addie’s conformance channel. The token is bound to the caller’s WorkOS organization. Use this when the user is building an AdCP agent and wants Addie to run conformance/compliance tests against their dev environment without exposing it publicly. Returns the token, the WebSocket URL, and the expiry time. Source: server/src/addie/mcp/conformance-tools.ts

run_conformance_against_my_agent

Run a compliance storyboard against the adopter MCP server connected to this Addie session via Socket Mode. The adopter must have started @adcp/sdk/server ConformanceClient with a token issued in this same chat session — the channel routes by WorkOS organization id. Returns a markdown report with phase/step pass/fail/skipped status and trimmed error text on failures. Use this after the user confirms their conformance client shows status=connected. Source: server/src/addie/mcp/conformance-tools.ts

adcp_operations

Execute AdCP protocol operations - discover documentation, execute tasks against agents, check agent capabilities. Covers media buy, creative, signals, governance, SI, and brand protocol.

save_agent

Register an agent in the AAO registry on behalf of the current organization. Adds the agent to the org’s member profile; surfaces in /dashboard/agents. New agents land with members_only visibility (discoverable to other paying AAO members — Professional, Builder, Member, or Leader; not publicly listed in the directory or brand.json). To list publicly, the caller promotes the agent via the dashboard; public visibility requires a paid AAO tier (Professional, Builder, Member, or Leader) and a primary brand domain. Auth modes: (1) none — public agent, no credentials; (2) static auth_token + auth_type (bearer or basic, stored encrypted); (3) oauth_client_credentials for machine-to-machine (RFC 6749 §4.4). For interactive OAuth user authorization, save with no auth fields and have the user complete the dashboard’s Authorize flow afterward — save_agent does not collect end-user OAuth state. The caller MUST declare the agent’s type (brand, rights, measurement, governance, creative, sales, buying, signals); ask the owner — do not guess. Server-side smuggle protection still validates the declared type against the capability snapshot when one is available. If the user mentions their MCP endpoint requires auth, lives at a non-root path (e.g. /adcp/mcp), or shows up as offline after saving, suggest setting health_check_url for a liveness fallback while they fix the underlying URL. See the “Registering an Agent in the AAO Registry” section of the rules for the intake script. Source: server/src/addie/mcp/member-tools.ts

list_saved_agents

List all agents saved for this organization. Shows agent URLs, names, types, and whether they have auth tokens stored (but never shows the actual tokens). Use this when users ask “what agents do I have saved?” or want to see their configured agents. Source: server/src/addie/mcp/member-tools.ts

remove_saved_agent

Remove a saved agent and its stored auth token. Use this when users want to delete or forget an agent configuration. Source: server/src/addie/mcp/member-tools.ts

setup_test_agent

Save the public AdCP test agent credentials for the user’s organization so teammates can use them. Any logged-in user can already use the public test agent directly via evaluate_agent_quality without this step — no organization required. This is only needed for teams that want credentials stored. Source: server/src/addie/mcp/member-tools.ts

content

Manage content workflows — propose news sources, add or update committee documents (admin actions)

propose_news_source

Propose a website or RSS feed as a news source for industry monitoring. Any community member can propose sources - admins will review and approve them. Use this when someone shares a link to a relevant ad-tech, marketing, or media publication and thinks it should be monitored for news. Check for duplicates before proposing. Source: server/src/addie/mcp/member-tools.ts

add_committee_document

Add a Google Docs document to a committee (working group, council, or chapter) for tracking. The document will be automatically indexed and summarized. Committee members and leaders can add documents. Source: server/src/addie/mcp/member-tools.ts

update_committee_document

Update a document tracked by a committee. Can change title, description, URL, or featured status. Committee members and leaders can update documents. Source: server/src/addie/mcp/member-tools.ts

delete_committee_document

Remove a document from a committee. The document will no longer be tracked or displayed. Only committee leaders can delete documents. Source: server/src/addie/mcp/member-tools.ts

billing (admin only)

Handle billing and payment operations - create payment links, send invoices, manage discounts and promotions, look up pending invoices

find_membership_products

Find available membership products for a potential member. Use this when someone asks about joining, membership pricing, or wants to become a member. You should ask about their company type and approximate revenue to find the right product. Source: server/src/addie/mcp/billing-tools.ts Create a Stripe checkout payment link for the authenticated member’s own organization. The link is issued to the signed-in member only — the customer email and identity are taken from the authenticated session, never from caller-supplied input. The member must be signed in at agenticadvertising.org and have a workspace; if not, refuse and direct them to sign up first. This tool cannot generate payment links on behalf of other people or organizations. Source: server/src/addie/mcp/billing-tools.ts

send_invoice

Preview an invoice for the authenticated member’s own organization so they can confirm the amount and billing email before it is sent. The contact email and company are taken from the signed-in session, never from caller-supplied input. After calling this and the member confirms, call confirm_send_invoice to send. Source: server/src/addie/mcp/billing-tools.ts

send_payment_request

Find or create a prospect organization and either look up its products, draft an invoice for review, or send a membership invite. Admins cannot directly mint payment links or send invoices from this tool — those operations are only valid in the recipient’s own authenticated session, after they accept the invite. Actions:
  • “lookup_only”: find or create the org, list eligible products. Read-only.
  • “draft_invoice”: preview what the invoice would look like (amount, discount). No Stripe write.
  • “send_invite”: create a membership invite token and email it to the contact. This is NOT a direct invoice send — there is no admin path to issue invoices or payment links to non-signed-in recipients. The recipient signs in, accepts the agreement, and the invoice or checkout is then issued in their authenticated session — never under the admin’s or a hallucinated email.
Source: server/src/addie/mcp/admin-tools.ts

grant_discount

Grant a discount to an organization. Creates Stripe coupon/promo code. Source: server/src/addie/mcp/admin-tools.ts

remove_discount

Remove a discount from an organization. Note: This does not delete any Stripe coupons that were created. Source: server/src/addie/mcp/admin-tools.ts

list_discounts

List organizations with active discounts. Source: server/src/addie/mcp/admin-tools.ts

create_promotion_code

Create a standalone Stripe promo code for marketing campaigns. Source: server/src/addie/mcp/admin-tools.ts

resend_invoice

Resend an open invoice. Provide EITHER an invoice_id (if known) OR a company_name to look up their pending invoices. If the company has exactly one open invoice, it will be resent automatically. If the invoice needs to go to a different email, use update_billing_email first. Source: server/src/addie/mcp/admin-tools.ts

update_billing_email

Update the billing email on a Stripe customer. Use this when invoices need to go to a different email address (e.g., accounts payable). Can look up by org_id or direct customer_id. Source: server/src/addie/mcp/admin-tools.ts

list_pending_invoices

List all organizations with pending (unpaid) invoices. Use this when an admin asks about outstanding invoices or payment status across organizations. Returns a list of organizations with open or draft invoices. Source: server/src/addie/mcp/admin-tools.ts

get_account

Get complete account view for any organization: lifecycle stage, membership status, engagement metrics, pipeline info, and enrichment data. Use for any company lookup. If no org matches, falls back to the users table — surfaces people who signed up with a matching email domain but have not yet created/joined an org (typical for inbound website signups). Source: server/src/addie/mcp/admin-tools.ts

events

Browse upcoming events, check event registrations, get event details, see who is coming, and register interest in events — available to all members

list_events

List AAO events personalized for the user. Shows:
  • Events the user is already registered for
  • Events in regional chapters they’re a member of
  • Events at industry gatherings they’ve indicated interest in (CES, Cannes Lions, etc.)
  • Major global summits (open to all members)
Does NOT include virtual webinars (those are educational content). When asked about past events, set include_past=true. When asked about upcoming events or what’s happening soon, use the defaults. If the user isn’t in any regional chapters or hasn’t indicated interest in any industry events, the response will suggest they share their location or join industry gathering groups. Source: server/src/addie/mcp/event-tools.ts

get_event_details

Get details about a specific event including registration count and waitlist. Use this when someone asks about a specific event. Source: server/src/addie/mcp/event-tools.ts

list_event_attendees

List who is registered for an event. Use when someone asks “who’s coming to [event]?”, “who’s registered?”, “attendee list”, or “who will be there?”. Shows names of registered attendees for published events. Source: server/src/addie/mcp/event-tools.ts

register_event_interest

Register the current user’s interest in an event. Use when someone asks to be notified about an event, added to a waitlist, or wants to express interest without formally registering. Source: server/src/addie/mcp/event-tools.ts

meetings

Schedule, list, update, and cancel meetings - add or remove attendees, RSVP, manage recurring series, handle calendar invites and Zoom links

schedule_meeting

Schedule a new working group meeting. Use this when someone asks to schedule a meeting, call, or discussion. The meeting will be created with a Zoom link. For one-time meetings, calendar invites are sent to working group members by default. For recurring meetings, calendar invites are sent to working group members by default (same as one-time meetings). If the user is in a channel associated with a working group, you can omit working_group_slug and it will be inferred from the channel context. For recurring meetings, use the recurrence parameter with freq, interval, count, and byDay. Required: title, start_time (ISO format without timezone suffix - use timezone parameter for that) Optional: working_group_slug (auto-detected from channel), description, agenda, duration_minutes, timezone, topic_slugs, recurrence IMPORTANT: For start_time, provide the time in the user’s timezone WITHOUT a Z suffix. For example, if user says “2pm ET”, use “2026-01-15T14:00:00” (not “2026-01-15T14:00:00Z”). The timezone parameter (default: America/New_York) specifies what timezone the start_time is in. Example prompts this handles:
  • “Schedule a technical working group call for next Tuesday at 2pm ET”
  • “Set up a bylaws subcommittee meeting for Jan 15 at 3pm PT”
  • “Schedule weekly governance calls every Thursday at 3pm for the next 8 weeks”
  • “Create a recurring creative WG meeting every other Tuesday at 2pm”
Source: server/src/addie/mcp/meeting-tools.ts

list_upcoming_meetings

List upcoming meetings. Use this when someone asks about scheduled meetings, what’s coming up, or the meeting calendar. Also use this as a first step when you need a meeting_id for add_meeting_attendee, cancel_meeting, or update_meeting. Use my_committees_only to filter to committees the user is a member of. Source: server/src/addie/mcp/meeting-tools.ts

get_my_meetings

Get the user’s upcoming meetings. Use this when someone asks “what meetings do I have?” or “what’s on my calendar?” Source: server/src/addie/mcp/meeting-tools.ts

get_meeting_details

Get details about a specific meeting including attendees and RSVP status. Source: server/src/addie/mcp/meeting-tools.ts

rsvp_to_meeting

RSVP to a meeting. Use this when someone says they want to attend a meeting or needs to decline. Source: server/src/addie/mcp/meeting-tools.ts

cancel_meeting

Cancel a scheduled meeting. Sends cancellation notices to all attendees. Source: server/src/addie/mcp/meeting-tools.ts

cancel_meeting_series

Cancel a recurring meeting series. Cancels all upcoming meetings in the series (Zoom + calendar) and archives the series record. Use this when someone wants to stop a recurring series entirely. Source: server/src/addie/mcp/meeting-tools.ts

update_meeting

Update an existing meeting’s details. Use this when someone wants to change the time, title, description, or agenda of a scheduled meeting. This will update the meeting in the database, Zoom (if configured), and Google Calendar. IMPORTANT: For start_time, provide the time in the user’s timezone WITHOUT a Z suffix (same as schedule_meeting). Source: server/src/addie/mcp/meeting-tools.ts

add_meeting_attendee

Add a person to an existing meeting by email. Call this once per person. Use list_upcoming_meetings first to get the meeting_id. Example: “add Karen, Brian, and Jonathan to the call” requires:
  1. list_upcoming_meetings to find the meeting_id
  2. add_meeting_attendee for Karen
  3. add_meeting_attendee for Brian
  4. add_meeting_attendee for Jonathan
When add_to_series is true, adds them to all upcoming meetings in the same series. Source: server/src/addie/mcp/meeting-tools.ts

update_topic_subscriptions

Update meeting topic subscriptions for a user in a working group. Use this when someone wants to change which types of meetings they’re invited to. Source: server/src/addie/mcp/meeting-tools.ts

manage_committee_topics

Manage topics for a working group/committee. Topics help organize meetings and filter invitations. Each topic can optionally have its own Slack channel for subgroup discussions. Use action=‘list’ to see current topics, action=‘add’ to create a new topic, action=‘update’ to modify an existing topic, or action=‘remove’ to delete a topic. Source: server/src/addie/mcp/meeting-tools.ts

committee_leadership

Manage committee co-leaders - add or remove co-leaders for committees you lead (working groups, councils, chapters, industry gatherings)

add_committee_co_leader

Add a co-leader to a committee you lead. Use this when a committee leader wants to add another person to help lead their committee. Works for working groups, councils, chapters, and industry gatherings. IMPORTANT: You can only add co-leaders to committees where you are already a leader. Example uses:
  • “Add Sarah as a co-leader for the India Chapter”
  • “I want to add John to help lead the Creative Working Group”
  • “Add Maria to the CTV Council leadership”
Source: server/src/addie/mcp/committee-leader-tools.ts

remove_committee_co_leader

Remove a co-leader from a committee you lead. The person will remain a member but lose leadership access. Works for working groups, councils, chapters, and industry gatherings. IMPORTANT: You can only remove co-leaders from committees where you are a leader. You cannot remove yourself as a leader (contact admin for that). Source: server/src/addie/mcp/committee-leader-tools.ts

list_committee_co_leaders

List all current leaders of a committee you lead. Shows who has leadership access. Works for working groups, councils, chapters, and industry gatherings. Source: server/src/addie/mcp/committee-leader-tools.ts

list_working_groups

List active committees in AgenticAdvertising.org. Can filter by type: working groups (technical), councils (industry verticals), or chapters (regional). Shows public groups to everyone, and includes private groups for members. Source: server/src/addie/mcp/member-tools.ts

admin (admin only)

Administrative operations - manage prospects, organizations, feeds, escalations, user roles, committee/working group leadership, event management (create/update events, manage registrations, invites, attendee lists), member insights and engagement analytics, community-wide engagement ranking, brand logo registry review queue (approve/reject pending logos), edit a member’s directory profile or logo on their behalf (admin only)

create_event

Create a new AAO event. Use this when someone asks to create a meetup, webinar, summit, or workshop. The event will be created in both Luma (for registration) and the AAO website. Returns the Luma URL for sharing and the AAO event page URL. Required: title, start_time (ISO format), event_type Optional: description, end_time, timezone, location details, virtual_url, max_attendees Source: server/src/addie/mcp/event-tools.ts

update_event

Update an existing event. Use this to change event details like description, capacity, or timing. Source: server/src/addie/mcp/event-tools.ts

manage_event_registrations

Manage event registrations - view registrations, approve waitlisted attendees, or export attendee list. Source: server/src/addie/mcp/event-tools.ts

check_person_event_status

Look up a specific person’s status at an event. Use when someone asks “Is [person] invited to [event]?”, “Did [person] attend [event]?”, “What’s [person]‘s RSVP status?”, etc. Searches by name or email across invite list, registrations, and attendance records. Returns their invite status, registration status, and whether they attended. Source: server/src/addie/mcp/event-tools.ts

invite_to_event

Invite a person to an event. Adds them to the invite list and creates a registration record. Use when someone says “Invite [person] to [event]”, “Add [person] to the Foundry guest list”, etc. If draft_message is true, returns a suggested outreach message that can be sent via Slack or email. The invitation is recorded immediately; the outreach message is a draft for the admin to review. Source: server/src/addie/mcp/event-tools.ts

list_pending_invoices

List all organizations with pending (unpaid) invoices. Use this when an admin asks about outstanding invoices or payment status across organizations. Returns a list of organizations with open or draft invoices. Source: server/src/addie/mcp/admin-tools.ts

get_account

Get complete account view for any organization: lifecycle stage, membership status, engagement metrics, pipeline info, and enrichment data. Use for any company lookup. If no org matches, falls back to the users table — surfaces people who signed up with a matching email domain but have not yet created/joined an org (typical for inbound website signups). Source: server/src/addie/mcp/admin-tools.ts

add_prospect

Add a new prospect organization to track. Use get_account first to confirm the company does not exist. Capture as much info as possible: name, domain, contact details, and notes about their interest. Source: server/src/addie/mcp/admin-tools.ts

update_prospect

Update information about an existing prospect. Use this to add notes, change status, update contact info, or set interest level. IMPORTANT: When adding notes that indicate excitement, resource commitment, or intent to join, also set interest_level accordingly. Source: server/src/addie/mcp/admin-tools.ts

enrich_company

Research a company using Lusha to get firmographic data (revenue, employee count, industry, etc.). Can be used with a domain or company name. Source: server/src/addie/mcp/admin-tools.ts

query_prospects

Query prospects across different views. Use view to switch perspective: “all” (default), “my_engaged”, “my_followups”, “unassigned”, or “addie_pipeline”. Source: server/src/addie/mcp/admin-tools.ts

prospect_search_lusha

Search Lusha’s database for potential prospects matching criteria. Use this to find new companies to reach out to based on industry, size, or location. Source: server/src/addie/mcp/admin-tools.ts

search_industry_feeds

Search and list RSS industry feeds. Use this to find feeds by name, URL, or category, or to see feeds with errors that need attention. Source: server/src/addie/mcp/admin-tools.ts

add_industry_feed

Add a new RSS feed to monitor for industry news. Provide the feed URL and a name. Source: server/src/addie/mcp/admin-tools.ts

get_feed_stats

Get statistics about industry feeds - total feeds, active feeds, articles collected, processing status, etc. Source: server/src/addie/mcp/admin-tools.ts

list_feed_proposals

List pending feed proposals submitted by community members. Use this to review what news sources have been proposed. Source: server/src/addie/mcp/admin-tools.ts

approve_feed_proposal

Approve a feed proposal and create the feed. You must provide the final feed name and URL (which may differ from the proposed URL if you find the actual RSS feed). Source: server/src/addie/mcp/admin-tools.ts

reject_feed_proposal

Reject a feed proposal. Optionally provide a reason that could be shared with the proposer. Source: server/src/addie/mcp/admin-tools.ts

add_media_contact

Flag a Slack user as a known media contact (journalist, reporter, editor). Messages from this user will be handled with extra care and sensitive topics will be deflected. Source: server/src/addie/mcp/admin-tools.ts

list_flagged_conversations

List conversations that have been flagged for sensitive topic detection. These need human review to ensure appropriate handling. Source: server/src/addie/mcp/admin-tools.ts

review_flagged_conversation

Mark a flagged conversation as reviewed. Use this after you’ve looked at a flagged message and determined if any follow-up action is needed. Source: server/src/addie/mcp/admin-tools.ts

create_chapter

Create a regional chapter with Slack channel. Sets founding member as chapter leader. Source: server/src/addie/mcp/admin-tools.ts

list_chapters

List all regional chapters with their member counts and Slack channels. Source: server/src/addie/mcp/admin-tools.ts

create_industry_gathering

Create an industry gathering for conferences/trade shows. Auto-archives after event ends. Source: server/src/addie/mcp/admin-tools.ts

list_industry_gatherings

List all industry gatherings with their dates, locations, and member counts. Source: server/src/addie/mcp/admin-tools.ts

list_working_groups

List active committees in AgenticAdvertising.org. Can filter by type: working groups (technical), councils (industry verticals), or chapters (regional). Shows public groups to everyone, and includes private groups for members. Source: server/src/addie/mcp/member-tools.ts

get_working_group

Get details about a specific working group including its description, leaders, member count, and recent posts. Use the group slug (URL-friendly name). Pass include_members: true to get the full member list with names, org, and email (admins only for private groups). Source: server/src/addie/mcp/member-tools.ts

add_committee_leader

Add a user as leader of a committee. Leaders can manage posts, events, and members. Source: server/src/addie/mcp/admin-tools.ts

remove_committee_leader

Remove a user from committee leadership. User remains a regular member. Source: server/src/addie/mcp/admin-tools.ts

list_committee_leaders

List all leaders of a committee. Source: server/src/addie/mcp/admin-tools.ts

merge_organizations

Merge duplicate organization records. Destructive, cannot be undone. Preview first with preview=true. If both orgs have Stripe customers, you must specify stripe_customer_resolution. Source: server/src/addie/mcp/admin-tools.ts

find_duplicate_orgs

Search for duplicate organizations by name or domain. Source: server/src/addie/mcp/admin-tools.ts

check_domain_health

Check domain health for data quality issues: orphan domains, conflicts, misaligned users. Source: server/src/addie/mcp/admin-tools.ts

manage_organization_domains

Add, remove, or list verified domains for an organization. Syncs to WorkOS. Source: server/src/addie/mcp/admin-tools.ts

update_org_member_role

Update a user’s role within their organization. Use this to change a member’s permissions. Common scenarios:
  • User paid for membership but can’t manage team → promote to admin
  • Need to grant someone ability to invite team members → promote to admin
  • User should have full control of their org → promote to owner
Roles: member (default), admin (can manage team), owner (full control) Source: server/src/addie/mcp/admin-tools.ts

claim_prospect

Claim ownership of a prospect. Use owner_type “self” (default) to assign the current human user, or “addie” to assign Addie as SDR owner. Source: server/src/addie/mcp/admin-tools.ts

triage_prospect_domain

Assess an email domain as a potential prospect. Addie will research the company, determine fit, and optionally create a prospect record. Use this when someone mentions a company that isn’t in the system yet. Source: server/src/addie/mcp/admin-tools.ts

suggest_prospects

Suggest companies to add to prospect list. Finds unmapped domains and Lusha matches. Source: server/src/addie/mcp/admin-tools.ts

set_reminder

Set a reminder/next step for a prospect. Source: server/src/addie/mcp/admin-tools.ts

my_upcoming_tasks

List upcoming tasks and reminders. Source: server/src/addie/mcp/admin-tools.ts

complete_task

Mark a task/reminder as done. Can complete by company name, org ID, or all overdue tasks at once. Source: server/src/addie/mcp/admin-tools.ts

log_conversation

Log a conversation or interaction with a prospect/member. Analyzes and extracts learnings. Source: server/src/addie/mcp/admin-tools.ts

get_member_search_analytics

Get analytics about member searches and introductions. Source: server/src/addie/mcp/admin-tools.ts

list_organizations_by_users

List organizations ranked by user count (website + Slack-only). Source: server/src/addie/mcp/admin-tools.ts

list_users_by_engagement

List community members ranked by community points (earned from events, working groups, content, connections, GitHub). Shows relationship stage, organization, and points breakdown by action type. Source: server/src/addie/mcp/admin-tools.ts

list_slack_users_by_org

List Slack users from a specific organization. Source: server/src/addie/mcp/admin-tools.ts

list_paying_members

List all paying members grouped by subscription level (50KICL,50K ICL, 10K corporate, $2.5K SMB, individual). Includes individual members by default. Pass include_individual: false for corporate-only. Each entry includes the primary contact name and email. Source: server/src/addie/mcp/admin-tools.ts

resend_invoice

Resend an open invoice. Provide EITHER an invoice_id (if known) OR a company_name to look up their pending invoices. If the company has exactly one open invoice, it will be resent automatically. If the invoice needs to go to a different email, use update_billing_email first. Source: server/src/addie/mcp/admin-tools.ts

update_billing_email

Update the billing email on a Stripe customer. Use this when invoices need to go to a different email address (e.g., accounts payable). Can look up by org_id or direct customer_id. Source: server/src/addie/mcp/admin-tools.ts

add_working_group_member

Add a user as a member of a working group, council, chapter, or industry gathering. Source: server/src/addie/mcp/admin-tools.ts

remove_working_group_member

Remove a user from a working group, council, chapter, or industry gathering. The user is deactivated, not deleted. Source: server/src/addie/mcp/admin-tools.ts

rename_working_group

Rename a working group, chapter, or committee. Updates the display name and optionally the slug. Use this when a chapter or WG needs to be renamed (e.g., “Germany Chapter” → “DACH Chapter”). Source: server/src/addie/mcp/admin-tools.ts

list_missing_brands

List the most-requested brand domains that are not yet in the registry. Shows demand signals — which brands people are looking for but we don’t have. Source: server/src/addie/mcp/brand-tools.ts

list_missing_properties

List the most-requested publisher domains that are not yet in the registry. Shows demand signals — which properties people are looking for but we don’t have. Source: server/src/addie/mcp/property-tools.ts

get_outreach_stats

Get outreach performance metrics: messages sent, response rates. Use this when asked “how is outreach going?” or about engagement performance. Source: server/src/addie/mcp/admin-tools.ts

get_outreach_history

Get outreach message history. With a slack_user_id, returns that person’s full outreach timeline with goals and responses. Without, returns recent system-wide outreach. Source: server/src/addie/mcp/admin-tools.ts

send_outreach

Trigger outreach to a Slack user. Checks eligibility first. Set dry_run=true to check eligibility without sending. Use lookup_person for full person context. Source: server/src/addie/mcp/admin-tools.ts

lookup_person

Look up a person by Slack user ID, email, or name. Returns their relationship stage, sentiment, contact eligibility, recent activity, and org. Use for person-level context (vs get_account for org-level). Source: server/src/addie/mcp/admin-tools.ts

get_action_items

Get open action items from the outreach pipeline — nudges, warm leads, momentum signals, follow-ups. Shows what needs attention today. Use to answer “who needs follow-up?” or “what’s in my pipeline?” Source: server/src/addie/mcp/admin-tools.ts

list_pending_brand_logos

List brand logos awaiting moderator review across the registry. Returns logo IDs, domains, uploader email, tags, and how long they have been pending. Use this to triage the registry approval queue or answer “what logos need approval?” Source: server/src/addie/mcp/admin-tools.ts

list_brand_logos

List every logo for ONE specific brand domain — pending, approved, rejected, deleted — to investigate why a brand’s logo is or is not displaying. Use this when you have a domain in hand. For the global moderation queue across all domains, use list_pending_brand_logos instead. Source: server/src/addie/mcp/admin-tools.ts Approve, reject, or delete a pending brand logo. Approving makes it visible on the brand’s company listing; rejecting hides it; deleting tombstones it. Triggers manifest rebuild on approve for unverified brands. Source: server/src/addie/mcp/admin-tools.ts Set or update the logo URL on a member’s directory profile. Requires a publicly hosted HTTPS logo URL plus either the member’s org_name or profile slug to identify them. Creates a brand entry if none exists, or updates the existing one. Do not use this to upload or host logo files — the URL must already be publicly accessible. After updating, use resolve_escalation to close the related support ticket. Source: server/src/addie/mcp/admin-tools.ts

update_member_profile

Update fields on a member’s directory profile. Identify the member by org_name or slug (exact match required). Accepts any combination of: description, tagline, contact info, social links, headquarters, markets, offerings, and visibility settings. For logo changes, use update_member_logo instead. Source: server/src/addie/mcp/admin-tools.ts

transfer_brand_ownership

Transfer ownership of a brand domain from one organization to another. Records a revision for audit. Use after out-of-band verification (acquisition docs, support ticket, legal correspondence) confirms the new org should own the domain. Do not use to resolve unverified disputes — use the escalation queue for those. This is for confirmed transfers only. Source: server/src/addie/mcp/admin-tools.ts

list_orphaned_brands

List brand domains in the orphaned state — a prior owner relinquished and the manifest is preserved for adoption. Use this to audit relinquished brands, see which ones have stale data, and trigger admin cleanup or reach out to potential adopters. Returns prior owner org name + id, when relinquished, and a manifest preview so admins can decide at a glance. Source: server/src/addie/mcp/admin-tools.ts

create_contact

Create or find a contact record for a person by email. Writes to email_contacts (CRM) and person_relationships (engagement tracking). Returns whether the contact was new and whether they were auto-matched to an organization. Source: server/src/addie/mcp/admin-tools.ts

outreach (admin only)

SDR outreach operations — view outreach stats, check history, send outreach, look up people, manage action items (admin only)

get_outreach_stats

Get outreach performance metrics: messages sent, response rates. Use this when asked “how is outreach going?” or about engagement performance. Source: server/src/addie/mcp/admin-tools.ts

get_outreach_history

Get outreach message history. With a slack_user_id, returns that person’s full outreach timeline with goals and responses. Without, returns recent system-wide outreach. Source: server/src/addie/mcp/admin-tools.ts

send_outreach

Trigger outreach to a Slack user. Checks eligibility first. Set dry_run=true to check eligibility without sending. Use lookup_person for full person context. Source: server/src/addie/mcp/admin-tools.ts

lookup_person

Look up a person by Slack user ID, email, or name. Returns their relationship stage, sentiment, contact eligibility, recent activity, and org. Use for person-level context (vs get_account for org-level). Source: server/src/addie/mcp/admin-tools.ts

get_action_items

Get open action items from the outreach pipeline — nudges, warm leads, momentum signals, follow-ups. Shows what needs attention today. Use to answer “who needs follow-up?” or “what’s in my pipeline?” Source: server/src/addie/mcp/admin-tools.ts

get_account

Get complete account view for any organization: lifecycle stage, membership status, engagement metrics, pipeline info, and enrichment data. Use for any company lookup. If no org matches, falls back to the users table — surfaces people who signed up with a matching email domain but have not yet created/joined an org (typical for inbound website signups). Source: server/src/addie/mcp/admin-tools.ts

collaboration

Send direct messages to other AgenticAdvertising.org members, forward conversation context, and collaborate across the community

send_member_dm

Send a direct message to another AgenticAdvertising.org member on Slack. USE THIS WHEN a user explicitly asks you to:
  • Reach out to another member on their behalf
  • Forward a conversation summary to someone for feedback
  • Send a follow-up or notification to a specific person
The message will include attribution showing who asked you to send it. You can optionally include a summary of the current conversation as context. Look up recipients by email (preferred), name (may need disambiguation), or Slack user ID. DO NOT USE unless the user explicitly requests you to message someone. Source: server/src/addie/mcp/collaboration-tools.ts

certification

AdCP Academy — list tracks, teach modules, run exercises, placement assessment, and track learner progress

list_certification_tracks

List all AdCP certification tracks and the learner’s progress in each. Returns track names, descriptions, module counts, and completion status. Source: server/src/addie/mcp/certification-tools.ts

get_certification_module

Preview a module’s content without starting it. Returns lesson plan, exercises, and assessment criteria for read-only browsing. Does NOT record progress or check prerequisites. Use start_certification_module instead when the learner wants to actually take a module. Source: server/src/addie/mcp/certification-tools.ts

start_certification_module

Begin teaching a certification module. MUST be called BEFORE you teach any module content, run demos, or answer questions about module topics. This is not optional — teaching without starting the module means no progress is tracked, no demonstrations are recorded, and the learner gets no credit. Call this FIRST, then use the returned lesson plan to teach. Records the learner as started, checks prerequisites and membership, returns lesson plan with teaching instructions and assessment criteria. Source: server/src/addie/mcp/certification-tools.ts

complete_certification_module

Mark a certification module as completed. Call ONLY when the learner has demonstrated mastery of ALL learning objectives. If they have gaps, keep teaching — there is no failing, only “not ready yet.” Your job is to get them there, not to judge them. When you are confident they understand every objective, call this with your internal assessment scores. The learner never sees these scores — they are for admin analytics and quality calibration only. Source: server/src/addie/mcp/certification-tools.ts

get_learner_progress

Get the current learner’s progress across all certification modules and tracks. Shows which modules are completed, in progress, or not started, plus any earned certificates. Source: server/src/addie/mcp/certification-tools.ts

test_out_modules

Mark modules as tested out after a placement assessment confirms the learner already has the knowledge. Only call this after conducting a thorough assessment — ask probing questions per module topic, not just surface-level familiarity. Never test out specialist or build project modules (S1-S5, B4, C4, D4). Does not award scores since no formal coursework was completed, but satisfies prerequisites for advancement. Source: server/src/addie/mcp/certification-tools.ts

start_certification_exam

Begin a specialist deep dive module (S1: Media Buy, S2: Creative, S3: Signals, S4: Governance, S5: Sponsored Intelligence). The learner must hold the Practitioner credential. Returns the capstone format, lab exercises, and assessment criteria. You (Sage) will conduct the combined hands-on lab and adaptive exam — technically assess the learner against the spec. Source: server/src/addie/mcp/certification-tools.ts

complete_certification_exam

Finalize a specialist capstone. If the learner has demonstrated mastery (internal scores 70%+ in each dimension), awards the specialist credential and triggers Certifier badge issuance. If not yet ready, returns areas needing more work — keep teaching. Do not call until both the lab phase and exam phase are complete. Do not call if the learner asked to stop early. Never share scores with the learner. Source: server/src/addie/mcp/certification-tools.ts

Always available

These tools are reachable in every conversation regardless of router intent. Both authenticated and anonymous users can use them when their handlers permit.

escalate_to_admin

Escalate a request to human admins when you cannot fulfill it yourself. USE THIS WHEN:
  • User asks you to perform an action you have no tool for (posting to channels, creating issues, renaming things)
  • The request requires admin judgment, account access, or a human action you cannot perform
  • The topic is genuinely sensitive (legal, compliance, confrontational, controversial-political)
  • You’ve tried and failed to help with your available tools
DO NOT USE FOR:
  • Questions you can answer with your tools or your rule files (knowledge.md, behaviors.md)
  • Community-fit questions (“would my background be a fit for the working groups?”) — answer directly using the working-group mapping in knowledge.md and behaviors.md
  • Routine membership pricing, including upgrade proration for any tier on credit card or invoice — the FAQ in knowledge.md covers this; only escalate refunds, out-of-cycle credits, custom contracts, and currency changes
  • Multi-part questions where each part is independently answerable — decompose first, answer the parts, do NOT escalate the bundle (see “Decompose bundled questions” in constraints.md)
  • “Complex” and “sensitive” are NOT magic words. Bundled or multi-domain questions are not automatically Complex; check whether each part is genuinely outside your knowledge or capability before escalating
  • Things that don’t require admin attention
  • General conversation
CONFIRM WITH USER BEFORE ESCALATING — you must get the user’s consent first:
  • Tell the user you don’t have a tool for this and explain what you’d escalate
  • Ask if they’d like you to pass it to the team
  • Only call this tool after the user confirms they want you to escalate
BEFORE CALLING THIS TOOL — gather enough context to make the escalation actionable:
  • If the request is vague, ask clarifying questions first
  • Confirm who the request is from: their name and organization
  • ALWAYS collect an email address and/or Slack handle so the team can follow up. If the user hasn’t provided one, ask before escalating.
  • If someone is asking on behalf of another person, capture that person’s name and contact details in the summary
  • Include any relevant context (timeline, urgency, what they’ve already tried)
When you escalate, be honest with the user that you’re passing this to a human who can help. Source: server/src/addie/mcp/escalation-tools.ts

get_escalation_status

Check the status of support requests previously escalated for the current user. Use this when a user asks about the status of a previous request, a ticket, or whether someone followed up. Returns a list of their escalations with current status and any resolution notes. Source: server/src/addie/mcp/escalation-tools.ts Get a link to connect the user’s Slack account with their AgenticAdvertising.org account. Use this when a user’s accounts are not linked and they want to access member features. IMPORTANT: Share the full tool output with the user - it contains the clickable sign-in link they need. The user clicks the link to sign in and their accounts are automatically connected. Source: server/src/addie/mcp/member-tools.ts

capture_learning

Capture valuable knowledge or perspective shared by the user. USE THIS WHEN the user shares:
  • Strategic perspectives on the industry
  • Adoption barriers or implementation experiences
  • Feedback about AdCP or AgenticAdvertising.org
  • Market intelligence or competitive insights
  • Use cases or novel applications
This helps the team learn from community conversations and improve Addie’s knowledge. DO NOT use for:
  • General questions or support requests
  • Content already in the docs
  • Off-topic conversations
Source: server/src/addie/mcp/escalation-tools.ts

set_outreach_preference

Set how often Addie sends proactive messages (tips, reminders, follow-ups). Choose a cadence or opt out entirely. Source: server/src/addie/mcp/member-tools.ts

search_image_library

Search the approved illustration library for images that match a topic or concept. Returns image URLs and alt text that you can include in your response. All searches are logged automatically. Source: server/src/addie/mcp/image-tools.ts

draft_github_issue

Draft a GitHub issue and generate a pre-filled URL for the user to create it. Use this when users report bugs, request features, or ask you to create a GitHub issue. CRITICAL: Users CANNOT see tool outputs - you MUST copy this tool’s entire output (the GitHub link, title, body preview) into your response. Never say “click the link above” without including the actual link. The user will click the link to create the issue from their own GitHub account. All issues go to the “adcp” repository which contains the protocol, schemas, AgenticAdvertising.org server, and documentation. Source: server/src/addie/mcp/member-tools.ts

create_github_issue

File a GitHub issue on adcontextprotocol/adcp authored by the logged-in user via their WorkOS Pipes GitHub connection. Use after showing the user a draft and getting their confirmation. If the user has not yet connected GitHub, the tool returns a message with a one-time Connect link AND reminds them they can ask for draft_github_issue instead — include that full message in your reply. Source: server/src/addie/mcp/member-tools.ts

get_github_issue

Read a GitHub issue or PR by number. Use when the user pastes a GitHub link, references “issue #1234”, or asks about the status / contents of a specific RFC, epic, or PR. Returns title, body, state, labels, author, and optionally recent comments and the PR diff. Works on any public GitHub repo (forks included). PR review-thread comments (on specific diff lines) are NOT returned — only issue-style top-level comments. When the user pastes a PR link or asks for a code review, set include_diff: true. Do NOT use for keyword search — use list_github_issues. Do NOT use fetch_url on github.com/…/issues|pull URLs; this tool returns structured fields. Source: server/src/addie/mcp/member-tools.ts

propose_content

Submit a draft (article or link) for editorial review. Content lands in pending_review; a committee lead or admin approves it to publish. Default committee is “editorial” (site-wide Perspectives). Only title is required. Source: server/src/addie/mcp/member-tools.ts

get_my_content

Get all content where the user is an author, proposer, or owner (committee lead). Shows content across all collections with status and relationship info. Source: server/src/addie/mcp/member-tools.ts

list_pending_content

List content pending review that the user can approve/reject. Only committee leads see their committee content; admins see all pending content. Source: server/src/addie/mcp/member-tools.ts

approve_content

Approve pending content for publication. Only committee leads (for their committees) and admins can approve content. Source: server/src/addie/mcp/member-tools.ts

reject_content

Reject pending content with a reason. Only committee leads (for their committees) and admins can reject content. The proposer will see the rejection reason. Source: server/src/addie/mcp/member-tools.ts

check_illustration_status

Check if a perspective article has an editorial illustration and whether the author can generate one. Source: server/src/addie/mcp/illustration-tools.ts

Always available (admin)

Admin-only tools reachable in every conversation regardless of router intent.

resolve_escalation

Mark an escalation as resolved and notify the user via Slack DM or email. Use this after you’ve handled a request that was previously escalated. IMPORTANT: Always notify the user unless there’s a reason not to (e.g., test escalation, duplicate). Notification is sent via Slack DM when a Slack user ID is on record, or via email as fallback. This is how you notify users about escalation outcomes — use it whenever asked to “let someone know”, “follow up”, or “close the loop” on an escalation. Examples:
  • User needed admin role → used update_org_member_role → resolve and notify
  • User needed co-leader added → used add_committee_co_leader → resolve and notify
  • Admin says “this is fixed, let them know” → resolve and notify
  • Duplicate request → resolve with wont_do, no notification needed
Source: server/src/addie/mcp/admin-tools.ts

list_escalations

List escalations that need admin attention, or look up a specific escalation by ID. Use escalation_id to get details on a specific escalation (any status). Use status filter to browse escalations (defaults to open). Source: server/src/addie/mcp/admin-tools.ts

Other tools

Tools defined in the code but not referenced by any tool set above. These typically require specific channel/auth conditions to register; see the source for details.

research_domain

Comprehensive domain research: checks brand registry, enriches via Brandfetch + Sonnet classification + Lusha firmographics. Skips sources that already have fresh data (< 30 days). Returns brand identity, corporate hierarchy (house_domain/parent_brand), and firmographics in one call. Source: server/src/addie/mcp/admin-tools.ts

diagnose_signin_block

Use when a user reports they cannot sign in to AgenticAdvertising.org. Combines person, invite, and org-membership state into a single verdict — needs_signin (account exists, just sign in), needs_resend (invite expired or stale, send a fresh one), needs_invite (no invite on file, send one), or needs_human (state is unclear). Do NOT use for general account questions — use lookup_person or get_account for those. Returns the verdict plus a one-line reason and any pending invite token to act on. Source: server/src/addie/mcp/admin-tools.ts

list_invites_for_org

Use when an admin asks “what invites do we have for X” or you need to reference an invite token before resending or revoking. Defaults to pending only; pass include_accepted or include_revoked to widen. Capped at 20, sorted by expiry (soonest first). Returns one invite per line with its token suffix so you can quote a token back into resend_invite or revoke_invite. Source: server/src/addie/mcp/admin-tools.ts

resend_invite

Use to refresh a pending or expired membership invite — atomically revokes the original and emails a fresh one. Do NOT use to invite a brand-new contact (use send_payment_request for that). Do NOT use on an accepted invite. Returns the new expiry and whether the email was delivered. Source: server/src/addie/mcp/admin-tools.ts

revoke_invite

Use to cancel a pending or expired invite (e.g. wrong email, person no longer joining). Does NOT send any notification to the recipient — their existing invite link will simply stop working. Cannot revoke an already-accepted or already-revoked invite. Returns confirmation including the previous status. Source: server/src/addie/mcp/admin-tools.ts

add_member_to_org

Use when an admin or owner asks to add, invite, or promote a colleague on a paying org. Also the action to take when diagnose_signin_block returns needs_invite for an authorized requester. Handles four states automatically: invites new users (no WorkOS account yet), adds existing users to the org, updates roles, or no-ops if already correct. Do NOT use to remove members (no removal path), to change your own role, or for personal workspaces. Returns one of: invited, member_added, role_updated, no_change. Source: server/src/addie/mcp/admin-tools.ts

create_committee

Create a committee (working group, council, or governance body). For chapters use create_chapter; for conferences use create_industry_gathering. Can link an existing Slack channel by name. Source: server/src/addie/mcp/admin-tools.ts

update_user_name

Update a user’s display name (first and last name). Use this when a user’s name is showing incorrectly (e.g., as their email prefix) and needs manual correction. Source: server/src/addie/mcp/admin-tools.ts

ban_entity

Ban a user, organization, or API key. Scope can be platform-wide (blocks all access) or registry-specific (blocks brand/property edits only). Examples:
  • Platform ban user: ban_type=user, entity_id=user_01HW…, scope=platform
  • Ban org from brand edits: ban_type=organization, entity_id=org_01HW…, scope=registry_brand
  • Revoke API key: ban_type=api_key, entity_id=wkapikey_…, scope=platform
Source: server/src/addie/mcp/admin-tools.ts

unban_entity

Remove a ban. Provide either the ban ID directly, or the ban_type + entity_id + scope to look it up. Source: server/src/addie/mcp/admin-tools.ts

list_bans

List active bans. Optionally filter by ban_type, scope, or entity_id. Source: server/src/addie/mcp/admin-tools.ts

get_person_memory

Use when you need the full picture of what we know about a person — identity, membership, engagement, preferences, pending invites, recent threads — gathered into one view before reasoning. Prefer this over chaining lookup_person + get_account + list_invites_for_org. Do NOT use for org-level questions. Returns a structured summary with sources so you can cite where each fact came from. Source: server/src/addie/mcp/admin-tools.ts

get_engagement_plan

Preview the engagement plan for a person — shows contact eligibility, scored opportunities, and what Addie would say. Use this to understand or debug engagement decisions. Source: server/src/addie/mcp/admin-tools.ts

get_outreach_health

Get a health report on the outreach system: stage breakdown, over-contacted people approaching circuit breaker, outreach volume, and email stats. Use to assess system health or when asked “how is outreach doing?” Source: server/src/addie/mcp/admin-tools.ts

confirm_send_invoice

Send an invoice for the authenticated member’s own organization after they have confirmed the details shown by send_invoice. The contact email, company, and billing address come from the signed-in session — they cannot be overridden. The org must already have a billing address on file (set via the dashboard or invite-acceptance flow). Source: server/src/addie/mcp/billing-tools.ts

get_billing_portal

Get a link to the Stripe Customer Portal where the member can view invoices, download receipts, update payment methods, and manage their subscription. Use this when a member asks about receipts, invoices, billing history, payment methods, or subscription management. The member must be signed in. Source: server/src/addie/mcp/billing-tools.ts

publish_brand_canonical_document

Generate a Brand Canonical Document (brand.json variant 5) for a sub-brand team. Builds a JSON document with the brand’s identity fields (logos/colors/tone/etc.), validates it against the brand.json schema, and returns the document plus the path where it should be hosted (https:///.well-known/brand.json). Returns validation errors instead of an invalid document. Does NOT upload — the operator hosts the returned JSON themselves. Source: server/src/addie/mcp/brand-canonical-tools.ts

add_to_brand_refs

Append a portfolio_entry pointer to a House Portfolio’s brand_refs[]. Either pass the house’s brand.json directly (house_brand_json) or have the tool fetch it (house_domain). Enforces the cross-array uniqueness invariants from the spec: a brand_id MUST NOT appear in both brands[] and brand_refs[], and each brand_id/domain MUST be unique within brand_refs[]. Returns the updated brand.json or a clear validation error. Source: server/src/addie/mcp/brand-canonical-tools.ts

check_mutual_assertion

Given a leaf brand’s domain, fetch its canonical document and its claimed house’s portfolio (following House Redirects on the house side, up to 3 hops, per the Conformance section). Classify the relationship trust into: mutual (both sides reciprocate), leaf_only (leaf claims house, house silent), house_only (house claims leaf, leaf silent — returned by checking the house if a different caller already has it), standalone (no house_domain), or unverifiable (one or both fetches failed). Returns the house’s contact.email when present so the caller can pass it into notify_pending_verification on leaf_only edges. Source: server/src/addie/mcp/brand-canonical-tools.ts

notify_pending_verification

Send the SHOULD-level notification email to the house’s contact.email when a leaf_only edge is detected. Rate-limited to one notification per pair per 24 hours, persisted in the brand_assertion_notifications table so concurrent callers can’t double-send. Behind a feature flag (BRAND_ASSERTION_EMAIL_ENABLED) — defaults to log-only so operators can review the would-have-sent payload before enabling the live send path. Source: server/src/addie/mcp/brand-canonical-tools.ts

parse_brand_properties

Preview a smart-paste import for a brand the operator owns. Takes pasted text (a list of domains and app bundles) or a URL whose body should be fetched, and returns the structured property list that would be imported. The user MUST confirm before you call import_brand_properties — show them the parsed list first. Caller’s organization must own the brand domain. Source: server/src/addie/mcp/brand-property-tools.ts

import_brand_properties

Commit a previewed property import. Takes a property list (typically the output of parse_brand_properties, possibly trimmed by the user) and merges it into the brand manifest by identifier — existing entries are updated in place, new entries are added. ONLY call after the user has explicitly confirmed the list from parse_brand_properties. Caller’s organization must own the brand domain. Source: server/src/addie/mcp/brand-property-tools.ts Upload a logo file for a brand in the registry. The logo is auto-approved and immediately visible. Source: server/src/addie/mcp/brand-tools.ts

checkpoint_teaching_progress

Save a snapshot of teaching progress for the current module. Required before calling complete_certification_module or complete_certification_exam. Call at these points: (a) after finishing each key concept group from the lesson plan, (b) before transitioning from teaching to assessment, (c) after the capstone lab phase before the exam phase, (d) if the learner needs to leave. IMPORTANT: On the first checkpoint, always include learner_background. Before completion, include demonstrations_verified with the criterion IDs the learner has met. Source: server/src/addie/mcp/certification-tools.ts

get_build_phase_instructions

Get the exact instructions for a build project phase transition. You MUST call this tool when transitioning to the Build, Validate, or Extend phase of B4, C4, or D4. The tool returns the specific commands and URLs the learner needs — present them exactly as returned, do not rewrite or summarize. This ensures every learner gets the same validated workflow. Source: server/src/addie/mcp/certification-tools.ts

save_learner_feedback

Save learner feedback after completing a certification module. Call this when the learner shares thoughts about the experience — what was confusing, what worked well, suggestions for improvement. Source: server/src/addie/mcp/certification-tools.ts

recommend_storyboards

Probe an agent’s get_adcp_capabilities and return the compliance bundles that will run. The agent’s declared supported_protocols and specialisms drive the selection — no member configuration needed. If the agent declares nothing, explain what it needs to declare to get coverage. Source: server/src/addie/mcp/member-tools.ts

get_storyboard_detail

Show the full structure of a storyboard — phases, steps, what each step tests, and what passing looks like. Use this before running a storyboard so the developer understands what will be tested. Source: server/src/addie/mcp/member-tools.ts

run_storyboard

Run a complete storyboard against an agent and return step-by-step results. Each step shows pass/fail, validations, and what the agent returned. Use after recommend_storyboards and optionally get_storyboard_detail. Source: server/src/addie/mcp/member-tools.ts

run_storyboard_step

Run a single step of a storyboard. Returns the result plus a preview of the next step. Use this for step-by-step debugging — lets the developer see each request/response and decide whether to continue. Pass the context from the previous step result to maintain state. Source: server/src/addie/mcp/member-tools.ts

get_member_engagement

Get the current user’s organization engagement data: journey stage, engagement score, persona/archetype, milestone completion, and persona-based working group recommendations. Use this to understand where a member is in their journey and what actions would help them advance. Source: server/src/addie/mcp/member-tools.ts

search_moltbook

Search Moltbook for posts about a topic. Moltbook is a social network for AI agents. Returns posts matching the search query with author, score, and comment count. Source: server/src/addie/mcp/moltbook-tools.ts

get_moltbook_thread

Get a Moltbook post and its comments. Returns the full post content and discussion thread. Source: server/src/addie/mcp/moltbook-tools.ts

post_to_moltbook

Create a new post on Moltbook. Rate limited to 1 post per 30 minutes. Use for sharing insights, asking questions, or starting discussions with other AI agents. Source: server/src/addie/mcp/moltbook-tools.ts

comment_on_moltbook

Add a comment to a Moltbook post. Rate limited to 1 comment per 20 seconds and 50 comments per day. Use for engaging in discussions with other AI agents. Source: server/src/addie/mcp/moltbook-tools.ts

get_moltbook_stats

Get Addie’s Moltbook profile stats including karma, post count, follower count, and today’s activity. Source: server/src/addie/mcp/moltbook-tools.ts

get_moltbook_feed

Get the latest posts from Moltbook sorted by hot, new, top, or rising. Source: server/src/addie/mcp/moltbook-tools.ts

suggest_newsletter_content

Suggest content for the community newsletters. Use this when someone says “this should be in The Prompt” or “add this to The Build” or “suggest this for the newsletter.” The Prompt is Addie’s community newsletter (for everyone). The Build is Sage’s contributor briefing (for contributor seats). Source: server/src/addie/mcp/newsletter-tools.ts

check_portrait_status

Check if the current member has an illustrated portrait, and whether they can generate one. Use this before offering portrait generation. Source: server/src/addie/mcp/portrait-tools.ts

check_property_list

Check a list of publisher domains against the AAO registry. Returns a summary of issues and a report URL for full details. Domains are automatically normalized (www/m stripped), duplicates removed, and known ad tech infrastructure flagged. Source: server/src/addie/mcp/property-tools.ts

enhance_property

Analyze an unknown publisher domain and submit it to the registry as a pending entry for review. Checks domain age (flags < 90 days as high risk), validates adagents.json presence, and uses AI to assess whether it’s a real publisher and its likely inventory types. Source: server/src/addie/mcp/property-tools.ts

resolve_catalog

Resolve identifiers (domains, app bundles, store IDs) to stable property_rids in the catalog. Auto-creates missing properties. Excludes known ad infrastructure and publisher masks. Returns property_rid for each identifier. Source: server/src/addie/mcp/property-tools.ts

browse_catalog

Browse the property catalog. Returns properties with their identifiers, classification, and source. Supports filtering and search. Source: server/src/addie/mcp/property-tools.ts

dispute_catalog_entry

File a dispute against a catalog entry. For identifier link disputes on medium/weak confidence, the link is suspended immediately pending review. For authoritative/strong links, the dispute is queued for review without suspension. Source: server/src/addie/mcp/property-tools.ts

get_si_availability

Check if an offer or product is available from a brand agent before connecting. This is an anonymous pre-flight check that doesn’t share user data. Source: server/src/addie/mcp/si-host-tools.ts

list_si_agents

List AAO member brand agents that support Sponsored Intelligence protocol. Shows which brands users can have conversations with. Source: server/src/addie/mcp/si-host-tools.ts

connect_to_si_agent

Connect user with an SI-hosted brand agent. Initiates a conversational session where the brand agent can interact with the user. Source: server/src/addie/mcp/si-host-tools.ts

send_to_si_agent

Send a message to an active SI session with a brand agent. Use this when the user is already connected and wants to continue the conversation. Source: server/src/addie/mcp/si-host-tools.ts

end_si_session

End the current SI session with a brand agent. Use when user is done talking to the brand or wants to return to normal conversation. Source: server/src/addie/mcp/si-host-tools.ts

get_si_session_status

Check if there’s an active SI session and get its current status. Source: server/src/addie/mcp/si-host-tools.ts

lookup_cast

Look up a fictional character or AI agent from the AdCP universe. Returns their role, company, personality, story appearances, and related protocol walkthroughs. Source: server/src/addie/mcp/story-tools.ts

lookup_story

Look up an AdCP story. Returns title, synopsis, featured characters, related protocol walkthroughs, and links. Source: server/src/addie/mcp/story-tools.ts