MCP for J add-on logoMCP for AdAgency Pro is a Pro add-on for MCP for J that puts iJoomla's AdAgency Pro ad server in front of your AI client. Thirty-four tools read and write the eighteen #__ad_agency_* tables โ€” campaigns, ads, advertisers, zones, packages and orders โ€” and add the dashboard numbers plus impression and click reporting with a per-day breakdown. One thing to know before you install it: writes don't send AdAgency's notification emails in version 1.0, so the AdAgency admin screens are still the right place to act when you want the advertiser to hear about it.

Please log in to download MCP for AdAgency Pro.

Why this exists

Running an ad server is mostly a review queue plus a reporting question, and AdAgency splits both across a lot of screens. Finding out what's waiting on you means visiting the campaigns list, then the ads list, then the advertisers list, because each keeps its own pending pile. Finding out how a campaign actually did means picking a date range in one report at a time. The data is all there in the same eighteen tables; it's the assembling that costs you the afternoon. This add-on lets you ask for the pending pile across all three in one question, and ask for a campaign's daily impression curve without clicking into a report builder.

What Claude can do

Thirty-four tools across eight groups.

AreaToolsWhat you can do
Campaigns8List with filters and read one in full, approve, reject, put back to pending, publish, unpublish, delete.
Ads5List and read banners with their media type and owning campaign, approve, reject, delete.
Advertisers5List and read advertiser accounts with the Joomla user behind each one, approve, reject, delete.
Zones2List and read ad zones together with the Joomla module each one actually is, its template position and whether that module is published.
Packages2List and read the pricing tiers advertisers buy from, including which zones each package covers.
Orders4List and read purchases, mark one paid after you've reconciled an offline payment, or reject it.
Reports4A dashboard summary with counts by approval state and revenue this month against last; impressions, clicks and click-through rate for a campaign or a single ad, broken down per day or per banner; revenue for one advertiser or the top earners across the whole agency.
Settings and lookups4The global settings row, the currency list, the channels, and the promo codes.

What it won't do: send the emails

This is the limitation to understand before you point it at a live ad server. Approving a campaign through MCP changes the record and tells nobody. Same for approving an ad or an advertiser, and for marking an order paid. AdAgency builds each of those emails from a body template stored in its settings row, substitutes placeholders into it, and fans the result out to both the site admin and the advertiser. Reproducing that faithfully is a job in its own right rather than a line of code, and shipping a version that got it half right would have been worse than shipping one that's honest about not doing it.

So the rule of thumb is simple. If the advertiser needs to hear about it, do it in the AdAgency admin UI. If you're reconciling, triaging, cleaning up or reporting, do it here. get_adagency_settings tells you which notification templates your site has configured, which is a decent way to work out what you'd be skipping. Firing the emails properly is the follow-up this add-on wants most.

Two other things are out of scope in version 1.0, and for the same reason. Creating a campaign runs the advertiser through a multi-step checkout that consumes promo codes, writes an order and debits balances, so there's no create-campaign tool. Uploading banner media goes through AdAgency's own upload controller, so there's no upload tool either. Everything already in the system is fair game; the two flows that mint new records are not.

The schema underneath

You don't have to know any of this to use the add-on โ€” the tools translate it for you โ€” but it's worth knowing it's being translated, because AdAgency's table names stopped matching its own interface years ago. Advertisers are keyed on aid, not id, and everything else references them that way. The packages you see in the UI live in a table called #__ad_agency_order_type. An ad zone is a Joomla module โ€” zone.zoneid is the module's id โ€” which is why the zone tools join across and hand you the module title, position and published state in the same response. And approval state is stored as a single character, Y, N or P, which every tool reports back to you as approved, rejected or pending instead.

Installing it

You'll need Joomla 5 or 6, MCP for J, AdAgency Pro 7.x from iJoomla, and an active Cybersalt Pro membership on the site.

  1. Download the ZIP from the link near the top of this page. The button appears once you're logged in with a membership that covers Pro add-ons.
  2. In Joomla admin, go to System โ†’ Install โ†’ Extensions and upload it.
  3. That's the whole install. The plugin enables itself, and the tools show up in your connected AI client the next time it lists them.

Pro add-ons are also listed under Components โ†’ MCP for Joomla โ†’ Browse MCP Add-Ons once you've activated your membership email on the MCP for J dashboard, which is what links the site to your membership. There's no admin screen for the plugin itself โ€” it adds tools to MCP for J rather than somewhere to click. AdAgency Pro is a separate product bought from iJoomla; this add-on wraps it and doesn't stand in for a licence.

Using it

Ask for the shape of the queue rather than a table. "What's waiting for approval right now, across campaigns, ads and advertisers?" is three calls your client makes for you and one answer you read. "How did campaign 44 do last month, day by day?" comes back as a series you can actually talk about. "Who are my top five advertisers by paid revenue this year?" is one call, and it groups by currency rather than adding dollars to euros, because AdAgency stores a currency string on every order and summing across them would be a lie.

Writes are deliberately narrow and they mirror the SQL AdAgency's own controllers emit โ€” the same columns, the same values. Each one shows you the row before and after, so an approval that didn't take is visible rather than assumed. Deletes are the exception to "narrow and boring": there's no trash and no undo in AdAgency, so a deleted campaign, ad or advertiser is gone. Read the record first.

Permissions and security

The tools use MCP for J's own permission tiers โ€” reads need use, writes need write โ€” so you can hand out a read-only token to something that reports on the ad server without letting it approve anything. The settings tool returns a curated slice of the settings row rather than all eighty-odd columns, most of which are dead, and it reports which email templates have content rather than dumping the template bodies.

Worth repeating in this section because it's a security property as much as a feature gap: because writes send no email, they also leave no outbound trail. The AdAgency record will show the change and MCP for J's own log will show the call, but the advertiser won't have been told and there's no sent-mail copy to find later. On a site where more than one person touches the queue, say so out loud before you start approving things this way.

Open source

GPL-2.0-or-later, the same license as Joomla itself. Source lives on GitHub.

Please log in to download MCP for AdAgency Pro.


Interesting blog? Like it on Facebook, Post it or share this article on other bookmarking websites.

Written by:
Tim Davis is the founder and owner of Cybersalt.
Log in to comment

Add comment

Submit