protogrid

Search / io.github.Jfromtheroc/the-profound-agency

The Profound Agency

R0· no sign-in

Search, price and order press placements across 1,600+ publications. Free AI-visibility audits too.

v1.1.0 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality72needs work
Trust97of 100
Uptime, 30 days100%
Latency p501214 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "the-profound-agency": {
      "type": "http",
      "url": "https://theprofound.agency/api/mcp/"
    }
  }
}
claude mcp add --transport http the-profound-agency https://theprofound.agency/api/mcp/
[mcp_servers.the-profound-agency]
url = "https://theprofound.agency/api/mcp/"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "the-profound-agency": {
      "type": "remote",
      "url": "https://theprofound.agency/api/mcp/",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "the-profound-agency": {
      "type": "http",
      "url": "https://theprofound.agency/api/mcp/"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=the-profound-agency&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vdGhlcHJvZm91bmQuYWdlbmN5L2FwaS9tY3AvIn0%3D"
}
{
  "servers": {
    "the-profound-agency": {
      "type": "http",
      "url": "https://theprofound.agency/api/mcp/"
    }
  }
}
{
  "mcpServers": {
    "the-profound-agency": {
      "httpUrl": "https://theprofound.agency/api/mcp/"
    }
  }
}
extensions:
  "the-profound-agency":
    enabled: true
    name: "the-profound-agency"
    type: streamable_http
    uri: "https://theprofound.agency/api/mcp/"
    timeout: 300

Quality 72 / 100needs work

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene93 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations24 of 24 tools declare readOnlyHint or destructiveHint
  • warn
    tools.directory_hints6 of 24 tools declare all four hints; missing: search_placements (idempotentHint); get_placement (idempotentHint); list_categories (idempotentHint); …
  • pass
    tools.token_costabout 7,275 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability25 · weight 15
  • warn
    stability.changes36 tool changes in 30 days
  • fail
    stability.rug_pull1 tools kept their name but changed most of their description in 30 days; review before trusting them
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

24 tools, about 7,275 tokens to load them all · tool set d280a87588ad · tools last changed 2026-10-14 · checked 2026-10-20 17:34 UTC

Tool changes

  • compare_placementschangeddescription
    before

    Two to four publications side by side: price, Domain Authority and Rating, turnaround, region, disclosure, indexing and categories, with which is cheapest, fastest and highest in authority. Use ids from search_placements. Figures only — which is better depends on what the client wants.

    after · 76% of words in common

    Two to four publications side by side: price, Domain Authority and Rating, monthly traffic, link type, turnaround, region, disclosure, indexing, categories, genres, accepted niches and their prices, and labels, with which is cheapest, fastest, highest in authority and most visited. Use ids from search_placements. Figures only — which is better depends on what the client wants.

  • create_orderchangedinput schema
  • plan_placementschangeddescription, input schema
    before

    Recommend a set of publications for a goal, audience and budget — already quoted, total inside budget including the 3.5% processing fee. Use this when a buyer says what they want to achieve and what they can spend, rather than naming publications. The shareUrl opens the store with the planned placements in the cart; the plan recommends, it reserves nothing.

    after · 81% of words in common

    Recommend a set of publications for a goal, audience and budget — already quoted, total inside budget including the 3.5% processing fee. Use this when a buyer says what they want to achieve and what they can spend, rather than naming publications. A backlink or SEO goal leaves out nofollow links. The shareUrl opens the store with the planned placements in the cart (none when a niche price applies); the plan recommends, it reserves nothing.

  • quote_placementschangeddescription, input schema
    before

    Price a set of placements exactly as the store's checkout would, including the 3.5% processing fee. Use this to give a client a total before creating an order. Quoting does not reserve anything. Placements that are not available are refused.

    after · 66% of words in common

    Price a set of placements exactly as the store's checkout would, including the 3.5% processing fee. Use this to give a client a total before creating an order. Quoting does not reserve anything. Placements that are not available are refused. An item with a niche is priced at the outlet's price for that niche; where that differs from the standard price there is no shareUrl, since the store's cart charges standard prices.

  • list_categorieschangeddescription
    before

    Every category in the network with how many publications carry it. Use it to pick valid values for search_placements.

    after · 68% of words in common

    Every category, genre and restricted niche in the network, each with how many publications carry it. Use them to pick valid values for search_placements' categories, genres and niche filters.

  • get_placementchangeddescription
    before

    Full detail for one publication by its id (the slug from search_placements), including price, price with the 3.5% checkout processing fee, authority scores, turnaround, disclosure policy, link type (linkAttributes: "dofollow" where the store sells it as dofollow, otherwise "unspecified"; dofollowVariantId points to a separate dofollow package for the same outlet), whether it can be ordered now (available), the outlet's logo, and an example article where one is published.

    after · 58% of words in common

    Full detail for one publication by its id (the slug from search_placements), including price, price with the 3.5% checkout processing fee, authority scores, estimated monthly traffic (monthlyTraffic), turnaround, disclosure policy, link type (linkAttributes: "dofollow" or "nofollow" as recorded, "unspecified" where the catalog has no record; dofollowVariantId points to a separate dofollow package for the same outlet), genres (what the outlet covers), niches (restricted subjects it accepts) with nichePricing where an article in one is priced differently, labels (e.g. Staff, Press Release, 6 Month Lifespan), whether it can be ordered now (available), the outlet's logo, and an example article where one is published. A field the catalog has no value for is left out: unknown, not "no".

  • search_placementschangeddescription, input schema
    before

    Search the publisher network for editorial placements. Filter by price, Domain Authority, Domain Rating, category, region, turnaround and whether the outlet is Google-indexed or LLM-ready, link type and availability. Returns a page of matches, highest Domain Authority first by default. Each result carries the same fields as get_placement.

    after · 73% of words in common

    Search the publisher network for editorial placements. Filter by price, Domain Authority, Domain Rating, monthly traffic, category, genre, region, turnaround, link type (dofollow or nofollow), whether the outlet is Google-indexed or LLM-ready, a restricted niche it accepts, and availability. Returns a page of matches, highest Domain Authority first by default. Each result carries the same fields as get_placement; a search with niche adds nichePrice, the price of an article in that niche.

  • review_contentchangeddescription, input schema, annotations
    before

    The client's decision on the latest outline or draft from get_client_order. Approving an outline starts the draft; approving the draft sends it to our editors for a final read, and cannot be undone. Show the client the full text and get their explicit go-ahead first. Changes can be asked for twice per piece; after that our team works with the client directly.

    after · 96% of words in common

    The client's decision on one publication's latest outline or draft from get_client_order. Approving an outline starts the draft; approving the draft sends it to our editors for a final read, and cannot be undone. Show the client the full text and get their explicit go-ahead first. Changes can be asked for twice per piece; after that our team works with the client directly.

  • submit_contentchangeddescription, input schema, annotations
    before

    What the article should be built from, the same as the form on the client's order page. Needs at least who they are and what the article should say, or a draft of their own. Only while the order is waiting for content; sending again replaces the earlier version. We then write an outline for the client to approve. Confirm the content with the client before sending.

    after · 91% of words in common

    What one publication's article should be built from, the same as the form on the client's order page. Each publication on an order needs its own. Needs at least who they are and what the article should say, or a draft of their own. Only while that publication is waiting for content; sending again replaces the earlier version. We then write an outline for the client to approve. Confirm the content with the client before sending.

  • get_client_orderchangeddescription, annotations
    before

    For a paid order: its stage, what we need next, the content the client sent, the latest outline or draft we wrote, and the publication with a sample of its writing. Needs the client's private order link, which only they have; a wrong or revoked link reads like a missing order.

    after · 83% of words in common

    For a paid order: each publication on it, with its own stage, what we need next, the content the client sent, the latest outline or draft we wrote, and a sample of the publication's writing. Each publication is worked through separately. Needs the client's private order link, which only they have; a wrong or revoked link reads like a missing order.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 97 / 100

provenance90
liveness100
freshness100
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-100% +updated-18d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://theprofound.agency/api/mcp/ streamable-httpnoneyes100%1214 ms2025-11-252026-10-20

Tools (24)

askread-onlyA question in plain words, answered from theprofound.agency with source URLs: publication prices, whether a category can advertise on a channel, the fee, refund terms, definitions, channel requirements, and anything the FAQs, glossary, channel pages or articles cover. Answers are quoted or read from live data, never generated; answer is null when the site does not cover it.
can_i_advertiseread-onlyWhether a restricted category — alcohol, cannabis/CBD, tobacco, casinos, firearms, supplements, political, housing, loans, crypto and the rest — can run on a channel, and with what limits (age gates, restricted targeting, pre-approval). Give a channel slug from list_channels to check one, or leave it out to see every channel; add a two-letter state for state-level rules. Policy changes without notice, so treat the answer as guidance to confirm with the team.
check_order_statusread-onlyPayment and fulfilment state for an order you created. Requires the billing email the order was placed with, which is what stops anyone reading anyone else's order. Returns paid: false plus the payment link while it is still awaiting payment. An order that was never paid and has been swept will report as not found.
compare_placementsread-onlyTwo to four publications side by side: price, Domain Authority and Rating, monthly traffic, link type, turnaround, region, disclosure, indexing, categories, genres, accepted niches and their prices, and labels, with which is cheapest, fastest, highest in authority and most visited. Use ids from search_placements. Figures only — which is better depends on what the client wants.
create_booking_linkread-onlyThe agency's booking URL for a 30-minute meeting, returned with the human's name and email as separate fields. Give the human the URL and ask them to enter the name and email on the booking page — the meeting does not exist until they confirm it there. Never present a meeting as booked on the strength of this link alone, and never put the name or email into the URL yourself.
create_orderOpen a pending order for a client and return a payment link. IMPORTANT: this does not pay for anything. The order stays unpaid until a human opens the returned payUrl and pays on the store's checkout. Give the link to the client or to someone at your agency — you cannot complete payment yourself, and you must not tell the client the placement is bought until check_order_status reports paid: true. Confirm the placements and the total with a human before calling this. No account or API key is required, but an unpaid order is deleted automatically after 72 hours, so send the link promptly.
create_text_linkread-onlyA text message to the agency's number, (908) 448-4001, prepared for the human to send from their own phone: returns the message and an sms: link that opens their messaging app with it filled in. Nothing is sent until the human taps send, so show them the message first and never send it for them without their go-ahead. For a scheduled call, create_booking_link is better; use this for a quick question or to ask for a call back.
get_availabilityread-onlyReal open slots from the agency's appointment calendar: 30-minute meetings on weekdays, booked in the agency's timezone. Returns each slot's start, end and a readable label. A slot is not a booking — hand the human a link from create_booking_link so they confirm it.
get_catalog_changesread-onlyWhat each weekly catalogue sync changed: publications added and removed, and price changes, newest first. Filter by a date (only newer syncs), a maximum price, one or more categories, a minimum Domain Authority, additions only, or price drops only — so an agent can watch for new outlets or cheaper placements without re-reading the whole catalogue.
get_channelread-onlyThe full detail for one paid media product: what it is, where the ads run, the creative formats, the targeting that can be layered on, and caveats — the limits and prerequisites a buyer should know before submitting a brief. Also lists the capabilities it delivers. Priced per campaign, so no price is returned; submit_campaign_brief gets a quote.
get_client_orderread-onlyFor a paid order: each publication on it, with its own stage, what we need next, the content the client sent, the latest outline or draft we wrote, and a sample of the publication's writing. Each publication is worked through separately. Needs the client's private order link, which only they have; a wrong or revoked link reads like a missing order.
get_placementread-onlyFull detail for one publication by its id (the slug from search_placements), including price, price with the 3.5% checkout processing fee, authority scores, estimated monthly traffic (monthlyTraffic), turnaround, disclosure policy, link type (linkAttributes: "dofollow" or "nofollow" as recorded, "unspecified" where the catalog has no record; dofollowVariantId points to a separate dofollow package for the same outlet), genres (what the outlet covers), niches (restricted subjects it accepts) with nichePricing where an article in one is priced differently, labels (e.g. Staff, Press Release, 6 Month Lifespan), whether it can be ordered now (available), the outlet's logo, and an example article where one is published. A field the catalog has no value for is left out: unknown, not "no".
list_capabilitiesread-onlyThe outcomes we can deliver — geo-fencing, website retargeting, visit tracking, identity resolution and so on — each in plain language with the products that provide it. Use this to translate what a client wants into what to ask for.
list_categoriesread-onlyEvery category, genre and restricted niche in the network, each with how many publications carry it. Use them to pick valid values for search_placements' categories, genres and niche filters.
list_channelsread-onlyEvery paid media product we run — Meta, Connected TV, geo-targeted mobile, search, audio, out-of-home and the rest — each with a one or two sentence description. The slugs are what submit_campaign_brief takes as channels. Use get_channel for the full detail of one.
plan_placementsread-onlyRecommend a set of publications for a goal, audience and budget — already quoted, total inside budget including the 3.5% processing fee. Use this when a buyer says what they want to achieve and what they can spend, rather than naming publications. A backlink or SEO goal leaves out nofollow links. The shareUrl opens the store with the planned placements in the cart (none when a niche price applies); the plan recommends, it reserves nothing.
quick_visibility_checkread-onlyFive basics of whether AI systems can read a website, checked instantly from its public pages: AI crawlers allowed in robots.txt, an llms.txt, Organization and FAQ structured data, and a title and description. Free, no score, nothing stored. For the full audit — scored out of 100 and reviewed by a person — use request_audit.
quote_placementsread-onlyPrice a set of placements exactly as the store's checkout would, including the 3.5% processing fee. Use this to give a client a total before creating an order. Quoting does not reserve anything. Placements that are not available are refused. An item with a niche is priced at the outlet's price for that niche; where that differs from the standard price there is no shareUrl, since the store's cart charges standard prices.
request_auditRequest a free audit of whether AI systems — ChatGPT, Perplexity, Google's AI Overviews and crawling agents — can reach, read and quote a website. Scored out of 100 across crawler access, structured data, answer readiness, agent files, off-site authority and freshness, from public data only: no logins, no analytics access and nothing installed. Free, and nothing is purchased or committed. Use this when a client wants to know why assistants do not mention them; use submit_campaign_brief when they already want to buy media. A person reviews every audit and replies to the contact email — this tool does not return a score.
review_contentdestructiveThe client's decision on one publication's latest outline or draft from get_client_order. Approving an outline starts the draft; approving the draft sends it to our editors for a final read, and cannot be undone. Show the client the full text and get their explicit go-ahead first. Changes can be asked for twice per piece; after that our team works with the client directly.
search_placementsread-onlySearch the publisher network for editorial placements. Filter by price, Domain Authority, Domain Rating, monthly traffic, category, genre, region, turnaround, link type (dofollow or nofollow), whether the outlet is Google-indexed or LLM-ready, a restricted niche it accepts, and availability. Returns a page of matches, highest Domain Authority first by default. Each result carries the same fields as get_placement; a search with niche adds nichePrice, the price of an article in that niche.
submit_article_draftdestructiveFile the client's article draft against a paid order. The order id plus the billing email on the order prove ownership — a wrong pairing reads exactly like a missing order. The order must be paid: an unpaid order has bought nothing yet. The draft goes to the editorial team; a human reviews and approves it before anything is published, so never tell the client it is published or scheduled. Confirm the draft text with a human before filing.
submit_campaign_briefSubmit a paid media brief for a client and have the team come back with a quote — impressions, placements and a recommendation. Use this for advertising campaigns (display, video, Connected TV, social, search, audio, out-of-home), which are priced per campaign; use create_order instead for buying a press placement from the publisher catalogue, which has a fixed price. Nothing is purchased or committed here: it opens a conversation, and a human prices it and replies. Pick capabilities when you know the outcome the client wants, products when you know the channels, or both. The response scores the brief's completeness (0-100) and lists the most valuable missing details — the brief is filed regardless, so ask the human for the gaps to get priced faster. Confirm the details with a human before sending.
submit_contentdestructiveWhat one publication's article should be built from, the same as the form on the client's order page. Each publication on an order needs its own. Needs at least who they are and what the article should say, or a draft of their own. Only while that publication is waiting for content; sending again replaces the earlier version. We then write an outline for the client to approve. Confirm the content with the client before sending.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.Jfromtheroc/the-profound-agency",
  "title": "The Profound Agency",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://theprofound.agency/api/mcp/",
      "type": "streamable-http"
    }
  ],
  "version": "1.1.0",
  "repository": {
    "id": "1402181182",
    "url": "https://github.com/Jfromtheroc/the-profound-agency",
    "source": "github"
  },
  "websiteUrl": "https://theprofound.agency/mcp/",
  "description": "Search, price and order press placements across 1,600+ publications. Free AI-visibility audits too."
}