Skip to main content

Connect Adhook to AI assistants (MCP)

Learn how to connect your Adhook account to Claude, Claude Code or other AI assistants via the MCP server. You will also learn how to use local images and videos from your computer in posts.

What is the Adhook MCP?

The Adhook MCP server connects AI assistants such as Claude or ChatGPT directly to your Adhook account. In the chat you can then, among other things:

  • Create, schedule and edit social media posts

  • Set up and manage post boosts and ad campaigns

  • Manage topics, tasks and calendar entries

  • Reply to and moderate comments, messages and reviews

  • Analyze social listening and influencer posts

  • Retrieve, create and analyze reports

  • Create ad hoc reports (10+ data sources, 100+ segments, 250+ metrics)

You don't need to open the Adhook interface for this.

MCP stands for Model Context Protocol. It is an open standard that allows AI assistants to communicate with external services.

For agency admins there is also the Adhook Management MCP for onboarding new clients. It is described at the end of this article. For day-to-day work you only need the Adhook MCP.

Requirements

  • An Adhook account with the required permissions

  • A client that supports remote MCP connectors, for example:

    • Claude in the browser

    • Claude Desktop

    • Claude Code

    • ChatGPT

    • another MCP-capable AI assistant

Installation and connection

Server URL:

https://mcp.adhook.io/mcp

When you connect for the first time, you sign in via OAuth with your Adhook login. Access is limited to your personal Adhook permissions.

Your password is not shared with the AI assistant. You can revoke the connection at any time in Adhook or in the assistant.

Claude in the browser or Claude Desktop

  1. Open Settings → Connectors.

  2. Select Add custom connector.

  3. Enter the following URL: https://mcp.adhook.io/mcp

  4. Save the connector.

  5. Click Connect and sign in with your Adhook account.

The Adhook connector then appears with the available tools.

Claude Code in the terminal

claude mcp add --transport http adhook https://mcp.adhook.io/mcp

The first time you use it, the Adhook login opens in your browser.

With --scope user you can make the connector available for all of the user's projects:

claude mcp add --transport http --scope user adhook https://mcp.adhook.io/mcp

ChatGPT in the browser

  1. Open Settings → Plugins → Advanced.

  2. Enable Developer mode.

  3. Select Create plugin.

  4. Enter the following URL: https://mcp.adhook.io/mcp

  5. Save the plugin.

  6. Click Connect and sign in with your Adhook account.

The Adhook plugin is then available in ChatGPT with the available tools.

Other AI assistants

Any client that supports remote MCP connectors can add the following URL as a custom connector:

https://mcp.adhook.io/mcp

This also works, for example, with ChatGPT in developer or connector mode. The exact steps vary by client.

Available tools in the Adhook MCP

The assistant picks the right tools on its own. You don't need to know the tool names; just describe what you want to achieve. The overview shows what is possible.

Account, brands and team

Tool

Purpose

get_current_user

Shows the currently connected Adhook user.

get_subtenants

Lists your brands.

find_subtenant_by_name

Finds a brand by its name.

get_users

Lists the users in your account with name and email.

get_teams

Lists the teams, for example to assign messages or tasks to a team.

get_tags

Lists the available tags, optionally filtered by name.

Posts

Tool

Purpose

get_posts

Lists or searches posts. Filters include text, status, brand, time period and channels.

get_post_by_id

Retrieves all details of a single post.

create_post

Creates a post with text, channels, images or videos, publishing time, topics, tags and assignees. Separate texts, media and links per channel are possible. Optionally, a boost can be set up right away.

update_post

Edits an existing post, for example text, channels, schedule, media or boost.

update_post_tags

Adds or removes tags on one or more posts without changing the other tags.

submit_post

Submits a post for approval or activates it.

delete_post

Deletes a post. This is only possible for posts that were created via the MCP.

Supported channels include Facebook, Instagram, LinkedIn, TikTok, X, Pinterest, YouTube and Google Business Profile. Channels without a connected account for the brand are deselected automatically.

Media

Tool

Purpose

upload_media

Imports a publicly accessible image or video into Adhook using its URL.

create_media_upload_url

Creates a short-lived upload URL for a local file. Used by the Local Media extension (see below).

get_pinterest_boards

Lists a brand's Pinterest boards. This is required for creating Pinterest posts.

Ad campaigns and boosts

Tool

Purpose

get_campaigns

Lists or searches ad campaigns.

get_campaign_by_id

Retrieves all details of a campaign, including ad groups, budget, placements and creatives.

create_campaign

Creates an ad campaign with creatives, targeting, budget, schedule and channels, for example Meta, LinkedIn, Google Ads, TikTok and Pinterest. A total budget is split across the selected channels.

update_campaign

Edits an existing campaign, for example name, schedule, creatives, targeting, budget, channels or topics.

submit_campaign

Checks a campaign and submits it for approval or activates it, depending on the approval process you have set up.

change_campaign_status

Pauses, resumes or ends a campaign.

update_campaign_tags

Adds or removes tags on one or more campaigns.

delete_campaign

Deletes a campaign in Adhook. It is also deleted on the ad platforms only if you explicitly ask for it.

get_targeting_templates

Lists a brand's active targeting templates. The template is used for boosts via create_post or update_post.

A boost is configured directly when creating or updating a post. Among other things, you can define budget, channel, duration, placements and targeting template.

Topics, tasks and calendar

Tool

Purpose

get_topics, get_topic_by_id

Lists topics or retrieves the details of a topic.

create_topic, update_topic

Creates or edits a topic for editorial planning.

delete_topic

Deletes a topic. The link to posts, campaigns and calendar entries is removed, and linked tasks are deleted.

get_tasks, get_task_by_id

Searches tasks by text, topic, assignee, status, brand or due date, or retrieves a task.

create_task, update_task

Creates a task or edits, reschedules, assigns or completes it.

delete_task

Deletes a task.

get_custom_events, get_custom_event_by_id

Lists your own calendar entries such as newsletters, print campaigns, press releases or events, or retrieves an entry.

create_custom_event, update_custom_event

Creates or edits a calendar entry with date, type, description, topics, budget and assignee. Nothing is sent or published in the process.

delete_custom_event

Deletes a calendar entry.

Community management

Tool

Purpose

get_threads, get_thread_by_id

Lists conversations in the inbox or retrieves a conversation.

update_thread, assign_thread

Changes the status, tags or flag of a conversation, or assigns it to a person or team.

get_messages, get_message_by_id

Lists comments, messages, mentions and reviews, or retrieves a single message.

get_message_post_details

Shows the original post a comment belongs to.

get_moderation_activity

Shows the history and internal notes for a conversation or message.

update_message_status, assign_message

Sets the status of a message (open, in progress, done) or assigns it.

update_message, update_message_tags

Changes the tags, flag or sentiment of one or more messages.

reply_message

Replies to a comment, message or mention directly on the platform.

add_discussion_note

Adds an internal note, optionally notifying team members or sending an email.

moderate_message_action

Likes, hides, unhides or deletes a comment on the platform. Which actions are possible depends on the network. For example, third-party comments cannot be deleted on TikTok.

Social listening

Tool

Purpose

get_social_listening_items

Retrieves social listening content with engagement metrics: posts from monitored profiles (for example competitors), hashtag and keyword matches, news, websites, mentions, comments and reviews. Also useful for content ideas compared with your own posts.

Influencers

Tool

Purpose

get_influencers, get_influencer_by_id

Lists influencers or retrieves a profile with social media accounts, follower counts, brands and tags.

get_influencer_posts

Lists the logged influencer posts.

get_influencer_results

Shows an influencer's aggregated results for a time period, for example posts, engagement, views and reach.

log_influencer_post_by_url

Logs an Instagram post or reel by its URL. Date, caption and public metrics are loaded automatically. This requires a public business or creator account.

create_influencer_post

Logs an influencer post manually with date, channel and metrics, for example for channels other than Instagram.

Reporting

Tool

Purpose

get_reports, get_report_by_id

Lists existing reports or retrieves the settings of a report.

create_report, update_report

Creates a new report or changes its name, time period, data scope, filters and styling.

delete_report

Deletes a report.

get_report_widgets

Lists the widgets and metrics of a report.

get_report_widget_data

Retrieves the data of a single widget.

create_report_widget, update_report_widget

Adds charts, tables, KPI summaries, texts, images or page breaks to a report or changes them, including data source, metrics, segments, filters and sorting.

delete_report_widget

Removes a widget from a report.

run_headless_report

Runs an ad hoc analysis for a time period without saving a report. Accesses 10+ data sources, 100+ segments and 250+ metrics, for example paid ads, organic posts, website analytics, community management, newsletters and SEO.

Example requests

  • "Show me all scheduled posts for the brand Example Ltd for next week."

  • "Create a LinkedIn and Instagram post for Example Ltd for next Friday at 10:00 am."

  • "Use the following text and the images product-1.jpg and product-2.jpg for the post."

  • "Boost this post with CHF 150 over seven days. Use the objective Engagement and the targeting template DACH Broad."

  • "Which comments from yesterday are still unanswered? Suggest replies."

  • "Which reports are available for Example Ltd?"

  • "How did the brand's reach develop last month?"

  • "Show me the website traffic from email, broken down by campaign."

Using local images and videos

A remote connector like the Adhook MCP cannot access files on your computer directly. An image dragged into the chat is not passed on to the Adhook MCP by the AI assistant either.

For files that only exist locally, an additional extension is therefore available. It runs on your computer and uploads the selected file to Adhook.

Important: This feature is only available with Claude Desktop and Claude Code. It does not work in claude.ai in the browser or in other web-only clients. There, use publicly accessible URLs for your post media, or upload the files to the Adhook Media Library first and use the media URLs.

1. Refresh the Adhook connector

To make the create_media_upload_url tool available to the assistant, disconnect the Adhook connector once and reconnect it.

Alternatively, you can restart Claude Desktop.

2. Create a media folder

Create a folder from which the assistant is allowed to use files.

Examples:

  • macOS: ~/AdhookMedia

  • Windows: C:\Users\<Name>\AdhookMedia

3. Install the extension

Claude Desktop

  1. Double-click the downloaded file. Claude Desktop then shows the installation dialog.
    If nothing happens, open Settings → Extensions → Install Extension in Claude Desktop and select the downloaded file.

  2. In the Media folder field, select the folder you created in step 2.

  3. If prompted, confirm the notice that the extension is not verified.

  4. Complete the installation. Adhook Local Media Upload then appears as an active extension under Settings → Extensions.

You don't need to install Node.js or a similar runtime separately. All required components are included in the package.

Claude Code

Run the following command in the terminal:

claude mcp add adhook-media --scope user \   --env ADHOOK_MEDIA_DIR="$HOME/AdhookMedia" \   -- npx -y @adhookio/local-media-mcp

This requires Node.js 18 or newer.

4. Use local media

Place the image or video directly in the configured media folder.

Ask the assistant, for example:

"Which images are in the media folder?"

Then create the post:

"Create an Adhook post with product.jpg and the following text: …"

The assistant uploads the file automatically and adds it to the post.

Good to know

  • The file must be located directly in the shared media folder.

  • Files in subfolders are not taken into account.

  • Use the exact file name in your request.

  • An image dragged into the chat window is not automatically used via the extension.

  • The maximum file size is 100 MB.

  • To update the extension, install the new .mcpb version in the same way. It replaces the previous version.

Troubleshooting

Problem

Solution

The assistant can't find any Adhook tools

Check the connector connection and reconnect the Adhook connector. Restart Claude Desktop if necessary.

create_media_upload_url is missing

Disconnect the Adhook connector and reconnect it.

The Local Media extension shows "not running"

Restart Claude Desktop.

The upload fails

Check in the extension settings whether the path to the media folder is correct.

Images or videos are not found

Check that the files are directly in the media folder and not in a subfolder.

A post can't be deleted

Only posts that were previously created via the MCP can be deleted via the MCP.

Security and privacy

  • The connection uses OAuth with your Adhook login. Your password is not shared with the assistant.

  • The assistant can only access data and actions that your Adhook user is authorized for.

  • The Local Media extension runs exclusively on your computer.

  • The extension can only access files in the folder you selected.

  • You can revoke the connection at any time in the assistant or in your Adhook settings.

For agency admins: Adhook Management MCP

This section is only relevant if you set up new clients and ad accounts for your agency. For day-to-day work with posts, campaigns and reports, the Adhook MCP is all you need.

The Management MCP is a separate server that you connect as a second connector. It lets you handle the onboarding of a new client in the chat: create the brand, create an ad account, request access to the client's Facebook page, set user permissions in Meta Business Manager and assign everything to the brand.

Some actions, such as creating brands and ad accounts, are reserved for admins. Ad accounts cannot be deleted again via the API. The assistant therefore asks for your confirmation before such steps, for example for the name, currency and time zone of a new ad account.

Connection

Add a second connector as described above under Installation and connection, but with this URL:

https://mcp.adhook.io/mcp/management

Give the connector its own name, for example Adhook Management. In Claude Code:

claude mcp add --transport http --scope user adhook-management https://mcp.adhook.io/mcp/management

Typical Meta onboarding flow

  1. Look up the client's Facebook page by its URL.

  2. Check whether your Business Manager already has access to the page, and if not, request access from the client.

  3. Wait until the client has approved the request, then assign people from your Business Manager to the page.

  4. Create the brand in Adhook.

  5. Create a Meta ad account and assign it to the brand. The client's page is set as the advertiser.

  6. Assign additional people to the ad account.

  7. Assign the Facebook page and Instagram account to the brand and check the result.

You can also simply ask the assistant: "Set up the new client Example Ltd with the Facebook page facebook.com/exampleltd." It will then guide you through these steps.

Brands

Tool

Purpose

get_subtenants, find_subtenant_by_name

Lists your brands or finds a brand by its name.

get_subtenant_by_id

Shows all settings of a brand, including the assigned channel accounts.

create_subtenant

Creates a new brand, branch or client. Admins only.

update_subtenant

Changes a brand's general settings, for example name, parent brand, website, languages, assignee, status, approvals for posts and ads, and the beneficiary and payer for Meta ads.

assign_meta_assets_to_subtenant

Assigns a Meta ad account, a Facebook page and an Instagram account to a brand.

Meta (Facebook and Instagram)

Tool

Purpose

get_meta_ad_accounts

Lists the Meta ad accounts connected in Adhook.

sync_meta_ad_accounts

Imports ad accounts you have gained access to since connecting Facebook, for example accounts created manually in Business Manager.

create_meta_ad_account

Creates a new Meta ad account in your agency's Business Manager and optionally assigns it to a brand. Admins only.

get_facebook_pages

Lists the Facebook pages the connected Facebook user has access to.

resolve_facebook_page

Looks up the page ID and name of a Facebook page by its URL, username or ID.

get_facebook_page_access_status

Shows whether your Business Manager has access to a page and the status of open access requests.

request_facebook_page_access

Requests agency access to the client's Facebook page so you can run ads on their behalf.

get_meta_business_users

Lists the people and system users in your agency's Business Manager.

assign_user_to_facebook_page, remove_user_from_facebook_page

Assigns a person from your Business Manager to a Facebook page with specific tasks (for example running ads and viewing insights), changes the tasks or removes the person.

get_meta_ad_account_users

Lists the people assigned to an ad account, including their tasks.

assign_user_to_meta_ad_account, remove_user_from_meta_ad_account

Assigns a person to an ad account with a role, changes the role or removes the person.

LinkedIn

Tool

Purpose

get_linkedin_ad_accounts

Lists the LinkedIn ad accounts connected in Adhook.

get_linkedin_pages

Lists the LinkedIn company pages managed by the connected LinkedIn account.

create_linkedin_ad_account

Creates a new LinkedIn ad account for a company page. The currency cannot be changed afterwards, and you then need to add a payment method in LinkedIn. Admins only.

sync_linkedin_ad_accounts

Imports LinkedIn ad accounts you have gained access to since connecting LinkedIn.

Users

Tool

Purpose

get_current_user

Shows the currently connected Adhook user.

get_users

Lists the users in your account, for example to set an assignee for a brand.

Example requests

  • "Create the brand Example Ltd and create a Meta ad account in CHF."

  • "Request access to the Facebook page facebook.com/exampleltd."

  • "Who in our Business Manager has access to Example Ltd's ad account?"

Good to know

  • If tools like create_subtenant are missing, the Management connector is not connected.

  • Only admins can create brands and ad accounts.

  • If an existing ad account is not found, ask the assistant to sync the Meta or LinkedIn ad accounts.

  • The assistant only carries out actions with wider impact, such as creating ad accounts or changing user permissions, after your confirmation.

Did this answer your question?