Engagemii for Databricks / Docs
The Engagemii data MCP server gives AI agents company data: lookup, search, AI visibility, AI engine reads and business relationships, across 81M+ companies. This page covers the endpoint, sign-in, each tool's inputs and outputs, limits, and the columns in the dataset.
Server URL
https://api.engagemii.com/api/mcp/dataStreamable HTTP. Each POST carries one JSON-RPC message or a batch of up to 10, and gets one JSON response. A GET asking for an event stream returns 405. Methods: initialize, ping, tools/list, tools/call. Protocol version 2025-03-26. All tools only read data.
Five tools work without sign-in. company_search and full records need a signed-in Engagemii data account. A call that needs sign-in, or carries a bad or expired token, gets HTTP 401 with a WWW-Authenticate header pointing at the protected resource metadata, which is how MCP clients find the sign-in server.
| MCP server (streamable HTTP) | https://api.engagemii.com/api/mcp/data |
| Authorization endpoint | https://api.engagemii.com/api/mcp/oauth/authorize |
| Token endpoint | https://api.engagemii.com/api/mcp/oauth/token |
| Registration endpoint (RFC 7591) | https://api.engagemii.com/api/mcp/oauth/register |
| Revocation endpoint (RFC 7009) | https://api.engagemii.com/api/mcp/oauth/revoke |
| Authorization server metadata (RFC 8414) | https://api.engagemii.com/.well-known/oauth-authorization-server |
| Protected resource metadata (RFC 9728) | https://api.engagemii.com/.well-known/oauth-protected-resource/api/mcp/data |
| Grant types | authorization_code (PKCE with S256 required), refresh_token, client_credentials |
| Scopes | data:read. Add offline_access to receive a refresh token. |
| Client authentication | none (public clients with PKCE), client_secret_basic, client_secret_post |
| Token lifetimes | Access token 1 hour. Refresh token 30 days, replaced on every use. Authorization code 10 minutes. |
| Dynamic Client Registration | Open registration for the authorization code grant; send client_name and redirect_uris. A client for client_credentials must be registered with a data API key in the Authorization header and acts as that account. 20 registrations per IP address per hour. |
| Sign-in page | The person signs in with a work email link (a free data account is created if none exists) or pastes a data API key from the data portal. |
| Other credentials | The server also accepts a data API key directly: Authorization: Bearer edk_..., or the X-Engagemii-Data-Key header. |
In your workspace open Unity Gateway, choose MCPs, click + MCP, then Connect an existing MCP server. Pick a catalog and schema, name it (for example engagemii), and click Create new connection.
Enter the server URL above. For the authentication method, the simplest choice is Dynamic Client Registration: Host api.engagemii.com, Port 443, Base path /api/mcp/data, OAuth scope data:read offline_access. Databricks registers itself with Engagemii, so there is no client ID to copy.
Register a client once with your workspace's redirect address, and keep the client_id and client_secret it returns:
curl -X POST https://api.engagemii.com/api/mcp/oauth/register \
-H "Content-Type: application/json" \
-d '{"client_name":"Databricks",
"redirect_uris":["https://<workspace-hostname>/login/oauth/http.html"]}'Then fill in Client ID, Client secret, Authorization endpoint and Token endpoint from above, and OAuth scope data:read offline_access.
Click Create & load tools, then Login when asked. The Engagemii sign-in page opens: enter your work email and press Allow in the email we send, or paste your data API key from the data portal. No account yet? The email link creates a free one. Choose the tools to expose and click Create MCP Service.
Open AI Playground, choose a model with Tools enabled, click + Add tool, choose MCP Servers, then External MCP servers, then engagemii. Ask, for example: "Look up Engagemii, then show its AI visibility and which AI engines read its Engagemii page."
For a connection with no person signing in, register a client while signed in with your data API key. It gets the client credentials grant and acts as your account:
curl -X POST https://api.engagemii.com/api/mcp/oauth/register \
-H "Authorization: Bearer <your edk_ API key>" \
-H "Content-Type: application/json" \
-d '{"client_name":"Databricks job","grant_types":["client_credentials"]}'Use its Client ID and Client secret with the Token endpoint above and scope data:read.
Pass the website that company_lookup returns as domain to the other company tools. Every result is JSON in a text content block. The full input schema of each tool is returned by tools/list.
company_lookupNo sign-inFind a company by name, website or stock ticker.
Inputs
querystring, requiredfull_recordbooleanReturns
query, found, closestMatches, matches[] (up to 5: name, domain, ticker, industry, aiVisibilityScore, siteStatus, profileUrl), bestMatch (name, domain, ticker, industry, siteStatus, siteStatusDetail, lastChecked, scores, networkAuthority, aiReadsTotal, relationshipsOnRecord, filingRelationships, verifiedConnections, profileUrl), and fullRecord when asked (available, record with the data file columns, lookupsLeft, license).
company_searchSign-inList companies by industry, US state, country and AI visibility band, highest AI visibility first. One filter set returns its top rows; there is no paging.
Inputs
industrystringstatestringcountrystringscore_bandhighly_visible | visible | borderline | near_invisiblelimitnumberReturns
filters, count, companies[] (name, domain, industry, city, state, country, aiVisibilityScore, profileUrl), order, searchRowsLeftToday, fullFiles, disclaimer. At least one filter is required.
company_ai_visibilityNo sign-inA company's AI visibility record.
Inputs
domainstring, requiredReturns
found, name, domain, industry, scores (aiVisibility 0 to 10 with band Highly visible, Visible, Borderline or Near-invisible; aiNamingLikelihood 0 to 100; agentReadiness and aiAdoption 0 to 100 when held), scoredAt, networkAuthority, relationshipsOnRecord, siteStatus, siteStatusDetail, lastChecked, onPageSignals and offPageSignals (six each, rated Weak, Fair, Good or Strong), signalBands, profileUrl, disclaimer. Each field is described under Result fields below. A confirmed dead site returns every score and networkAuthority as 0, onPageSignals and offPageSignals as null, signalBands reading "No signal is rated because the website is not live.", and a message saying what the check saw.
company_ai_readsNo sign-inWhich AI engines read the company's Engagemii profile page, and how often.
Inputs
domainstring, requiredReturns
found, name, domain, page, siteStatus, totalReads, lastRead, engines[] (name, reads), largest first. Reads are counted on our own servers and are all-time totals.
company_relationshipsNo sign-inWho the company does business with.
Inputs
domainstring, requiredlimitnumberReturns
found, name, domain, fromFilings (total, companies[] with name, domain, relationship and profileUrl, linkedWithoutWebsite), verified (total, companies[]), mapUrl, note when a list is cut. relationship is customer, supplier, distributor, reseller or partner: what the other company is to this one.
dataset_sampleNo sign-inReturns the first 15 rows of the free sample (500 US companies, all 113 columns, the same sample as on Databricks Marketplace); the full file downloads as Excel or CSV at engagemii.com/aeo/data after a work email. Always the same rows; phone numbers are left out here.
Inputs
None.
Returns
rows[] (the columns in the data dictionary below; _license reads the sample notice), about, fullDataset.
The fields in a company_ai_visibility result. company_lookup's bestMatch uses the same names.
scores.aiVisibility | 0 to 10, two decimals: how visible the company is to AI answer engines. band is Highly visible (8 to 10), Visible (6 to 7.99), Borderline (4 to 5.99) or Near-invisible (below 4), the same words as the brand page and the data files. |
scores.aiNamingLikelihood | 0 to 100: how likely AI answers are to name the company. |
scores.agentReadiness | 0 to 100 when held: how ready the website is for AI shopping and booking agents. |
scores.aiAdoption | 0 to 100 when held: how much the company itself uses AI on its website. |
scoredAt | When the AI visibility score took its current value, the same date as the brand page's "Last scored" (the last crawl date only when no score date is held). |
networkAuthority | 0 to 10, one decimal: how connected the company is in the Engagemii Index Network. null when the company is not connected yet (the networkAuthority column in a data file writes 0 for that). 0 when the website is confirmed dead. |
relationshipsOnRecord | How many business relationships the company has on record: companies named with it in public annual reports plus connections both companies confirmed on Engagemii. company_relationships lists them. |
siteStatus | live: the last check showed an active business site. dead: a confirmed check showed a parked, placeholder, spam or non-business page, and every score reads 0. unconfirmed: no confirmed check yet. |
siteStatusDetail | One sentence on what the last check saw, with its date. null when unconfirmed. |
lastChecked | When the website was last checked. null when unconfirmed. |
onPageSignals, offPageSignals | Six signals each, rated Weak, Fair, Good or Strong. null when the website is confirmed dead: no signal is rated because the site is not live. |
signalBands | One sentence on how the signals are rated: "Each signal is rated Weak, Fair, Good or Strong.", or "No signal is rated because the website is not live." for a confirmed dead site. |
profileUrl | The company's public Engagemii profile page. |
Scores are automated estimates and are not investment advice.
| Caller | Tool calls | company_search | Relationship names per list |
|---|---|---|---|
| Without sign-in | 20 calls a minute, 50 a day, per IP address | Not available | 10 |
| Free data account | 60 calls a minute, 500 a day | Up to 25 per call, within the account's daily search rows | 50 |
| Paid data account | 120 calls a minute, 5,000 a day | Up to 50 per call | 100 |
A paid account is a data account with any purchase. Daily limits reset at 00:00 UTC. Full records from company_lookup use the account's lookups: 20 free each month, then purchased lookups; a website we hold no record for is not charged. With full_record, a query that is a website not in the index yet is scanned on request: the record comes back if the scan finishes within about 20 seconds, otherwise fullRecord.status is scanning with retryAfterSec and a later call returns it.
A call over a limit returns a tool result with isError: true, a message saying when to try again, and a Retry-After header. Bad input returns a tool result with isError: true and a plain message. An unknown website returns found: false.
For whole industries or regions, use data files or the data API.
Initialize (no sign-in)
curl -X POST https://api.engagemii.com/api/mcp/data \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"protocolVersion":"2025-03-26","capabilities":{},
"clientInfo":{"name":"my-client","version":"1.0"}}}'Call a tool
curl -X POST https://api.engagemii.com/api/mcp/data \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <access token>" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
"params":{"name":"company_ai_visibility",
"arguments":{"domain":"hubspot.com"}}}'Result (text content, shortened)
{
"found": true,
"name": "HubSpot",
"domain": "hubspot.com",
"industry": "Technology",
"scores": {
"aiVisibility": { "value": 8.64, "max": 10, "band": "Highly visible" },
"aiNamingLikelihood": { "value": 100, "max": 100 },
"agentReadiness": { "value": 53, "max": 100 },
"aiAdoption": { "value": 13, "max": 100 }
},
"scoredAt": "2026-10-29T10:36:19.714Z",
"networkAuthority": 4.7,
"relationshipsOnRecord": 6,
"siteStatus": "live",
"siteStatusDetail": "The website showed an active business site when last checked (Oct 31, 2026).",
"lastChecked": "2026-10-31T20:20:06.984Z",
"onPageSignals": { "structuredData": "Weak", "contentStructure": "Strong", ... },
"offPageSignals": { "backlinks": "Strong", "domainAuthority": "Good", ... },
"profileUrl": "https://engagemii.com/aeo/brands/hubspot",
...
}Every company record has the same 113 columns, in the same order, in a data file, in dataset_sample rows, and in a company_lookup full record. 105 are included; the other 8 belong to two optional add-ons, 1 cent a record, 0.4 cents from 5,000 each: Phone and hours (main phone number for US companies, opening hours, type of business, price range, year founded and logo) and Places (chain brand and number of locations). Add-on cells are filled in data files that buy the add-on and in the free sample of 500 US companies (the same file on Databricks Marketplace and on the data page), where we hold the data; they are empty in API records and lookups. The included columns come in 11 groups: Company basics (9 columns), AI visibility score (21), AI crawler reads and naming (6), AI readiness (20), Category and audience (2), Website content (5), Location (8), Social profiles (18), Tech stack (5), Store catalog (6) and Business network (4), plus a per-row license fingerprint. Each score is a number: AI visibility and Network Authority from 0 to 10, AI naming, agent readiness and AI adoption from 0 to 100. Every part behind the AI visibility score is a word: Weak, Fair, Good or Strong. A blank cell means we don't have that value for the company, not that it doesn't exist. Emails, people's names and personal phone numbers are never in the data.
companyName | Brand name as it appears on their site. |
domain | Root domain (e.g. shopify.com). |
ticker | Stock ticker symbol. Public companies only; blank for private companies. |
cik | SEC Central Index Key. Public companies only; blank for private companies. |
websiteUrl | Full URL we crawled. |
addedToDb | When we first added this brand. |
lastUpdated | Last time any field changed. |
siteStatus | What the website showed at our last check: live (an active business site), parked (a parked or for-sale page), placeholder (a placeholder, under-construction or temporarily unavailable page), spam (content that looked like spam), notbusiness (not a business website), or unchecked (no confirmed check yet). |
siteLastChecked | Date of the check behind siteStatus. Blank when the site has no confirmed check yet. |
scoredAt | Last time we re-scored this brand. |
aeoScore | Overall AEO score from 0 to 10, with 2 decimals: how well AI engines like ChatGPT, Claude, and Perplexity can find, parse, and name this brand. |
aiVisibilityBand | The brand page's word for the AEO score: Highly visible (8 to 10), Visible (6 to 7.99), Borderline (4 to 5.99) or Near-invisible (below 4). Blank when the company has no score. |
industryRankBand | Where the company's AEO score sits among live companies in its own businessCategory, as its brand page shows it: Top 1%, Top 5%, Top 10%, Top 25% or Top 50%. Blank when the category has fewer than 100 companies, the company is in the bottom half, or the site is not live. |
previousScore | The company's AI visibility score before its current one, as we last recorded it. Blank when we hold no earlier score. |
scoreChange | Current score minus previousScore. Positive means up, negative means down. |
previousScoredAt | Date previousScore was recorded. Blank when previousScore is blank. |
structuredData | Structured Data signal, rated Weak, Fair, Good or Strong: JSON-LD / schema.org markup. |
contentStructure | Content Structure signal, rated Weak, Fair, Good or Strong: headings, sections, answerable copy. |
entityClarity | Entity Clarity signal, rated Weak, Fair, Good or Strong: how clearly the brand identifies itself. |
eeaT | E-E-A-T signal, rated Weak, Fair, Good or Strong: Experience, Expertise, Authority, Trust markers. |
technicalAeo | Technical AEO signal, rated Weak, Fair, Good or Strong: robots.txt, llms.txt, sitemaps, crawler access. |
aiDiscoverability | AI Discoverability signal, rated Weak, Fair, Good or Strong: sitemaps and entity links AI can follow. |
offPageAuthority | Overall off-page authority, rated Weak, Fair, Good or Strong: how much the rest of the web links to, mentions and trusts this brand. |
offPageBacklinks | Backlinks signal, rated Weak, Fair, Good or Strong: inbound links from other sites. |
offPageDomainAuthority | Domain Authority signal, rated Weak, Fair, Good or Strong: established authority of the domain. |
offPageReference | Reference Presence signal, rated Weak, Fair, Good or Strong: presence in public reference sources. |
offPageNews | News & Press signal, rated Weak, Fair, Good or Strong: news and press coverage. |
offPageCommunity | Community signal, rated Weak, Fair, Good or Strong: forum and community discussion. |
offPageSocial | Social Mentions signal, rated Weak, Fair, Good or Strong: social discussion and mentions. |
aiVisibilityOpener | One plain sentence about the company's AI visibility, ready to use as the first line of an email or message: which AI engines read the site, one signal as a word and the score. Built from the columns in this row. Blank when the company has no score. |
aiBotHitsTotal | How many times AI bots (GPTBot, ClaudeBot, PerplexityBot, Applebot, AmazonBot, Meta AI) have read this brand's Engagemii profile. Real demand signal. |
aiBotsSeen | Which AI bots have read this brand's Engagemii profile (semicolon-separated). |
aiReadsByEngine | Reads of this brand's Engagemii profile by each AI engine, largest first, under the names its brand page uses, for example "ChatGPT:120; Claude:30". |
aiReadsLastSeen | Date of the latest read of this brand's Engagemii profile by an AI engine. |
aiNamingPredictability | AI naming score 0-100: how likely AI engines are to name the company, where 100 = as often as the most-named brands. Explained at engagemii.com/aeo/ai-naming-predictability. |
aiNamingCategoryRank | Rank 0-100 within the company's own category. Blank when the category is too small to rank. |
agentReadinessTier | Readiness band for AI shopping agents: how prepared the site is for an agent to read it and act. |
agentReadinessIndex | Agent Readiness index (the Muse Index), 0 to 100: can an AI agent identify the business, read its offers, and transact? |
agentReadinessIdentity | 1 if the site publishes machine-readable business identity (Organization-class schema). |
agentReadinessAnswerable | 1 if the site carries answerable Q&A structure (FAQ schema). |
agentReadinessProduct | 1 if products are published in machine-readable form. |
agentReadinessOfferPrice | 1 if prices are machine-readable in offer markup. |
agentReadinessOfferAvail | 1 if availability is machine-readable in offer markup. |
agentReadinessDeepTxn | 1 if deeper transaction signals are present. |
agentReadinessConnected | 1 if the brand connects itself to the wider graph (sameAs links). |
agentReadinessBlocksAI | 1 if robots.txt blocks AI crawlers, which suppresses the index. |
hasRobotsTxt | 1 when the site publishes a robots.txt file, 0 when the site answered without one, blank when we could not tell. |
hasSitemap | 1 when the site publishes an XML sitemap (at /sitemap.xml or declared in robots.txt), 0 when it does not, blank when we could not tell. |
hasLlmsTxt | 1 when the site publishes an llms.txt file for AI engines, 0 when the site answered without one, blank when we could not tell. |
llmsTxtAudit | Our format check on that llms.txt: pass (Markdown with a top heading and links to pages), fail_no_h1 (no top heading) or fail_no_links (no links). Blank when the site has no llms.txt or it has not been checked yet. |
aiAdoptionTier | Adoption band: whether the company itself runs AI on its site. |
aiAdoptionIndex | AI Adoption index 0-100: AI-native chat, AI search, and AI tooling detected on the company's own site. |
aiAdoptionChatTools | AI chat tools detected on the site (semicolon-separated). |
aiAdoptionSearchTools | AI search tools detected on the site. |
aiAdoptionTooling | Other AI tooling and builder signals detected. |
aiAdoptionOwnSubdomain | 1 if the company runs AI on its own subdomain (e.g. ai.company.com). |
businessCategory | One of 23 business categories, the same list the data MCP server's company_search accepts. |
audienceType | B2B, B2C, or Mixed, classified from on-page signals. |
pageTitle | Homepage title tag. |
metaDesc | Homepage meta description. |
h1Headings | Homepage H1 headings. |
bodySnippet | Extract of the homepage body copy. |
pageLanguage | The homepage's declared language (its html lang attribute), such as en or en-US. Blank when the page declares none. |
city | City (when known). |
state | US state, lowercased. |
country | Country. |
hostingCountry | Two-letter country of the website's server, from the public internet registry files. This is where the site is hosted, not where the company is: many companies host abroad. Blank on hosted site builders such as Wix or Shopify, where it would name the platform's country. |
hqStreet | Street address listed on the company's own website. For a company with one location and no address on its site, the address in its public store list. |
hqZip | 5-digit or 5+4 US ZIP code. |
latitude | Latitude of the company's location, from its own website or its public store list. Blank when neither gives one. |
longitude | Longitude of the company's location, from its own website or its public store list. Blank when neither gives one. |
linkedin | LinkedIn URL found on the site. |
instagram | Instagram URL. |
facebook | Facebook URL. |
twitter | X (Twitter) URL. |
tiktok | TikTok URL. |
youtube | YouTube channel URL. |
telegram | Telegram profile link found on the company's own website, cleaned to the profile itself. Blank when none. |
pinterest | Pinterest profile link found on the company's own website, cleaned to the profile itself. Blank when none. |
threads | Threads profile link found on the company's own website, cleaned to the profile itself. Blank when none. |
discord | Discord profile link found on the company's own website, cleaned to the profile itself. Blank when none. |
snapchat | Snapchat profile link found on the company's own website, cleaned to the profile itself. Blank when none. |
reddit | Reddit profile link found on the company's own website, cleaned to the profile itself. Blank when none. |
bluesky | Bluesky profile link found on the company's own website, cleaned to the profile itself. Blank when none. |
github | GitHub profile link found on the company's own website, cleaned to the profile itself. Blank when none. |
substack | Substack profile link found on the company's own website, cleaned to the profile itself. Blank when none. |
medium | Medium profile link found on the company's own website, cleaned to the profile itself. Blank when none. |
iosAppUrl | The company's iPhone app on the App Store, linked from its website. Blank when the site links none. |
androidAppUrl | The company's Android app on Google Play, linked from its website. Blank when the site links none. |
detectedPlatform | What runs the site: shopify, wordpress, wix, webflow, woocommerce, squarespace, ghost, hubspot, etc. |
paymentProcessors | Payment processors detected on the site (stripe, paypal, square, apple_pay, google_pay, shopify_payments, braintree, adyen, amazon_pay, affirm, afterpay, klarna, authorize_net). |
analytics | Analytics platforms detected (ga4, gtm, plausible, fathom, mixpanel, segment, amplitude, heap, hotjar, fullstory). |
emailMarketing | Email marketing or marketing automation (klaviyo, mailchimp, hubspot_forms, attentive, sendgrid, customer_io, omnisend). |
reviews | Review platforms embedded on-site (yotpo, trustpilot, judge_me, okendo, stamped, reviews_io, junip, loox). |
sellsProducts | 1 when we hold a public product catalog for the company, blank when we do not. |
productCount | Number of products in the captured catalog. Blank when there is no catalog. |
productsInStock | Number of products marked available. Blank when there is no catalog. |
productPriceMin | Lowest listed product price. Blank when there is no catalog. |
productPriceMax | Highest listed product price. Blank when there is no catalog. |
catalogFeedUrl | The company's product catalog as a feed hosted by Engagemii. Blank when there is no catalog. |
networkAuthority | Network Authority from 0 to 10, one decimal: how connected the company is to other businesses in the Engagemii Index Network, the same number its brand page shows. 0 when the company is not connected yet or its website is confirmed dead (the MCP tools return null when not connected yet). |
relationshipsOnRecord | How many companies it is connected to: companies named with it in public annual reports (SEC filings) plus connections both companies confirmed on Engagemii. 0 when it has none yet. |
filingRelationships | Of those, how many are named with it in public annual reports (SEC filings). |
verifiedConnections | Of those, how many are connections both companies confirmed on Engagemii. |
_license | A per-row fingerprint tying that row to your account and purchase. It is how a licensed file stays traceable. Blank in a sample, since a sample is not tied to a purchase. |
phone | Main phone number listed on the company's own website, written as +1 and 10 digits. US companies only. Never a person's number, a fax or a mobile number. |
openingHours | Opening hours listed on the company's own website, written like "Mo-Fr 09:00-17:00; Sa 10:00-14:00". |
businessType | Type of business named in the website's schema.org markup, such as Dentist, Restaurant or AutoRepair. |
priceRange | Price range listed in the website's schema.org markup, such as $$. |
foundingYear | Year the company was founded, from the website's schema.org markup or a line such as "Since 1985". |
logoUrl | Web address of the logo named in the website's schema.org markup. |
chainBrand | Brand name used on the company's stores, for companies with two or more locations. |
locationCount | Number of locations found in public store lists. Some lists are partial, so this can be lower than the company's true total. |
Freshness: each record carries scoredAt (when its AI visibility score took its current value, as on the brand page) and lastUpdated, so the age of every row is visible. AI engine reads are counted as they happen. siteStatus is what the website showed at our last check.
This MCP server is listed on Databricks Marketplace, free to connect, so it can be added to a workspace from the Marketplace page without copying any endpoint by hand.
Today the data reaches Databricks through this MCP server, and as CSV, JSON or Excel files from the data portal. Two free datasets are also on Databricks Marketplace, shared into Unity Catalog through Delta Sharing: 1 million companies, and a sample of 500 US companies with all 113 columns, add-on columns filled where we hold the data.
The server and the dataset hold company data only. They never return emails, people's names or personal phone numbers. A company's main business phone number, for US companies, comes only in a purchased file with the Phone and hours add-on, and in the free sample of 500 US companies on Databricks Marketplace. Sign-in stores the account email and the tokens a client uses; tokens are stored as hashes and expire as listed above.
Read the privacy policy, the terms and the data license. Other AI assistants such as Claude, ChatGPT and Cursor can use our main MCP server, described on the MCP server page.