Canadian federal tenders, RFPs, contract awards and expiring contracts (recompete leads).
MyDataHub is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
UK B2B contact counts, quotes and lists, by Emailmovers
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http mydatahub-mcp https://mydatahub.emailmovers.com/mcp
# 2 — ask your agent for something these tools do
# get_plans, get_account, list_filters and 31 more
MyDataHub costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http mydatahub-mcp https://mydatahub.emailmovers.com/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
Nothing is required, but it can take Authorization header (Optional. A MyDataHub API key or agent key (mdh_live_...), made in the app under API keys. Without one, counts, breakdowns, previews and quotes still work, with rounded figures.) if you want to set it.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
34 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Returns the plans of MyDataHub by Emailmovers, the UK B2B count engine: credit packs, credit rules, licence terms, the bounce warranty and the free trial, in GBP excluding VAT. Use it when the user asks what a list costs or which plan fits; it is free and needs no account. One credit buys one complete UK record at the same price in the app, the API and here. Call get_account for the caller's own b
No parameter schema on file.
Returns the organisation's credit balance by source, plan, per-action prices and rate limit, and for an agent key its monthly budget and per-order cap. Use it before quoting a large order, or when a spend is refused, to see what remains. Free; it needs a token with account:read. Top-ups happen on mydatahub.emailmovers.com, never inside a tool. Lawful basis is UK GDPR Article 6(1)(f) legitimate int
No parameter schema on file.
Lists every filterable field of the audience definition (mydatahub.audience/1) with its group, type, operators, value count and default, plus the datasets. Use it first to learn field names such as company.employee_band or site.town before building an audience by hand. Free and needs no account; the same catalogue is the mydatahub://catalogue resource. Call search_filter_values to find the codes f
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dataset | string | no | The dataset an audience draws from. uk_contacts is live; ie_contacts and global_contacts are listed but not yet served. |
Searches the values of one field by text, such as towns matching leeds, and returns each code with its contact and company counts plus did_you_mean for near misses. Use the returned code in a filter rather than guessing one. Free and needs no account; results are paged with next_cursor. Call count_audience once the filters are chosen. Lawful basis is UK GDPR Article 6(1)(f) legitimate interests; e
| Parameter | Type | Required | Notes |
|---|---|---|---|
| dimension | string | yes | A field name from list_filters, such as site.town or company.sic_2007. |
| q | string | no | Text to search for. |
| dataset | string | no | The dataset an audience draws from. uk_contacts is live; ie_contacts and global_contacts are listed but not yet served. |
| limit | integer | no | Items per page, 1 to 100. Default 25. |
| cursor | string | no | An opaque cursor from next_cursor. Pass it back unchanged. |
Expands title keywords into every matching title (plurals, department synonyms, ampersands, abbreviations such as CEO), each with a count, or shows what a bundle such as sdm resolves to. Use it before counting so the user can see and edit which titles a keyword covers; nothing is expanded silently. Free and needs no account. Put the returned filter into the audience, then call count_audience. Lawf
| Parameter | Type | Required | Notes |
|---|---|---|---|
| terms | array | no | Title keywords to expand, such as marketing manager. |
| bundle | string | no | A title bundle to show: sdm, manager_and_above or owner_managed. |
| mode | string | no | contains (the default) matches titles containing a term, starts_with matches titles beginning with it, exact takes verbatim titles with no expansion. |
| expand | array | no | Expansion sets to apply, each once. Left out, the four default sets apply. |
| dataset | string | no | The dataset an audience draws from. uk_contacts is live; ie_contacts and global_contacts are listed but not yet served. |
Turns free text such as 20 miles of Leeds, Yorkshire or LS1 into region, county, town, postcode or radius filters, each with a count and a ready filter. Ambiguous places come back as candidates with a question, so ask the user which they meant rather than choosing. Free and needs no account, though a radius under 5 miles needs an account. Add the chosen filter to the audience, then call count_audi
| Parameter | Type | Required | Notes |
|---|---|---|---|
| text | string | yes | Free text such as "20 miles of Leeds", "Yorkshire" or "SW1". |
| radius_miles | number | no | — |
| dataset | string | no | The dataset an audience draws from. uk_contacts is live; ie_contacts and global_contacts are listed but not yet served. |
Compiles a plain English brief, such as 300 finance directors at law firms in Manchester, into an audience definition with a one-sentence readback, editable chips and any questions to answer first. Use it first for a request in words, read the readback to the user and settle the questions before counting. Words that match no filter come back in unrecognised, never guessed. Free and needs no accoun
| Parameter | Type | Required | Notes |
|---|---|---|---|
| brief | string | yes | A plain English brief, such as "300 finance directors at law firms in Manchester". |
| dataset | string | no | The dataset an audience draws from. uk_contacts is live; ie_contacts and global_contacts are listed but not yet served. |
Counts UK contacts and companies matching an audience, inline or a saved aud_ id, and returns Total, New to you and Emailable, up to three breakdowns, quality, the compliance summary, a price estimate and a count id. Use it whenever a filter changes, and before preview_records or quote_order, which both take the count id. Free and needs no account; anonymous and trial callers see counts under 100
| Parameter | Type | Required | Notes |
|---|---|---|---|
| audience | yes | — | |
| level | string | no | contact (the default) or company. Contacts and companies come back together either way. |
| breakdown_by | array | no | Up to three fields to break the count down by, each once, such as industry by seniority by region. Returns the top 50 cells per field plus other. |
Returns up to 25 masked sample rows (10 by default) for an audience or a count id, each with verification badges, why it matches and a provenance card. Use it after count_audience to show the user what the records look like before quoting. Free: emails and phones are masked on the server, a repeat returns the same rows, and no rows come back when the count is under 25. Call quote_order next to pri
| Parameter | Type | Required | Notes |
|---|---|---|---|
| audience | no | — | |
| count_id | string | no | A count id instead of an audience. |
| limit | integer | no | Rows to return, 1 to 25. Default 10. |
| shuffle | boolean | no | Draw a new seed. Counts against your rate budget and is logged. Default false, so a repeat returns the same rows. |
Saves an audience definition under a name, shared across the organisation, or updates a saved one when audience_id is given. Use it when the user wants to keep, share or recount a list later; saving is free and needs audiences:write. Repeating the same call returns the same saved audience. Call list_audiences to find it again, or count_audience with its aud_ id. Lawful basis is UK GDPR Article 6(1
| Parameter | Type | Required | Notes |
|---|---|---|---|
| audience_id | string | no | A saved audience to update. Leave it out to save a new one. |
| name | string | no | — |
| audience | no | — | |
| brief | no | — |
Lists the organisation's saved audiences with their current counts and last refresh, newest first, optionally filtered by name. Use it to find an aud_ id to count, quote or share. Free; it needs audiences:read. Pass an aud_ id to count_audience for a fresh count. Lawful basis is UK GDPR Article 6(1)(f) legitimate interests; email audiences include corporate subscribers only by default (PECR), so s
| Parameter | Type | Required | Notes |
|---|---|---|---|
| q | string | no | Filter by name. |
| limit | integer | no | Items per page, 1 to 100. Default 25. |
| cursor | string | no | An opaque cursor from next_cursor. Pass it back unchanged. |
Lists the field sets an order can deliver, such as standard or standard_telephone, with their exact columns. Every field set costs 1 credit a record, with no telephone, download or API surcharge. Use it to pick the field_set for quote_order; it is free and needs no account. Lawful basis is UK GDPR Article 6(1)(f) legitimate interests; email audiences include corporate subscribers only by default (
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | Items per page, 1 to 100. Default 25. |
| cursor | string | no | An opaque cursor from next_cursor. Pass it back unchanged. |
Creates a machine quote for a count: the records you would receive after removing ones already held and suppressed, the credits and GBP price, the licence, the warranty and any blockers. The quote_id lasts 24 hours and is bound to the dataset version; it is not a human sales quote, which is a 14 day PDF made in the app. Free and needs no account, and nothing is charged. Show the credits and price
| Parameter | Type | Required | Notes |
|---|---|---|---|
| count_id | string | yes | A count id from POST /v1/counts or count_audience. Either case is accepted; responses use upper case. |
| field_set | string | yes | A field set id from GET /v1/field-sets, such as standard. |
| limit | integer | no | Records to buy; left out, the whole count. |
| dedupe_against | string | no | Remove records you already hold: from earlier orders, from a connected CRM, or both. Default previous_orders when signed in. crm and previous_orders_and_crm need connection_id. |
| connection_id | string | no | The CRM connection to check, only with dedupe_against crm or previous_orders_and_crm. |
| licence | string | no | multi_use_12m (12 month multi-use, every plan) or outright (1.8 credits a record, proposed). |
Spends 1 credit per complete UK record against a live machine quote from quote_order, and queues the order. It needs the quote_id and an idempotency_key to reuse on any retry, so a retry never charges twice; a flag set by a model is never consent. Where the host supports elicitation the user confirms the spend in a form or on mydatahub.emailmovers.com; otherwise an agent key must cover it within i
| Parameter | Type | Required | Notes |
|---|---|---|---|
| quote_id | string | yes | A live machine quote from quote_order. Without one nothing is charged. |
| name | string | no | — |
| delivery | array | no | api (fetch records), csv (signed download) and google_sheets. Default api. |
| confirmation_token | string | no | The token the approval page on mydatahub.emailmovers.com returns once the signed-in person approves. It is bound to that person (their sub), this spend (the machine quote_id, or the enrichment or push |
| idempotency_key | string | yes | Any unique string, such as a V4 UUID. Reuse it when retrying the same order so it is never charged twice; a different order needs a new key. |
Returns one order's status (queued, building, verifying, ready, failed or cancelled), counts, charges, licence and links to its records, download and receipt, or the recent orders when order_id is left out. Use it after create_order to wait for ready, or rely on the order.ready webhook. Free; it needs orders:read. Call fetch_order_records once the status is ready. Lawful basis is UK GDPR Article 6
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | string | no | The order to return. Leave it out for the recent orders, newest first. |
| status | string | no | queued, building, verifying, ready; failed if processing failed; cancelled (only while queued). |
| limit | integer | no | Items per page, 1 to 100. Default 25. |
| cursor | string | no | An opaque cursor from next_cursor. Pass it back unchanged. |
Returns a page of an order's delivered records (50 by default, up to 100) with the licence block on every page, as JSON or, on request, as CSV. Pages stay under about 8,000 tokens, with approx_tokens on each; pass next_cursor to continue. Fetching again under licence costs 0 credits; it needs records:read. Call check_suppression before any send, and get_compliance_receipt for proof of screening. L
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | string | yes | The order whose records to fetch. It must be ready. |
| cursor | string | no | An opaque cursor from next_cursor. Pass it back unchanged. |
| limit | integer | no | Records per page, 1 to 100 over MCP so a result stays under about 8,000 tokens. Default 50. |
| format | string | no | json (default) or csv. |
| fields | array | no | Columns to return; default the order's field set. |
Pushes an order's records to a connected CRM such as HubSpot or Salesforce, keyed on mydatahub_record_id, as record operations only: nothing is ever sent to the contacts. dry_run defaults to true and reports what would be created, updated or skipped; a live push needs the user's confirmation or an agent key allowed push_to_crm on that connection, or it returns confirmation-required. Free; it needs
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | string | yes | The order whose records to push. |
| connection_id | string | yes | Format: a CRM connection id: conn_ followed by a 26 character ULID in upper case Crockford base32, such as conn_01JB3Y2X6Y7Z8A1B2C3D4E5F6G. |
| dry_run | boolean | no | Default true: report what would change without writing. A live push needs approval: a person's confirmation, or an agent key allowed push_to_crm on this connection. |
| update_existing | boolean | no | Update records already in the CRM, matched on mydatahub_record_id. Default true. |
| confirmation_token | string | no | The token the approval page on mydatahub.emailmovers.com returns once the signed-in person approves. It is bound to that person (their sub), this spend (the machine quote_id, or the enrichment or push |
Looks up one company by Companies House number, domain or name and returns its Companies House fields and compliance facts, and for a signed-in caller the contacts held there by job level. It returns no contact details: use enrich_contact for one known person, or count_audience for everyone at the company. Free and needs no account, though the contacts held are a single company count that needs an
| Parameter | Type | Required | Notes |
|---|---|---|---|
| company_number | string | no | Eight characters in upper case, such as 05046417 or SC123456. |
| domain | string | no | — |
| name | string | no | — |
| town | string | no | Narrows a name search. |
Returns the full record for one known person, matched by email or by name with a company name, number or domain. It spends 1 credit only on a confident match, and 0 on no match or when you already hold the record under licence, so a repeat never charges twice. Like create_order it needs the user's confirmation (a form, or the confirmation_token from an approval_url) or an agent key whose allowed_t
| Parameter | Type | Required | Notes |
|---|---|---|---|
| string | no | — | |
| first_name | string | no | — |
| last_name | string | no | — |
| company_name | string | no | — |
| company_number | string | no | Eight characters in upper case, such as 05046417 or SC123456. |
| domain | string | no | — |
| confirmation_token | string | no | The token the approval page on mydatahub.emailmovers.com returns once the signed-in person approves. It is bound to that person (their sub), this spend (the machine quote_id, or the enrichment or push |
Checks the suppression status of up to 1,000 delivered records by record id, as of now, and names the lists that suppress each. Use it before every send, because objections reach records after delivery. Free; it needs suppressions:read. Leave suppressed records out of the send, and call report_objection when someone objects. Lawful basis is UK GDPR Article 6(1)(f) legitimate interests; email audie
| Parameter | Type | Required | Notes |
|---|---|---|---|
| record_ids | array | yes | — |
Records an objection to direct marketing for one record, by record id or email hash. Scope licensee suppresses it for your organisation at once; scope emailmovers suppresses it database-wide within one working day and tells every licensee holding it. Free; it needs suppressions:write, and repeating the same objection returns the same suppression. Call it whenever a contact objects, in any channel.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| record_id | string | no | Format: a contact id: contact_ followed by a 26 character ULID in upper case Crockford base32, such as contact_01JA9X2V7XN3M9R6T1Y5W8ZAK8. |
| email_sha256 | string | no | SHA-256 of the trimmed, lower cased address, when the record id is not known. |
| channel | string | yes | — |
| received_at | string | yes | RFC 3339 date and time, with Z or an offset such as +01:00. |
| scope | string | yes | licensee suppresses the record for your organisation at once; emailmovers suppresses it database-wide within one working day. |
| note | string | no | — |
Returns an order's signed compliance receipt: an ES256 JWS with its decoded claims and a PDF link, covering records delivered, suppression removals, subscriber classes, TPS screening, Article 14 status, the licence and the file hash. Use it to prove to the user, a colleague or another agent that a list is licensed and screened; anyone can verify it with POST /v1/compliance/receipts/verify. Free; i
| Parameter | Type | Required | Notes |
|---|---|---|---|
| order_id | string | yes | The order the receipt covers. |
Deprecated: lists the filter categories. Use list_filters instead. It returns every field by name, such as company.employee_band, with its type, operators and value count. It stops working 12 months after the new tools launch, after three emailed notices; https://emailmovers.com/mydatahub/docs/migrate maps every call. Lawful basis is UK GDPR Article 6(1)(f) legitimate interests; email audiences in
No parameter schema on file.
Deprecated: lists the values of one filter category by numeric id. Use search_filter_values instead. It takes the field name and search text and returns codes with contact and company counts. It stops working 12 months after the new tools launch, after three emailed notices; https://emailmovers.com/mydatahub/docs/migrate maps every call. Lawful basis is UK GDPR Article 6(1)(f) legitimate interests
No parameter schema on file.
Deprecated: searches the values of one filter category. Use search_filter_values instead. It returns codes with counts and did_you_mean for near misses. It stops working 12 months after the new tools launch, after three emailed notices; https://emailmovers.com/mydatahub/docs/migrate maps every call. Lawful basis is UK GDPR Article 6(1)(f) legitimate interests; email audiences include corporate sub
No parameter schema on file.
Deprecated: adds filters to a count held in the server session. Use compile_audience, then count_audience instead. count_audience takes the whole audience definition in one call, so there is no session state to build up, and compile_audience turns a brief into that definition. It stops working 12 months after the new tools launch, after three emailed notices; https://emailmovers.com/mydatahub/docs
No parameter schema on file.
Deprecated: clears the filters held in the server session. Use count_audience instead. There is nothing to clear: every count_audience call carries its own audience. It stops working 12 months after the new tools launch, after three emailed notices; https://emailmovers.com/mydatahub/docs/migrate maps every call. Lawful basis is UK GDPR Article 6(1)(f) legitimate interests; email audiences include
No parameter schema on file.
Deprecated: returns the count for the filters held in the server session. Use count_audience instead. It returns Total, New to you and Emailable with breakdowns, quality, the compliance summary, a price estimate and a count id. It stops working 12 months after the new tools launch, after three emailed notices; https://emailmovers.com/mydatahub/docs/migrate maps every call. Lawful basis is UK GDPR
No parameter schema on file.
Deprecated: saves the filters held in the server session under a name. Use save_audience instead. It saves an audience definition shared across the organisation; saved lists carry over as audiences (aud_). It stops working 12 months after the new tools launch, after three emailed notices; https://emailmovers.com/mydatahub/docs/migrate maps every call. Lawful basis is UK GDPR Article 6(1)(f) legiti
No parameter schema on file.
Deprecated: lists the saved lists of the organisation. Use list_audiences instead. Saved lists carry over as audiences (aud_) in the same organisation, with their current counts. It stops working 12 months after the new tools launch, after three emailed notices; https://emailmovers.com/mydatahub/docs/migrate maps every call. Lawful basis is UK GDPR Article 6(1)(f) legitimate interests; email audie
No parameter schema on file.
Deprecated: spent credits on a saved list when the model set a confirmation flag, and no longer does. Use quote_order, then create_order instead. The flag is ignored, since a flag set by a model is never consent: the call makes a machine quote for the list, and the user confirms the spend in a form or on mydatahub.emailmovers.com, or an agent key covers it within its limits; otherwise nothing is c
No parameter schema on file.
Deprecated: returns the credit balance. Use get_account instead. It returns the balance by source, the plan, per-action prices, the rate limit and any agent key budget; balances carry over one for one. It stops working 12 months after the new tools launch, after three emailed notices; https://emailmovers.com/mydatahub/docs/migrate maps every call. Lawful basis is UK GDPR Article 6(1)(f) legitimate
No parameter schema on file.
Deprecated: lists the field bundles an order can deliver. Use list_field_sets instead. The old bundles become named field sets with their exact columns; the five test bundles are removed. It stops working 12 months after the new tools launch, after three emailed notices; https://emailmovers.com/mydatahub/docs/migrate maps every call. Lawful basis is UK GDPR Article 6(1)(f) legitimate interests; em
No parameter schema on file.
Deprecated: lists the columns of one field bundle. Use list_field_sets instead. list_field_sets returns every field set with its exact columns and credits per record. It stops working 12 months after the new tools launch, after three emailed notices; https://emailmovers.com/mydatahub/docs/migrate maps every call. Lawful basis is UK GDPR Article 6(1)(f) legitimate interests; email audiences include
No parameter schema on file.
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install MyDataHub or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| get_plans | no tags | |
| get_account | no tags | |
| list_filters | no tags | |
| search_filter_values | no tags | |
| expand_job_titles | no tags | |
| resolve_location | no tags | |
| compile_audience | no tags | |
| count_audience | no tags | |
| preview_records | no tags | |
| save_audience | state-write | state-write: declares readOnlyHint: false |
| list_audiences | no tags | |
| list_field_sets | untrusted-input | untrusted-input: keyword "download" |
| quote_order | no tags | |
| create_order | state-write | state-write: declares readOnlyHint: false |
| get_order | untrusted-input | untrusted-input: keyword "download" |
| fetch_order_records | untrusted-input | untrusted-input: keyword "fetch" |
| push_to_crm | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| lookup_company | no tags | |
| enrich_contact | state-write | state-write: declares readOnlyHint: false |
| check_suppression | no tags | |
| report_objection | state-write | state-write: declares readOnlyHint: false |
| get_compliance_receipt | no tags | |
| available_selection_categories | no tags | |
| available_selection_values | no tags | |
| search_discrete_values | no tags | |
| create_search | state-write | state-write: declares readOnlyHint: false |
| clear_search | state-write | state-write: declares readOnlyHint: false |
| get_count | no tags | |
| save_selections | state-write | state-write: declares readOnlyHint: false |
| get_saved_selections | no tags | |
| create_data_extract | state-write | state-write: declares readOnlyHint: false |
| get_credits | no tags | |
| get_packs | no tags | |
| get_pack_details | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 2.0.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish MyDataHub can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.