# Brickbank > Finished jobs, paid per result. One MCP address for every live tool action in the store's blocks. ## Rules for agents - Connect to https://brickbank.cc/mcp over streamable HTTP with `Authorization: Bearer `; make a run key at https://brickbank.cc/me/keys. - Each tool is named `{block}__{action}`. Read a tool's price in its description before calling it. - Each tool's description states its price terms, including what a failed attempt costs. Read them before calling. - Send an `idempotency_key` on a call you may retry, so a retry never pays twice. - A long run returns a `run_id`; check it with `get_run`. ## Tools ### appsim 0.2.0 - [match_report](https://brickbank.cc/surfaces/b/appsim/run/match_report.md): Each job-ad requirement checked against the CV and message's exact wording; counts met, recruiter notice, and fixes. Up to $0.05 per unit. - [read_job_ad](https://brickbank.cc/surfaces/b/appsim/run/read_job_ad.md): Must-haves, nice-to-haves and deal-breakers from one job ad, each with its verbatim quote. Up to $0.05 per unit. - [read_resume](https://brickbank.cc/surfaces/b/appsim/run/read_resume.md): Titles with dates and claims from one CV or service description, each with its verbatim quote. Up to $0.05 per unit. ### belief-extractor 0.1.0 - [company.beliefs](https://brickbank.cc/surfaces/b/belief-extractor/run/company.beliefs.md): The beliefs a company states, found in its marketing pages, its job posts and the industry content around it. One result per belief, with the quotes that state it and the challenge it implies. $0.00 per unit. - [company.founder_background](https://brickbank.cc/surfaces/b/belief-extractor/run/company.founder_background.md): Where people have worked and studied, in their own words: the experience and education of up to 3 LinkedIn profiles, quoted word for word under one header per person. It answers whether a founder is a domain expert (a clinician, a lawyer, a teacher) and not only a software engineer. Give it company.founder_profiles' answer to read a company's founders. A source that failed is named with its reason, never left out. $0.01 per unit. - [company.founder_posts](https://brickbank.cc/surfaces/b/belief-extractor/run/company.founder_posts.md): What people say in public, in their own words: the LinkedIn posts (not reposts) of up to 3 profiles from the last six months, at most 3 each, quoted word for word under one header per post. Give it company.founder_profiles' answer to read a company's founders. A source that failed is named with its reason, never left out. $0.04 per unit. - [company.founder_profiles](https://brickbank.cc/surfaces/b/belief-extractor/run/company.founder_profiles.md): Who a company's founders and chief executives are on LinkedIn: up to 3 profile URLs, found from the LinkedIn page the company's website links and kept only when their current title says founder, CEO, CTO or another chief. A company with none is a miss naming why. $0.04 per unit. - [company.internal_voice](https://brickbank.cc/surfaces/b/belief-extractor/run/company.internal_voice.md): What a company says about how it hires, its hiring bar and its culture, in its own words: its careers page and its open job posts, quoted word for word under one header per source. A source that failed is named with its reason, never left out. $0.00 per unit. ### blocks-echo 1.0.0 - [echo.partial](https://brickbank.cc/surfaces/b/blocks-echo/run/echo.partial.md): Test op for scanners and harnesses: in a batch, items with succeed false fail and the rest succeed, free. $0.00 per unit. - [echo.payment_required](https://brickbank.cc/surfaces/b/blocks-echo/run/echo.payment_required.md): Test op for scanners and harnesses: always reports an upstream that demands payment (402), free. $0.00 per unit. - [echo.success](https://brickbank.cc/surfaces/b/blocks-echo/run/echo.success.md): Test op for scanners and harnesses: returns the message unchanged, free, with no upstream. $0.00 per unit. - [echo.timeout](https://brickbank.cc/surfaces/b/blocks-echo/run/echo.timeout.md): Test op for scanners and harnesses: always reports a timed-out upstream, free, with no upstream. $0.00 per unit. ### bossroster 0.1.0 - [aggregate](https://brickbank.cc/surfaces/b/bossroster/run/aggregate.md): Typed talent / engineering team cells (leader, staff) for a resolved company, each present, not_seen, not_asked or error, with pointer-only evidence and the preset checked, named only, never judged. Up to $0.10 per unit. - [ask](https://brickbank.cc/surfaces/b/bossroster/run/ask.md): Answers a question about a resolved company with evidence and honest abstention. count_function: how many people work in a function (talent, engineering), worldwide or in one country, from free counts only; 1 or 2 read as a range, never a person. has_head: whether the function has a head, widening country, region, world, with a reason per step; the CEO counts only under 50 staff; an absence is stated only above the calibrated floor, else unknown; never a person. dm_for_posting: the person who leads the function in a country, named only for a declared purpose and only when the ranker and the title dictionary agree, at $0.10, refused behind the privacy gates; nobody acceptable is not_found and free. org_picture: the company picture at $1, a free skyline of every function by leaders and staff, a seat verdict per function and, for up to 5 functions the caller names with a declared purpose, their head; never a reporting line. max_credits 0 quotes and spends nothing; a fresh re-ask is free. Up to $0.10 per unit. - [email.find](https://brickbank.cc/surfaces/b/bossroster/run/email.find.md): A work email for a named person at a company domain, for a person people.find showed this account. Verified: one credit; risky: returned, marked, free; none found: free. Up to $0.06 per unit. - [key.validate](https://brickbank.cc/surfaces/b/bossroster/run/key.validate.md): Whether your BossRoster key is valid, free of charge. $0.02 per unit. - [leader_seat](https://brickbank.cc/surfaces/b/bossroster/run/leader_seat.md): Whether a resolved company's CTO seat is filled, with the holder as a minimised pointer; requires a declared purpose. Up to $0.02 per unit. - [people.find](https://brickbank.cc/surfaces/b/bossroster/run/people.find.md): The manager-and-up people of a company (by LinkedIn URN, name or domain), a name each at $0.10, with their title and profile; a person served here can be asked for by name in email.find. A UK or Polish company's register officers are merged in (company_number or krs, or the exact UK company name): they annotate the people they match, and UK directors with no profile follow, unbilled, as source=registry. $0.10 per unit. - [resolve](https://brickbank.cc/surfaces/b/bossroster/run/resolve.md): A company's domain, LinkedIn slug or signals id → its canonical LinkedIn company key, backed by two agreeing anchors, plus the team_digest state the other ops need. Up to $0.03 per unit. ### capture 0.1.0 - [capture.bundle](https://brickbank.cc/surfaces/b/capture/run/capture.bundle.md): Renders a URL or an offline HTML mockup in headless Chromium at the given widths and declared states and returns one hashed evidence bundle: full-page and CSS-stripped wireframe PNGs, DOM, accessibility tree, computed styles with one selector per visible element, axe-core results, a bounded click graph and scripted traces. Same input, same bundle_sha. $0.01 per unit. ### datagate-crm 0.1.0 - [bullhorn.key.validate](https://brickbank.cc/surfaces/b/datagate-crm/run/bullhorn.key.validate.md): Whether the access token and REST URL are good: the REST login alone, free and writing nothing $0.00 per unit. - [bullhorn.lead.upsert](https://brickbank.cc/surfaces/b/datagate-crm/run/bullhorn.lead.upsert.md): Create a Bullhorn lead, or update the one with the same email. `fields` maps Bullhorn Lead field names (a dotted address.city is nested) to values; each is cleaned to ASCII and cut to Bullhorn's field size, and an empty value is sent as given. The REST login is made first, from the access token and REST URL. $0.00 per unit. - [bullhorn.token.refresh](https://brickbank.cc/surfaces/b/datagate-crm/run/bullhorn.token.refresh.md): Exchange a customer's Bullhorn refresh token for a new access token at the token endpoint beside their authorization URL (spine AD-15): the caller stores the result. A refused refresh token (invalid_grant) is a bad_input miss: reconnect. $0.00 per unit. - [clay.connection.try](https://brickbank.cc/surfaces/b/datagate-crm/run/clay.connection.try.md): Prove the Clay webhook takes a row: POST one probe row (datagate-try@example.com) to the table's webhook URL (https://api.clay.com/...). Clay has no read call, so read is reported unsupported. Clay appends a row on every try unless the table dedupes on email. $0.00 per unit. - [clay.webhook.deliver](https://brickbank.cc/surfaces/b/datagate-crm/run/clay.webhook.deliver.md): Add one row to a Clay table through its webhook URL (https://api.clay.com/...). The payload is the row. Clay appends; a repeat is dropped only if the table dedupes on payload.email. $0.00 per unit. - [google_sheets.connection.try](https://brickbank.cc/surfaces/b/datagate-crm/run/google_sheets.connection.try.md): Prove the Google connection reads and writes one spreadsheet: read its id, then send it an empty batch update, which changes nothing and needs the spreadsheets scope. Idempotent: no row, tab or file is created. $0.00 per unit. - [google_sheets.rows.append](https://brickbank.cc/surfaces/b/datagate-crm/run/google_sheets.rows.append.md): Add one row under the data of a Google Sheets tab: the values go in order from the first column. A value starting with = is a formula, and a date or number string is read as Sheets would type it. Sent once and never retried: Sheets does not dedupe, so a repeat adds a second row (rows.upsert dedupes). $0.00 per unit. - [google_sheets.rows.upsert](https://brickbank.cc/surfaces/b/datagate-crm/run/google_sheets.rows.upsert.md): Write one row into a Google Sheets tab by a key column: the values go in order from the first column, and key_column (a letter, A by default) says which of them is the key. The row whose key column already holds that key (the first, header row included) is rewritten in place, else the row is appended. Not atomic: two upserts of a new key at once can append it twice. $0.00 per unit. - [google_sheets.sheets.list](https://brickbank.cc/surfaces/b/datagate-crm/run/google_sheets.sheets.list.md): The tabs of one Google spreadsheet, in tab order: id, title and position of each $0.00 per unit. - [hubspot.activity.log](https://brickbank.cc/surfaces/b/datagate-crm/run/hubspot.activity.log.md): Log an outreach activity on a HubSpot contact (a LinkedIn connection request, message or reply) as a note that opens with its type. With an external_id a retry returns the note already logged for that contact instead of logging a second; HubSpot's search index lags new records by seconds, so a retry inside that window can still log twice. $0.00 per unit. - [hubspot.company.upsert](https://brickbank.cc/surfaces/b/datagate-crm/run/hubspot.company.upsert.md): Create a HubSpot company by domain, or return the existing one. HubSpot's search index lags new records by seconds and a domain is not unique there, so the same domain sent twice within that window can create two companies. $0.00 per unit. - [hubspot.connection.try](https://brickbank.cc/surfaces/b/datagate-crm/run/hubspot.connection.try.md): Prove the HubSpot connection reads and writes: search contacts for datagate's one probe contact (datagate-try@example.com), then create it, or rewrite its last name when it is already there. Idempotent: the portal never holds more than the one probe contact. $0.00 per unit. - [hubspot.contact.upsert](https://brickbank.cc/surfaces/b/datagate-crm/run/hubspot.contact.upsert.md): Create a HubSpot contact by email, or return the existing one; link its company and add it to a list. first_name/last_name are sent as given; full_name is split only when both are missing. A refused company or list (unknown id, a dynamic list) is a miss whose provider_ref is the contact id. $0.00 per unit. - [hubspot.contact.upsert_by_linkedin](https://brickbank.cc/surfaces/b/datagate-crm/run/hubspot.contact.upsert_by_linkedin.md): Create a HubSpot contact by LinkedIn URL (hs_linkedin_url, matched exactly as given), or return the existing one; link its company and add it to a list. For a lead with no email: no email property is ever sent. first_name/last_name are sent as given; full_name is split only when both are missing. A refused company or list (unknown id, a dynamic list) is a miss whose provider_ref is the contact id. $0.00 per unit. - [hubspot.lists.list](https://brickbank.cc/surfaces/b/datagate-crm/run/hubspot.lists.list.md): The account's HubSpot lists (first 100) $0.00 per unit. - [hubspot.meeting.create](https://brickbank.cc/surfaces/b/datagate-crm/run/hubspot.meeting.create.md): Create a HubSpot meeting on a contact, with a title, start and end time and optionally a body and an outcome. Sent once and never retried: HubSpot does not dedupe meetings. $0.00 per unit. - [hubspot.token.refresh](https://brickbank.cc/surfaces/b/datagate-crm/run/hubspot.token.refresh.md): Exchange a customer's HubSpot refresh token for a new access token through datagate's OAuth app (spine AD-15): the caller stores the result. A refused refresh token is a bad_input miss: reconnect. $0.00 per unit. - [instantly.campaign.enrol](https://brickbank.cc/surfaces/b/datagate-crm/run/instantly.campaign.enrol.md): Enrol a lead into an Instantly campaign (and optionally a list) by email $0.00 per unit. - [instantly.campaign.sending_status](https://brickbank.cc/surfaces/b/datagate-crm/run/instantly.campaign.sending_status.md): One Instantly campaign's state and its daily sending limit (null when Instantly reports none) $0.00 per unit. - [instantly.connection.try](https://brickbank.cc/surfaces/b/datagate-crm/run/instantly.connection.try.md): Prove the Instantly connection reads and writes: list one campaign, then add datagate's probe lead (datagate-try@example.com) to the workspace with no campaign or list. Idempotent: a repeat adds nothing. $0.00 per unit. - [instantly.lead.add](https://brickbank.cc/surfaces/b/datagate-crm/run/instantly.lead.add.md): Add a lead to an Instantly campaign or list with its names, company fields and custom variables $0.00 per unit. - [instantly.lead.list](https://brickbank.cc/surfaces/b/datagate-crm/run/instantly.lead.list.md): The leads of one Instantly campaign with their sending state (replied, bounced, other) and last update $0.00 per unit. - [lemlist.activities.pull](https://brickbank.cc/surfaces/b/datagate-crm/run/lemlist.activities.pull.md): The lemlist activity feed (sends, opens, replies, ...) since an instant, as raw rows $0.00 per unit. - [lemlist.campaign.enrol](https://brickbank.cc/surfaces/b/datagate-crm/run/lemlist.campaign.enrol.md): Enrol a lead into a lemlist campaign by email $0.00 per unit. - [lemlist.campaign.preflight](https://brickbank.cc/surfaces/b/datagate-crm/run/lemlist.campaign.preflight.md): Whether a lemlist campaign can dispatch a lead right now, without adding one $0.00 per unit. - [lemlist.campaigns.inventory](https://brickbank.cc/surfaces/b/datagate-crm/run/lemlist.campaigns.inventory.md): List the account's lemlist campaigns with status and the vendor's boolean flags $0.00 per unit. - [lemlist.campaigns.list](https://brickbank.cc/surfaces/b/datagate-crm/run/lemlist.campaigns.list.md): List the account's lemlist campaigns $0.00 per unit. - [lemlist.employment.confirm](https://brickbank.cc/surfaces/b/datagate-crm/run/lemlist.employment.confirm.md): Whether lemlist's people database places a LinkedIn profile at the given company $0.00 per unit. - [lemlist.key.validate](https://brickbank.cc/surfaces/b/datagate-crm/run/lemlist.key.validate.md): Whether a lemlist API key is valid, free of charge $0.00 per unit. - [lemlist.lead.add](https://brickbank.cc/surfaces/b/datagate-crm/run/lemlist.lead.add.md): Add a lead (email and/or LinkedIn URL, names, variables) to a lemlist campaign that can dispatch it $0.00 per unit. - [lemlist.people.stated_employment](https://brickbank.cc/surfaces/b/datagate-crm/run/lemlist.people.stated_employment.md): The current employer lemlist's people database states for a LinkedIn profile $0.00 per unit. - [lemlist.seats.count](https://brickbank.cc/surfaces/b/datagate-crm/run/lemlist.seats.count.md): How many distinct lemlist users (seats) the account has $0.00 per unit. - [manatal.candidate.upsert](https://brickbank.cc/surfaces/b/datagate-crm/run/manatal.candidate.upsert.md): Create a Manatal candidate by email, or return the existing one (searched by email first; an existing candidate is not changed). Sent as a sourced candidate with its position, company and description. $0.00 per unit. - [manatal.connection.try](https://brickbank.cc/surfaces/b/datagate-crm/run/manatal.connection.try.md): Prove the Manatal connection reads and writes: list one candidate, then create datagate's probe candidate (datagate-try@example.com) unless it is already there. Idempotent: the account never holds more than the one probe candidate. $0.00 per unit. - [recruitcrm.company.upsert](https://brickbank.cc/surfaces/b/datagate-crm/run/recruitcrm.company.upsert.md): Create a RecruitCRM company by name, or return the existing one. The name is searched as given and defaults to the domain, which is stored as the company's website on create. RecruitCRM's search is not unique, so the same name sent twice within its indexing delay can create two companies. $0.00 per unit. - [recruitcrm.connection.try](https://brickbank.cc/surfaces/b/datagate-crm/run/recruitcrm.connection.try.md): Prove the RecruitCRM connection reads and writes: search contacts for datagate's one probe contact (datagate-try@example.com) and create it when it is absent. Idempotent: the account never holds more than the one probe contact; a repeat only reads. $0.00 per unit. - [recruitcrm.contact.upsert](https://brickbank.cc/surfaces/b/datagate-crm/run/recruitcrm.contact.upsert.md): Create a RecruitCRM contact by email, or return the existing one (it is left as it is). A new contact is linked to company_id (a company slug), else to the company named company_name, which is created when RecruitCRM has none. first_name/last_name are sent as given; full_name is split only when both are missing. list_id is not used: RecruitCRM contacts have no list. $0.00 per unit. - [salesforce.contact.upsert](https://brickbank.cc/surfaces/b/datagate-crm/run/salesforce.contact.upsert.md): Create a Salesforce contact by email, or return the existing one; the contact joins the account company_id, else the first account named company_name when there is one. list_id is ignored: Salesforce has no lists. first_name/last_name are sent as given; full_name is split only when both are missing. Salesforce requires a last name to create a contact: without one the create is a bad_input miss. $0.00 per unit. - [salesforce.key.validate](https://brickbank.cc/surfaces/b/datagate-crm/run/salesforce.key.validate.md): Whether the access token and instance URL are good: a read of the org's API limits, free, writes nothing $0.00 per unit. - [salesforce.lead.upsert](https://brickbank.cc/surfaces/b/datagate-crm/run/salesforce.lead.upsert.md): Create a Salesforce lead by email, or return the existing one. company_name is the lead's company ('[not provided]' when missing, as Salesforce's own web-to-lead). first_name/last_name are sent as given; full_name is split only when both are missing. Salesforce requires a last name: without one the create is a bad_input miss. $0.00 per unit. - [salesforce.task.create](https://brickbank.cc/surfaces/b/datagate-crm/run/salesforce.task.create.md): Create a Salesforce task (an activity), optionally on a contact or lead (who_id) and a record such as an account (what_id). Sent once and never retried: Salesforce does not dedupe tasks. $0.00 per unit. - [salesforce.token.refresh](https://brickbank.cc/surfaces/b/datagate-crm/run/salesforce.token.refresh.md): Exchange a customer's Salesforce refresh token for a new access token through datagate's connected app (spine AD-15): the caller stores the result. Salesforce keeps the refresh token, so none comes back. environment is 'production' (default) or 'sandbox'. A refused refresh token is a bad_input miss: reconnect. $0.00 per unit. - [sourcewhale.campaigns.list](https://brickbank.cc/surfaces/b/datagate-crm/run/sourcewhale.campaigns.list.md): The team's live SourceWhale campaigns (paused and draft ones are not listed) $0.00 per unit. - [sourcewhale.candidate.upsert](https://brickbank.cc/surfaces/b/datagate-crm/run/sourcewhale.candidate.upsert.md): Add a person to a SourceWhale campaign, or report that SourceWhale already holds them (found by email, then by LinkedIn URL; the existing candidate is left as it is). Needs an email or a linkedin_url. owner_email, when given, is the SourceWhale user the candidate is added for. The campaign's start is SourceWhale's own default: sendImmediately is never sent. $0.00 per unit. - [sourcewhale.key.validate](https://brickbank.cc/surfaces/b/datagate-crm/run/sourcewhale.key.validate.md): Whether a SourceWhale team API key works, free of charge (GET campaigns/list) $0.00 per unit. ### datagate-notify 0.1.0 - [emailpool.inbound.get](https://brickbank.cc/surfaces/b/datagate-notify/run/emailpool.inbound.get.md): Read the mail emailpool indexed for one pool address (a `pool+@…` tag keys a project), oldest first, received at or after `since` and after `after_seq`, with the links and one-time codes each mail holds. The address must be on the calling key's allow-list: any other is refused, not answered empty. No mail yet is an ok with an empty list, so a caller can poll; pass the returned `cursor` as `after_seq` to read on. $0.00 per unit. - [emailpool.key.validate](https://brickbank.cc/surfaces/b/datagate-notify/run/emailpool.key.validate.md): Whether an emailpool API key is valid, free of charge (a one-row read of a probe address) $0.00 per unit. - [mailgun.bounce.delete](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.bounce.delete.md): Remove one address from the sending domain's Mailgun bounce list. An address not in it is an ok with deleted false (the same end state); Mailgun answers 404 for an unknown domain too, and the two cannot be told apart. $0.00 per unit. - [mailgun.bounce.get](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.bounce.get.md): Read one address's entry in the sending domain's Mailgun bounce list; an address not in it is a not_found miss. Mailgun answers 404 for an unknown domain too, and the two cannot be told apart. $0.00 per unit. - [mailgun.complaint.delete](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.complaint.delete.md): Remove one address from the sending domain's Mailgun complaint table. An address not in it is an ok with deleted false (the same end state); Mailgun answers 404 for an unknown domain too, and the two cannot be told apart. $0.00 per unit. - [mailgun.complaint.get](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.complaint.get.md): Read one address's entry in the sending domain's Mailgun complaint table; an address not in it is a not_found miss. Mailgun answers 404 for an unknown domain too, and the two cannot be told apart. $0.00 per unit. - [mailgun.domain.create](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.domain.create.md): Create a sending domain on the Mailgun account and answer its state and the DNS records to publish. The domain must be the credential's own or on the calling key's allow-list; one that already exists is a bad_input miss. $0.00 per unit. - [mailgun.domain.get](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.domain.get.md): Read a sending domain's state and DNS records from the Mailgun account; a domain the account does not hold is a not_found miss. The domain must be the credential's own or on the calling key's allow-list. $0.00 per unit. - [mailgun.domain.verify](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.domain.verify.md): Ask Mailgun to check a sending domain's DNS records now and answer its state and records; a domain the account does not hold is a not_found miss. The domain must be the credential's own or on the calling key's allow-list. $0.00 per unit. - [mailgun.domains.list](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.domains.list.md): Which sending domains each consumer of this gateway holds, free, no vendor call and no input: per consumer its credential's `domain` and the `extra_domains` it may name per call. Names only, never a key. Only a consumer the operator listed as a domain reader may ask; any other is refused. $0.00 per unit. - [mailgun.email.send](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.email.send.md): Send an email via Mailgun from a caller-chosen From (display name allowed) on the domain $0.00 per unit. - [mailgun.events.count](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.events.count.md): Count the sending domain's delivered, failed and complained Mailgun events over a time window, as three integers (no address, subject, id or key); only consumers the operator lists may call it $0.00 per unit. - [mailgun.events.get](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.events.get.md): Read one page of the sending domain's Mailgun event log (accepted, delivered, failed and the rest), newest first, filtered by time window, event type and recipient; pass next_page back as page for the next page $0.00 per unit. - [mailgun.events.list](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.events.list.md): Read one page of the sending domain's failed and complained Mailgun events, newest first, each with its severity, reason, recipient domain, From local part and time (no address or key); only consumers the operator lists may call it; pass next_page back as page for the next page $0.00 per unit. - [mailgun.inbound.get](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.inbound.get.md): Read the mail Mailgun stored for one recipient address on the sending domain, oldest first, only mail received after `since`, with attachments. The recipient must be on the calling key's allow-list: any other address is refused, not answered empty. No mail yet is an ok with an empty list, so a caller can poll. $0.00 per unit. - [mailgun.key.validate](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.key.validate.md): Whether a Mailgun API key is valid and owns the sending domain, free of charge (GET /domains/) $0.00 per unit. - [mailgun.notify.send](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.notify.send.md): Deliver a message as a plain-text email via the Mailgun send API, from notify@ $0.00 per unit. - [mailgun.route.get](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.route.get.md): Read the Mailgun receiving route that route.put made for a sending domain (its expression and actions) and whether it matches what route.put would write for the same url and forward_to; none is a not_found miss. Same input checks as route.put; the domain must be the credential's own or on the calling key's allow-list. $0.00 per unit. - [mailgun.route.put](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.route.put.md): Ensure the one Mailgun receiving route for a sending domain: every message to any address on it is forwarded to the https url (and to forward_to when given), stored, and stops there. Made once, then updated in place (found by its description); a route datagate did not make is never changed, and one that already receives the domain is a refused miss. The domain must be the credential's own or on the calling key's allow-list. $0.00 per unit. - [mailgun.stats.get](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.stats.get.md): Count the sending domain's delivered, opened and clicked Mailgun events per UTC day over a window of up to 31 days, for the whole domain or one tag (no address, subject, id or key); only consumers the operator lists may call it $0.00 per unit. - [mailgun.unsubscribe.add](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.unsubscribe.add.md): Add one address to the sending domain's Mailgun unsubscribe table for every tag, so no mail is sent to it from that domain. An address already listed is an ok too (the same end state). $0.00 per unit. - [mailgun.unsubscribe.delete](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.unsubscribe.delete.md): Remove one address from the sending domain's Mailgun unsubscribe table. An address not in it is an ok with deleted false (the same end state); Mailgun answers 404 for an unknown domain too, and the two cannot be told apart. $0.00 per unit. - [mailgun.unsubscribe.get](https://brickbank.cc/surfaces/b/datagate-notify/run/mailgun.unsubscribe.get.md): Read one address's entry in the sending domain's Mailgun unsubscribe table; an address not in it is a not_found miss. Mailgun answers 404 for an unknown domain too, and the two cannot be told apart. $0.00 per unit. - [slack.key.validate](https://brickbank.cc/surfaces/b/datagate-notify/run/slack.key.validate.md): Whether a Slack webhook URL is live, free and posting nothing: a message with no text, which Slack refuses `no_text` for a live webhook and `no_service` for a revoked one. $0.00 per unit. - [slack.notify.send](https://brickbank.cc/surfaces/b/datagate-notify/run/slack.notify.send.md): Deliver a message to a Slack channel via an incoming webhook. `to` starting with `#` is passed as Slack's legacy per-message channel override; `subject` is not used. $0.00 per unit. - [telegram.key.validate](https://brickbank.cc/surfaces/b/datagate-notify/run/telegram.key.validate.md): Whether a Telegram bot token is valid, free of charge (GET /getMe) $0.00 per unit. - [telegram.message.send](https://brickbank.cc/surfaces/b/datagate-notify/run/telegram.message.send.md): Send a Telegram message with formatting: `parse_mode` (HTML or MarkdownV2) and `disable_web_page_preview` go to sendMessage as given $0.00 per unit. - [telegram.notify.send](https://brickbank.cc/surfaces/b/datagate-notify/run/telegram.notify.send.md): Deliver a message via the Telegram Bot API (`to` is the chat id or @channelusername) $0.00 per unit. - [webhook.connection.try](https://brickbank.cc/surfaces/b/datagate-notify/run/webhook.connection.try.md): Check a destination URL without sending anything to it: an absolute http(s) URL whose host resolves, and only to public addresses. Free. It proves the address is one datagate can deliver to, not that the receiver is listening. $0.00 per unit. - [webhook.webhook.deliver](https://brickbank.cc/surfaces/b/datagate-notify/run/webhook.webhook.deliver.md): POST a JSON payload to a caller-supplied webhook URL, once, with the caller's own headers $0.00 per unit. ### datagate-people 0.1.0 - [bettercontact.email.find](https://brickbank.cc/surfaces/b/datagate-people/run/bettercontact.email.find.md): A person's work email from name and company domain (BetterContact waterfall) $0.07 per unit. - [bettercontact.key.validate](https://brickbank.cc/surfaces/b/datagate-people/run/bettercontact.key.validate.md): Whether a BetterContact API key is valid and has credits, free (GET /account) $0.00 per unit. - [bettercontact.people.find](https://brickbank.cc/surfaces/b/datagate-people/run/bettercontact.people.find.md): People matching titles, locations and seniority, optionally at one company domain (BetterContact Lead Finder). Needs at least one of titles, locations or seniority; seniority takes the vendor's values (intern, entry, mid-level, senior, manager, head, director, vp, c_suite, partner, owner, founder). A company name is never sent. Up to $1.50 per unit. - [bettercontact.phone.find](https://brickbank.cc/surfaces/b/datagate-people/run/bettercontact.phone.find.md): A person's phone number from their LinkedIn URL (BetterContact waterfall). Dataset-sourced, not dial-verified, so `type` is `unknown`. $0.75 per unit. - [bossroster.email.find](https://brickbank.cc/surfaces/b/datagate-people/run/bossroster.email.find.md): A manager's verified work email, from a name people.find served (BossRoster) Up to $0.06 per unit. - [bossroster.key.validate](https://brickbank.cc/surfaces/b/datagate-people/run/bossroster.key.validate.md): Whether a BossRoster key is valid, free of charge $0.00 per unit. - [bossroster.people.find](https://brickbank.cc/surfaces/b/datagate-people/run/bossroster.people.find.md): The manager-and-up people of a company (by LinkedIn URN, name or domain) with title, seniority and profile, $0.10 a name (BossRoster). A person found here can then be asked for by name in `email.find`. $0.10 per unit. - [companies_house.companies.search](https://brickbank.cc/surfaces/b/datagate-people/run/companies_house.companies.search.md): UK companies by incorporation date, SIC code, status or part of the name (Companies House advanced search): number, name, status, incorporation date, SIC codes and registered town and postcode. No headcount. $0.00 per unit. - [companies_house.filings.share_allotments](https://brickbank.cc/surfaces/b/datagate-people/run/companies_house.filings.share_allotments.md): A company's SH01 filings, the notices that it allotted new shares (new equity raised), newest first, read from the newest 100 capital filings in Companies House's filing history. $0.00 per unit. - [companies_house.key.validate](https://brickbank.cc/surfaces/b/datagate-people/run/companies_house.key.validate.md): Whether a Companies House API key is valid, free of charge (a one-row company search) $0.00 per unit. - [companies_house.officers.list](https://brickbank.cc/surfaces/b/datagate-people/run/companies_house.officers.list.md): A UK company's officers (directors, secretaries, LLP members) from Companies House: name, role, appointment and resignation dates, country of residence and nationality. Current officers unless include_resigned is set. $0.00 per unit. - [getprospect.email.find](https://brickbank.cc/surfaces/b/datagate-people/run/getprospect.email.find.md): A person's work email from a name and company domain or name (GetProspect Email Finder) $0.00 per unit. - [getprospect.email.verify](https://brickbank.cc/surfaces/b/datagate-people/run/getprospect.email.verify.md): Whether an email address is deliverable (GetProspect Email Verifier): `valid`, `risky` for accept-all, `unknown` when the verifier cannot tell, `not_found` for an invalid address. $0.00 per unit. - [getprospect.key.validate](https://brickbank.cc/surfaces/b/datagate-people/run/getprospect.key.validate.md): Whether a GetProspect API key is valid, free of charge (GET /v2/me) $0.00 per unit. - [hunter.account.balance](https://brickbank.cc/surfaces/b/datagate-people/run/hunter.account.balance.md): A Hunter account's plan and the credits and searches used and available, free of charge (GET /account) $0.00 per unit. - [hunter.email.find](https://brickbank.cc/surfaces/b/datagate-people/run/hunter.email.find.md): A person's work email from name and company (Hunter Email Finder) $0.02 per unit. - [hunter.email.find_published](https://brickbank.cc/surfaces/b/datagate-people/run/hunter.email.find_published.md): A person's work email Hunter found published on the web, with the page it is on (Email Finder /email-finder/found: never an inferred address) $0.02 per unit. - [hunter.email.verify](https://brickbank.cc/surfaces/b/datagate-people/run/hunter.email.verify.md): Whether an email address is deliverable (Hunter Email Verifier): `valid`, `risky` for accept-all or webmail, `not_found` for an invalid or disposable address, otherwise `unknown`. Hunter answers 202 while it checks, so the call waits for the result. $0.01 per unit. - [hunter.key.validate](https://brickbank.cc/surfaces/b/datagate-people/run/hunter.key.validate.md): Whether a Hunter API key is valid, free of charge (GET /account) $0.00 per unit. - [hunter.people.find](https://brickbank.cc/surfaces/b/datagate-people/run/hunter.people.find.md): People at a company, with title and seniority (Hunter Domain Search). Titles filter on the returned position; Hunter rows carry no location, so `locations` is ignored. $0.02 per unit. - [icypeas.account.balance](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.account.balance.md): An Icypeas account's plan and credits left, free of charge (POST /a/actions/subscription-information) $0.00 per unit. - [icypeas.companies.search](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.companies.search.md): Companies matching industry, location, keyword, headcount, revenue or headcount-growth filters (Icypeas Company Search), 10 by default. Each row carries the vendor's `total` match count. $0.00038 per unit. - [icypeas.company.find](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.company.find.md): The Icypeas lead-database company for a domain (Icypeas Company Search, one row): its LinkedIn URN, slug and page, website, headcount, industry and address as the vendor holds them. The vendor matches the domain loosely (showcase and sub-pages), so a caller checks `website` and `url` before trusting `lid`. $0.00038 per unit. - [icypeas.company.scrape](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.company.scrape.md): A LinkedIn company page's public fields (URN, slug, headcount, industry, website, specialties, employee growth), read from Icypeas's own scrape (never from LinkedIn) $0.0095 per unit. - [icypeas.company.url_find](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.company.url_find.md): A company's LinkedIn page URL by name or domain (Icypeas URL Search) $0.02 per unit. - [icypeas.domain.scan](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.domain.scan.md): Role emails Icypeas finds at a company domain or name (Icypeas Domain Scan) $0.02 per unit. - [icypeas.email.find](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.email.find.md): A person's work email from a name (first/last or full) and a company domain or name (Icypeas Email Search). `probable` is `risky`; rows the vendor grades `not_found` are skipped. $0.02 per unit. - [icypeas.email.reverse](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.email.reverse.md): The LinkedIn profile behind an email address (Icypeas Reverse Email Lookup) $0.19 per unit. - [icypeas.email.verify](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.email.verify.md): Whether an email address is deliverable (Icypeas Email Verification): `valid` for a sure grade, `risky` for probable, `not_found` when the vendor grades it so or finds no row, otherwise `unknown`. $0.0019 per unit. - [icypeas.key.validate](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.key.validate.md): Whether an Icypeas API key is valid, free of charge (POST /find-people/count) $0.00 per unit. - [icypeas.people.count](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.people.count.md): How many people at a company (domain or LinkedIn company URN) match a job-title filter, free $0.00 per unit. - [icypeas.people.find](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.people.find.md): People matching titles at one company (domain, name or LinkedIn company URN) or anywhere (Icypeas People Search), 10 by default and up to 200. Needs a company, titles or locations. Locations filter the returned page by country or city, so they can shrink it; `seniority` is ignored. Each person carries the vendor's `total` match count and `truncated` when the page holds fewer rows than that. $0.00038 per unit. - [icypeas.people.find_ranked](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.people.find_ranked.md): People at one company (domain, name or LinkedIn company URN) or anywhere, for the first of `title_any` (1-10 titles, most likely first) that finds someone: one Icypeas People Search per title, 10 people by default and up to 200, stopping at the first title with people left after the locations filter. With `tiers` (each a ranked title list) the same first-hit search runs once per tier and then once for `title_any` as the last tier, `limit` applying per tier; a person already found by an earlier tier is dropped by LinkedIn URL, and each person carries its 0-based `tier`. A title is not started once another search would not fit inside the time budget: the tiers finished by then are returned, or a `not_found` miss when none found anyone. `title_none` words and the posting's `exclude_titles` are sent to the vendor as job-title excludes, so rows with those words are never read or billed; locations stay a filter on the returned page. Every row read is billed, including those the locations filter drops. Each person carries the vendor's `total` match count for the title that matched. With a `posting` the shared decision-maker picker also reads the people: `picker` shadow (the default) logs its pick beside this answer and changes nothing; `on` returns only the people it accepts, each with a `pick_role`, `pick_reason` and `pick_why`, moves to the next title when a page holds nobody acceptable, and answers a `not_found` that is not billed when every person read was rejected. A CEO, MD or founder is taken only when the company has no head of the posting's function, and for a posting whose own title is a head-level role the function's Head of / VP / Director titles are searched before the first title list that holds one: a free count the gateway keeps 30 days for every consumer answers that, the posting's `function_head_exists` overrides it and its `employee_count` decides when neither is known. $0.00038 per unit. - [icypeas.people.rank](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.people.rank.md): Pick the right decision-maker from people the caller already holds, for one posting: no vendor call, free. Drops a person from another function or country (a regional title that covers the posting's country passes), takes a CEO, MD or founder only when the company has no head of the posting's function, and returns the rest best first, each with a `pick_role` (posting_manager, function_head, small_company_ceo, executive or senior_contact), a `pick_reason` code and a `pick_why` sentence. A posting's `exclude_titles` drop a person whose title holds one of those words, and its `seniority` bands rank a person further from them lower (`off_seniority_band`). Nobody acceptable is a `not_found` miss that lists every rejected person's title, country and reason, or with `not_found_as` data an ok answer carrying that as fields. `strict` false lets generalists through. $0.00 per unit. - [icypeas.people.search](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.people.search.md): People matching person and company filters, no company needed (Icypeas People Search), 10 by default. Each row carries the vendor's `total` match count. $0.00038 per unit. - [icypeas.people.taxonomy](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.people.taxonomy.md): The decision-maker vocabulary the picker speaks, free, no vendor call and no input: the function families (`functions`, a posting's `posting_function` names one), the seniority bands (`seniority_bands`, top of the company first, a posting's `seniority` names them) and the `version` of that vocabulary, which changes whenever either list does. $0.00 per unit. - [icypeas.profile.scrape](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.profile.scrape.md): A LinkedIn profile's public fields, read from Icypeas's own scrape (never from LinkedIn) $0.03 per unit. - [icypeas.profile.url_find](https://brickbank.cc/surfaces/b/datagate-people/run/icypeas.profile.url_find.md): A person's LinkedIn profile URL by name and company name or domain (Icypeas URL Search) $0.02 per unit. - [krs.connection.try](https://brickbank.cc/surfaces/b/datagate-people/run/krs.connection.try.md): Prove the source answers: one extract of a known company, read as officers are. Free, no input. $0.00 per unit. - [krs.officers.list](https://brickbank.cc/surfaces/b/datagate-people/run/krs.officers.list.md): The board, supervisory board and proxies of a Polish company by KRS number (Polish court register): body, role and name. The register masks natural persons' names to an initial, so a row names a role, not a person. $0.00 per unit. - [leadmagic.email.find](https://brickbank.cc/surfaces/b/datagate-people/run/leadmagic.email.find.md): A person's work email from name and company domain (LeadMagic Email Finder) $0.02 per unit. - [leadmagic.key.validate](https://brickbank.cc/surfaces/b/datagate-people/run/leadmagic.key.validate.md): Whether a LeadMagic API key is valid, free of charge (POST /credits) $0.00 per unit. - [leadmagic.people.find](https://brickbank.cc/surfaces/b/datagate-people/run/leadmagic.people.find.md): Decision-makers at a company domain, one LeadMagic Role Finder call per title (at most 10), in waves of `limit` until `limit` people are found. Each person carries the title it was found for. Rows carry no location or seniority, so `locations` and `seniority` are ignored. A title whose lookup fails is skipped when others found people. Up to $0.48 per unit. - [leadmagic.phone.find](https://brickbank.cc/surfaces/b/datagate-people/run/leadmagic.phone.find.md): A person's mobile number from their LinkedIn URL (LeadMagic Mobile Finder) $0.02 per unit. - [prospeo.email.find](https://brickbank.cc/surfaces/b/datagate-people/run/prospeo.email.find.md): A person's verified work email from name and company (Prospeo Enrich Person) $0.00 per unit. - [prospeo.key.validate](https://brickbank.cc/surfaces/b/datagate-people/run/prospeo.key.validate.md): Whether a Prospeo API key is valid, free of charge (GET /account-information) $0.00 per unit. - [routed.email_find](https://brickbank.cc/surfaces/b/datagate-people/run/routed.email_find.md): The standard email.find answered by the email vendor with the best measured record (bettercontact, getprospect, hunter, icypeas, leadmagic, prospeo, treg), falling to the next on a vendor error, timeout or out-of-credits. Each row names its vendor. A vendor whose key is not sent is skipped. Up to $0.15 per unit. - [routed.people_find](https://brickbank.cc/surfaces/b/datagate-people/run/routed.people_find.md): The standard people.find answered by the people vendor with the best measured record (bettercontact, hunter, icypeas, leadmagic), falling to the next on a vendor error, timeout or out-of-credits. Each row names its vendor. A vendor whose key is not sent is skipped. Up to $1.50 per unit. - [routed.reliability](https://brickbank.cc/surfaces/b/datagate-people/run/routed.reliability.md): The routed ops' per-vendor record in this replica since it started: calls, hit rate, wrong-company rate, error and timeout rates, rows served and declared cost per row. Lists only vendors whose terms allow a benchmark to name them. Free. $0.00 per unit. - [tomba.email.find_published](https://brickbank.cc/surfaces/b/datagate-people/run/tomba.email.find_published.md): A person's work email Tomba names a source page for, with that page (Tomba Email Finder) $0.02 per unit. - [tomba.key.validate](https://brickbank.cc/surfaces/b/datagate-people/run/tomba.key.validate.md): Whether a Tomba key and secret are valid, free of charge (GET /me) $0.00 per unit. - [treg.email.find](https://brickbank.cc/surfaces/b/datagate-people/run/treg.email.find.md): A person's work email from name and company, routed across email finders (treg) Up to $0.15 per unit. - [treg.key.validate](https://brickbank.cc/surfaces/b/datagate-people/run/treg.key.validate.md): Whether a treg token is valid, free of charge (an empty email find treg refuses) $0.00 per unit. ### datagate-scrape 0.1.0 - [apify.actor.describe](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.actor.describe.md): What a public Actor declares about itself that its publisher cannot write: input fields, dataset fields, run statistics, pricing events and the latest build number, no key needed $0.00 per unit. - [apify.actor_run](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.actor_run.md): Run an Apify Actor and return its dataset rows, billed at the run's measured usage $1.00 per unit. - [apify.company_team_profiles](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.company_team_profiles.md): Headlines of up to `limit` (1..200) people currently at ONE LinkedIn company, via the harvestapi profile search Actor (build 0.0.274); each row echoes the `company` you sent. A company with no profiles is a not_found miss. Billed at the run's measured usage. $1.00 per unit. - [apify.fantasticjobs_career_site_jobs](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.fantasticjobs_career_site_jobs.md): Jobs posted on employer career sites and ATS boards (fantastic.jobs career-site job listing API, build 0.0.69) whose title matches, posted in the last 1h, 24h or 7d: one run for up to `limit` (10..100) jobs, billed at the run's measured usage on datagate's Apify Organization account $1.25 per unit. - [apify.harvestapi_linkedin_post_comments](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.harvestapi_linkedin_post_comments.md): Read the comments of up to 5 LinkedIn posts (harvestapi post comments, build 0.0.36): up to 200 comments per post, each with its commenter's name, profile URL and headline, the comment text and its own time, billed at the run's measured usage on datagate's Apify Organization account $2.00 per unit. - [apify.harvestapi_linkedin_post_comments.reread](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.harvestapi_linkedin_post_comments.reread.md): Read the rows of a finished harvestapi_linkedin_post_comments run again from its dataset (the run id is the `provider_ref` of its settled outcome); no new run, free of charge $0.00 per unit. - [apify.harvestapi_linkedin_post_reactions](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.harvestapi_linkedin_post_reactions.md): Read who reacted to ONE LinkedIn post (harvestapi post reactions, build 0.0.48): up to 1000 reactions, each with its reactor's name, profile URL and headline and the reaction type, paged by the actor, billed at the run's measured usage on datagate's Apify Organization account $2.00 per unit. - [apify.harvestapi_linkedin_post_reactions.reread](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.harvestapi_linkedin_post_reactions.reread.md): Read the rows of a finished harvestapi_linkedin_post_reactions run again from its dataset (the run id is the `provider_ref` of its settled outcome); no new run, free of charge $0.00 per unit. - [apify.harvestapi_linkedin_post_search](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.harvestapi_linkedin_post_search.md): Search LinkedIn posts by phrase or by author (harvestapi post search, build 0.0.114): one run for up to 10 phrases or author profile URLs, newest first, billed at the run's measured usage on datagate's Apify Organization account $0.20 per unit. - [apify.harvestapi_linkedin_post_search.reread](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.harvestapi_linkedin_post_search.reread.md): Read the rows of a finished harvestapi_linkedin_post_search run again from its dataset (the run id is the `provider_ref` of its settled outcome); no new run, free of charge $0.00 per unit. - [apify.harvestapi_linkedin_profile_scraper](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.harvestapi_linkedin_profile_scraper.md): Find the work email of known LinkedIn profiles (harvestapi profile scraper, build 0.0.138): one run for up to 20 profile URLs, billed at the run's measured usage on datagate's Apify Organization account $1.00 per unit. - [apify.harvestapi_linkedin_profile_search](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.harvestapi_linkedin_profile_search.md): Find named people at LinkedIn companies by seniority or title (harvestapi profile search, build 0.0.87): one run for up to 25 company slugs, billed at the run's measured usage on datagate's Apify Organization account $5.00 per unit. - [apify.key.validate](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.key.validate.md): Whether an Apify API token is valid, free of charge (GET /users/me) $0.00 per unit. - [apify.lead_scraper_apollo_zoominfo_lusha](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.lead_scraper_apollo_zoominfo_lusha.md): People at ONE company domain from a prebuilt Apollo/ZoomInfo/Lusha lead database (build 1.4.68): one run for the item, billed at the run's measured usage on datagate's Apify Organization account $1.01 per unit. - [apify.leads_finder](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.leads_finder.md): People at ONE company domain, verified emails only, from the microworlds leads finder (build 0.0.227): one run for the item, billed at the run's measured usage on datagate's Apify Organization account $2.01 per unit. - [apify.leads_finder_linkedin_apollo_leads_generator](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.leads_finder_linkedin_apollo_leads_generator.md): People at ONE company domain from the braveleads LinkedIn/Apollo leads generator (build 0.0.95): one run for the item, billed at the run's measured usage on datagate's Apify Organization account $1.05 per unit. - [apify.leads_finder_with_emails_apollo_lusha_zoominfo](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.leads_finder_with_emails_apollo_lusha_zoominfo.md): People with emails at ONE company domain from a prebuilt Apollo/ZoomInfo/Lusha lead database (build 0.0.20): one run for the item, billed at the run's measured usage on datagate's Apify Organization account $1.01 per unit. - [apify.linkedin_company](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_company.md): Company details for ONE LinkedIn company page (harvestapi) (build 0.0.44): one run for the item, billed at the run's measured usage on datagate's Apify Organization account $0.05 per unit. - [apify.linkedin_company_employees](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_company_employees.md): Profiles of people currently at ONE LinkedIn company (harvestapi, Full profile mode, no emails) (build 0.0.163): one run for the item, billed at the run's measured usage on datagate's Apify Organization account $2.05 per unit. - [apify.linkedin_company_posts](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_company_posts.md): Read the newest posts of ONE LinkedIn company page with their like and comment counts (harvestapi company posts, build 0.0.53): up to 100 posts, optionally no older than a date, billed at the run's measured usage on datagate's Apify Organization account $0.21 per unit. - [apify.linkedin_company_posts.reread](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_company_posts.reread.md): Read the rows of a finished linkedin_company_posts run again from its dataset (the run id is the `provider_ref` of its settled outcome); no new run, free of charge $0.00 per unit. - [apify.linkedin_post_comments](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_post_comments.md): Read the comments of ONE LinkedIn post (harvestapi post comments, build 0.0.36): up to 200 comments, each with its commenter, reaction counts and the replies the actor nests under it, billed at the run's measured usage on datagate's Apify Organization account $0.40 per unit. - [apify.linkedin_post_comments.reread](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_post_comments.reread.md): Read the rows of a finished linkedin_post_comments run again from its dataset (the run id is the `provider_ref` of its settled outcome); no new run, free of charge $0.00 per unit. - [apify.linkedin_profile_comments](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_profile_comments.md): Read the comments ONE LinkedIn profile has written (harvestapi profile comments, build 0.0.18): up to 100 comments, newest first as the actor returns them, billed at the run's measured usage on datagate's Apify Organization account $0.20 per unit. - [apify.linkedin_profile_comments.reread](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_profile_comments.reread.md): Read the rows of a finished linkedin_profile_comments run again from its dataset (the run id is the `provider_ref` of its settled outcome); no new run, free of charge $0.00 per unit. - [apify.linkedin_profile_details](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_profile_details.md): Read known LinkedIn profiles by public identifier (harvestapi profile scraper, build 0.0.140): one run for up to 20 profiles, name, headline, location, connections, member id, open-to-work and the current position (title, company, start, end text; "Present" means no end date), the banner image URL, the first Featured item (title, URL; empty means no Featured section), with the work email in profile_with_email mode, billed at the run's measured usage on datagate's Apify Organization account $0.20 per unit. - [apify.linkedin_profile_details.reread](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_profile_details.reread.md): Read the rows of a finished linkedin_profile_details run again from its dataset (the run id is the `provider_ref` of its settled outcome); no new run, free of charge $0.00 per unit. - [apify.linkedin_profile_posts](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_profile_posts.md): Read the newest posts of ONE LinkedIn profile with their like and comment counts (harvestapi profile posts, build 0.0.85): up to 100 posts, billed at the run's measured usage on datagate's Apify Organization account $0.21 per unit. - [apify.linkedin_profile_posts.reread](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_profile_posts.reread.md): Read the rows of a finished linkedin_profile_posts run again from its dataset (the run id is the `provider_ref` of its settled outcome); no new run, free of charge $0.00 per unit. - [apify.linkedin_salesnav_resolve](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_salesnav_resolve.md): Resolve Sales Navigator company URLs (linkedin.com/sales/company/) to the public LinkedIn company URL, up to 10 per call (enrich-crm company scraper, build 1.0.20): one row per resolved company, a company it cannot find returns no row; billed at the run's measured usage on datagate's Apify Organization account $0.16 per unit. - [apify.linkedin_salesnav_resolve.reread](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.linkedin_salesnav_resolve.reread.md): Read the rows of a finished linkedin_salesnav_resolve run again from its dataset (the run id is the `provider_ref` of its settled outcome); no new run, free of charge $0.00 per unit. - [apify.store.search](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.store.search.md): Search the public Apify store for Actors by keyword: ids, run statistics and pricing, no key needed $0.00 per unit. - [apify.trudax_reddit_scraper_lite](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.trudax_reddit_scraper_lite.md): The newest posts of one or more subreddits (trudax Reddit Scraper Lite, build 5.8.7), newest first, one row per post with the same title, text, url, author and posted_at as feeds.reddit.posts; the replacement for that op once Reddit ends its RSS feeds on 2026-11-13. Comments, user pages and community info are never fetched. Billed at the run's measured usage on datagate's Apify Organization account $0.45 per unit. - [apify.x_post_engagers](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.x_post_engagers.md): Read who engaged with ONE X post (xquik X Engagement Scraper, build 1.0.199): its repliers or its reposters, up to 1000 rows, each with the account's handle, name and follower count and, for a reply, its text and URL; likers are not offered because X stopped exposing them in 2024; billed at the run's measured usage on datagate's Apify Organization account $0.15 per unit. - [apify.x_post_engagers.reread](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.x_post_engagers.reread.md): Read the rows of a finished x_post_engagers run again from its dataset (the run id is the `provider_ref` of its settled outcome); no new run, free of charge $0.00 per unit. - [apify.x_post_search](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.x_post_search.md): Search X posts by query or by author (xquik X Tweet Scraper, build 1.12.394): one run for up to 10 X search queries and 10 handles (sort_by top or latest orders the queries only; a handle's timeline comes newest first), with reply, repost, quote, like, bookmark and view counts, billed at the run's measured usage on datagate's Apify Organization account $0.03 per unit. - [apify.x_post_search.reread](https://brickbank.cc/surfaces/b/datagate-scrape/run/apify.x_post_search.reread.md): Read the rows of a finished x_post_search run again from its dataset (the run id is the `provider_ref` of its settled outcome); no new run, free of charge $0.00 per unit. - [bluesky.author_feed](https://brickbank.cc/surfaces/b/datagate-scrape/run/bluesky.author_feed.md): The posts one Bluesky account wrote (a handle such as bsky.app, or a did:), newest first, up to limit; reposts of other accounts' posts are left out. Keyless. $0.00 per unit. - [bluesky.connection.try](https://brickbank.cc/surfaces/b/datagate-scrape/run/bluesky.connection.try.md): Prove the public AppView answers: resolve one well-known handle, read as resolve_handle reads. Free, no input. It does not sign in, so it never spends the account's limited sign-ins (post_search does). $0.00 per unit. - [bluesky.post_exists](https://brickbank.cc/surfaces/b/datagate-scrape/run/bluesky.post_exists.md): Whether one Bluesky post is still there: its at:// uri or bsky.app URL in, the post with its current reply, repost, like and quote counts out. A deleted post is a not_found miss; a source that cannot answer now is never one (a rate limit holds, any other failure is a vendor_error miss). Keyless. $0.00 per unit. - [bluesky.post_search](https://brickbank.cc/surfaces/b/datagate-scrape/run/bluesky.post_search.md): Bluesky posts that match words (the search syntax of bsky.app: terms, "phrases", from:handle, #tags), newest first, followed across result pages up to limit. Signs in as datagate's own account. $0.00 per unit. - [bluesky.resolve_handle](https://brickbank.cc/surfaces/b/datagate-scrape/run/bluesky.resolve_handle.md): The DID (permanent account id) of a Bluesky handle such as bsky.app. Keyless. $0.00 per unit. - [brightdata.datasets.list](https://brickbank.cc/surfaces/b/datagate-scrape/run/brightdata.datasets.list.md): The datasets the Bright Data account can run, with their ids $0.00 per unit. - [brightdata.key.validate](https://brickbank.cc/surfaces/b/datagate-scrape/run/brightdata.key.validate.md): Whether a Bright Data API key is valid, free of charge (GET /datasets/list) $0.00 per unit. - [brightdata.linkedin_companies](https://brickbank.cc/surfaces/b/datagate-scrape/run/brightdata.linkedin_companies.md): Collect LinkedIn company pages by URL as a Bright Data snapshot, billed at the records it delivers $1.00 per unit. - [brightdata.linkedin_jobs](https://brickbank.cc/surfaces/b/datagate-scrape/run/brightdata.linkedin_jobs.md): Collect LinkedIn job postings by URL as a Bright Data snapshot, billed at the records it delivers $1.00 per unit. - [brightdata.linkedin_post_search](https://brickbank.cc/surfaces/b/datagate-scrape/run/brightdata.linkedin_post_search.md): Search LinkedIn posts by phrase (Google via Bright Data SERP, then its posts dataset): up to 10 phrases, newest first, billed at the searches run plus the records the snapshot delivers on datagate's Bright Data account. The second supplier behind apify.harvestapi_linkedin_post_search: same input, same row, plus a `source` $0.20 per unit. - [brightdata.linkedin_profiles](https://brickbank.cc/surfaces/b/datagate-scrape/run/brightdata.linkedin_profiles.md): Collect LinkedIn profiles by URL as a Bright Data snapshot, billed at the records it delivers $1.00 per unit. - [company_website.connection.try](https://brickbank.cc/surfaces/b/datagate-scrape/run/company_website.connection.try.md): Prove the direct fetch works: read IANA's example page (https://example.com/) the way homepage.fetch reads a homepage. Free, no input. $0.00 per unit. - [company_website.homepage.fetch](https://brickbank.cc/surfaces/b/datagate-scrape/run/company_website.homepage.fetch.md): A company's homepage read directly from its own site (https://{domain}/) and returned as text, with its title and description. For the sites Jina Reader cannot read. No JavaScript is run. Free. $0.00 per unit. - [contractsfinder.connection.try](https://brickbank.cc/surfaces/b/datagate-scrape/run/contractsfinder.connection.try.md): Prove the source answers: one keyword search of Contracts Finder, read as notices are. Free, no input. $0.00 per unit. - [contractsfinder.notices](https://brickbank.cc/surfaces/b/datagate-scrape/run/contractsfinder.notices.md): UK public-sector tenders and contract awards from Contracts Finder, found by keyword: title, description, buyer, type, status, dates and value. Dated evidence of a pilot or a contract. $0.00 per unit. - [customapi.api.get](https://brickbank.cc/surfaces/b/datagate-scrape/run/customapi.api.get.md): GET one JSON document from a path under the customer's own API, with their bearer key $0.00 per unit. - [customapi.key.validate](https://brickbank.cc/surfaces/b/datagate-scrape/run/customapi.key.validate.md): Whether the API root and bearer key are good: GET the base URL with the key, free of charge $0.00 per unit. - [feeds.connection.try](https://brickbank.cc/surfaces/b/datagate-scrape/run/feeds.connection.try.md): Prove feeds can be read: the newest topics of the Discourse forum meta.discourse.org, read as discourse.topics reads a forum. Free, no input. $0.00 per unit. - [feeds.discourse.topics](https://brickbank.cc/surfaces/b/datagate-scrape/run/feeds.discourse.topics.md): The newest topics of one category of a Discourse forum, read from its public listing: title, link and time, and an excerpt when the forum sends one. Pinned topics are left out. $0.00 per unit. - [feeds.read](https://brickbank.cc/surfaces/b/datagate-scrape/run/feeds.read.md): The newest entries of any public RSS 2.0, Atom or JSON Feed: guid, link, title, summary, time, author and the feed's title. Send a row's etag or last_modified back to be told the feed has not changed. A page that is not a feed is a miss not_a_feed; a site that cannot answer now holds rate_limited. $0.00 per unit. - [feeds.reddit.posts](https://brickbank.cc/surfaces/b/datagate-scrape/run/feeds.reddit.posts.md): The newest posts of a subreddit, read from its public Atom feed: title, body text, link, author and time. reddit allows one anonymous read a minute per address, so a second read inside it holds rate_limited. Reddit ends its RSS feeds on 2026-11-13; apify.trudax_reddit_scraper_lite returns the same rows and replaces this op. $0.00 per unit. - [harvestapi.key.validate](https://brickbank.cc/surfaces/b/datagate-scrape/run/harvestapi.key.validate.md): Whether a HarvestAPI key is valid, free of charge (GET /users/my-api-user) $0.00 per unit. - [harvestapi.people.find](https://brickbank.cc/surfaces/b/datagate-scrape/run/harvestapi.people.find.md): People at one LinkedIn company, by title and location (HarvestAPI lead search, direct). Needs `company_urn` (a public company id, URL or urn:li:organization); name and domain are not searchable. One page per call, `limit` trims it; `seniority` is ignored. $0.01 per unit. - [hn.connection.try](https://brickbank.cc/surfaces/b/datagate-scrape/run/hn.connection.try.md): Prove the source answers: one search of Hacker News through Algolia, read as items are. Free, no input. $0.00 per unit. - [hn.item_exists](https://brickbank.cc/surfaces/b/datagate-scrape/run/hn.item_exists.md): Whether one Hacker News story or comment is still there: its id or news.ycombinator.com/item?id= link in, the item with its current points and comment count out. A deleted or killed item, or an id that was never issued, is a not_found miss; a source that cannot answer now is never one (a rate limit holds, any other failure is a vendor_error miss). Keyless. $0.00 per unit. - [hn.search](https://brickbank.cc/surfaces/b/datagate-scrape/run/hn.search.md): The newest Hacker News stories or comments that match words, found through Algolia's public search: id, link, title, text, author, points, comment count, time and type. Newest first; `since` cuts off older items. $0.00 per unit. - [innovate_uk.connection.try](https://brickbank.cc/surfaces/b/datagate-scrape/run/innovate_uk.connection.try.md): Prove the source answers: read UKRI's publication page and find the funded-projects file link on it, without downloading the 24 MB file. Free, no input. $0.00 per unit. - [innovate_uk.funded_projects](https://brickbank.cc/surfaces/b/datagate-scrape/run/innovate_uk.funded_projects.md): The Innovate UK funded projects of one company, found by its Companies House number or else its exact name in UKRI's monthly funded-projects file (2016-17 to now): project, competition, award and spend, newest start first. The first call after a restart builds the index and takes seconds. The file's licence is unverified. $0.00 per unit. - [jina.connection.try](https://brickbank.cc/surfaces/b/datagate-scrape/run/jina.connection.try.md): Prove the reader answers: one read of example.com, judged as page.read judges it. Free, no input. $0.00 per unit. - [jina.page.read](https://brickbank.cc/surfaces/b/datagate-scrape/run/jina.page.read.md): A public web page read through Jina Reader and returned as clean text, with its title and description. Keyless, held to 20 requests a minute. $0.00 per unit. - [jobboards.company.job_posts](https://brickbank.cc/surfaces/b/datagate-scrape/run/jobboards.company.job_posts.md): A company's open job posts, each with its full text, read from the job board (Greenhouse, Lever or Ashby) its own website links to. Never guesses a board from the name: no link on the site, no posts. $0.00 per unit. - [jobboards.connection.try](https://brickbank.cc/surfaces/b/datagate-scrape/run/jobboards.connection.try.md): Prove job boards can be read: list the open posts of Greenhouse's own board, with no text. Free, no input. $0.00 per unit. - [nhscep.connection.try](https://brickbank.cc/surfaces/b/datagate-scrape/run/nhscep.connection.try.md): Prove the source answers: read the site's newest post as posts are. Free, no input. $0.00 per unit. - [nhscep.posts](https://brickbank.cc/surfaces/b/datagate-scrape/run/nhscep.posts.md): The newest posts of the NHS Clinical Entrepreneur Programme's website (nhscep.com): title, excerpt, link and time. News and cohort announcements, newest first. $0.00 per unit. - [signalsapi.company.events](https://brickbank.cc/surfaces/b/datagate-scrape/run/signalsapi.company.events.md): UK company events from the register, oldest first: a sponsor licence added, an officer appointed or resigned (Reqbeat `GET /v1/company-events`). Cursor-paged: send `since` (0 to start) and read the next one from `next_cursor`; `company_id` and `event_type` narrow it. An event's `date` is the register's own and may precede its `observed_at`; `role` is the officer role, or the sponsor route for `sponsor_added`. An empty page is a `not_found` miss: keep the cursor you sent. Not metered. $0.00 per unit. - [signalsapi.company.hiring_brief](https://brickbank.cc/surfaces/b/datagate-scrape/run/signalsapi.company.hiring_brief.md): One company's whole pre-action hiring brief in a call: the hiring pulse (velocity, direction, momentum) and its history atoms (Reqbeat `GET /v1/companies/{id}/pre-action-brief`). Takes the `signalsapi_id` `company.resolve` gives; `max_age` (seconds) is the oldest data accepted. A company not crawled yet is a `crawling` miss: ask again later. Billed per call. $0.0020 per unit. - [signalsapi.company.open_reqs](https://brickbank.cc/surfaces/b/datagate-scrape/run/signalsapi.company.open_reqs.md): One company's own open reqs, deduped across boards (Reqbeat `GET /v1/companies/{id}/open-reqs`). Takes the `signalsapi_id` `company.resolve` gives; `function` and `country` narrow it. Billed per call. $0.0020 per unit. - [signalsapi.company.resolve](https://brickbank.cc/surfaces/b/datagate-scrape/run/signalsapi.company.resolve.md): A company's SignalsAPI id from its website or its name (Reqbeat `GET /v1/companies/resolve`). Send exactly one of `company_domain` (the companies registered at it) or `company_name` (up to five candidates, each with a `match_confidence`). Free. $0.00 per unit. - [signalsapi.jobs.role](https://brickbank.cc/surfaces/b/datagate-scrape/run/signalsapi.jobs.role.md): One stored posting, to learn whether it is still live (Reqbeat `GET /v1/jobs/role`). Takes the `company_id` and `req_key` a job search row carries. A live posting answers its role row; one that is closed, unknown or not fresh enough is a `not_found` miss, which is the answer "closed", not a failure. Billed per found role, never for the miss. $0.0020 per unit. - [signalsapi.key.validate](https://brickbank.cc/surfaces/b/datagate-scrape/run/signalsapi.key.validate.md): Whether a SignalsAPI key is valid, free of charge (GET /v1/whoami) $0.00 per unit. - [signalsapi.reqs.qualified](https://brickbank.cc/surfaces/b/datagate-scrape/run/signalsapi.reqs.qualified.md): The live reqs matching a full ICP (Reqbeat `POST /v1/reqs/qualified`): `criteria` groups `company`, `req` and `event`, AND across fields and OR within one. Takes the vendor's body as is and answers its page (`reqs`, `next_cursor`, and `companies` when `include_pulse`). Billed per row returned. $0.20 per unit. - [substack.connection.try](https://brickbank.cc/surfaces/b/datagate-scrape/run/substack.connection.try.md): Prove the source answers: read one post of one publication as publication_posts does. Free, no input. $0.00 per unit. - [substack.post_search](https://brickbank.cc/surfaces/b/datagate-scrape/run/substack.post_search.md): Substack posts that match words, across all publications, in Substack's relevance order, followed across result pages up to limit. `since` keeps the posts published at or after it. Keyless. $0.00 per unit. - [substack.publication_posts](https://brickbank.cc/surfaces/b/datagate-scrape/run/substack.publication_posts.md): The posts one Substack publication has published, newest first, up to limit. `publication` is its subdomain (on), its host (www.lennysnewsletter.com) or any URL on it. `since` keeps the posts published at or after it. Keyless. $0.00 per unit. - [substack.resolve](https://brickbank.cc/surfaces/b/datagate-scrape/run/substack.resolve.md): What a Substack URL or handle names: a publication (https://on.substack.com, www.lennysnewsletter.com) or a profile (@lenny, https://substack.com/@lenny, lenny), with its host or handle, name and publication. Keyless. $0.00 per unit. - [ukri.connection.try](https://brickbank.cc/surfaces/b/datagate-scrape/run/ukri.connection.try.md): Prove the source answers: one search of UKRI's Gateway to Research, read as projects are. Free, no input. $0.00 per unit. - [ukri.projects](https://brickbank.cc/surfaces/b/datagate-scrape/run/ukri.projects.md): UK research projects funded by UKRI (the research councils and Innovate UK), found by words in the title or abstract: title, abstract, funder, grant category and status. The source lags the funding by about three months. $0.00 per unit. ### datagate-search 0.1.0 - [anthropic.fit.judge](https://brickbank.cc/surfaces/b/datagate-search/run/anthropic.fit.judge.md): A model scores 1 to 5 how specifically a posting describes a problem an offer solves, and copies out the offer sentence and the posting sentence that match. Either quote that is not word for word in its text (whitespace collapsed) makes the answer a miss `not_verbatim`, still billed. `offer` is the vendor's site sentences or an ICP, one per line. `model` defaults to claude-sonnet-5, `max_tokens` to 512 (at most 4096). Billed in tokens, reported in `units`. Up to $0.07 per unit. - [anthropic.judge.rubric](https://brickbank.cc/surfaces/b/datagate-search/run/anthropic.judge.rubric.md): The `rubric_sha` of a judge: SHA-256 of the prompt `text.judge` would send for these params, so a caller can tell whether two checks asked the same thing. Free, calls no model, needs no key. $0.00 per unit. - [anthropic.key.validate](https://brickbank.cc/surfaces/b/datagate-search/run/anthropic.key.validate.md): Whether an Anthropic key is valid, free of charge (GET /v1/models) $0.00 per unit. - [anthropic.llm.field](https://brickbank.cc/surfaces/b/datagate-search/run/anthropic.llm.field.md): A prompt in, the model's text out (Anthropic Messages API). `system` sets the model's role. `model` defaults to claude-haiku-5-5 and `max_tokens` to 1024 (at most 4096). Billed in tokens. Up to $0.02 per unit. - [anthropic.text.judge](https://brickbank.cc/surfaces/b/datagate-search/run/anthropic.text.judge.md): A model reads one text and answers the caller's closed questions and copies out its quote fields; each quote is `verified` only when it appears word for word in the item's `text`. `text_fields` (optional) are answers in the model's own words, a string or, with `list`, a list of short strings (`max_items`), returned under `texts` with no verbatim check. `pass_rule` (optional) removes an item by its answers; every answer is returned either way, with the `rubric_sha` of the rendered prompt. `model` defaults to claude-sonnet-5, `max_tokens` to 2048 (at most 4096). Billed in tokens, reported in `units`. Up to $0.08 per unit. - [anthropic.text.verbatim_check](https://brickbank.cc/surfaces/b/datagate-search/run/anthropic.text.verbatim_check.md): Whether a quote is word for word in a text: a non-empty literal substring, no normalising. `collapse_whitespace` (default false) reads every run of whitespace as one space on both sides first. An empty quote is `verified: false`. Free, calls no model, needs no key. $0.00 per unit. - [anthropic.web.search](https://brickbank.cc/surfaces/b/datagate-search/run/anthropic.web.search.md): Open-web search by Claude's web search tool (Anthropic Messages API): each result's URL, title and page age. `domains` limits the search to those sites. Billed per search plus the model's tokens. Up to $0.03 per unit. - [exa.agent.run](https://brickbank.cc/surfaces/b/datagate-search/run/exa.agent.run.md): Run an Exa agent on a research query at a fixed effort (`medium` or `high`, never auto), returning its answer with the sources it cites, billed at the cost Exa measured Up to $0.50 per unit. - [exa.connection.try](https://brickbank.cc/surfaces/b/datagate-search/run/exa.connection.try.md): Prove the key works: one Exa search for one result, read as web.search reads it. Not free: Exa has no free call, so this bills one minimal search (about $0.007). No input. $0.0070 per unit. - [exa.web.search](https://brickbank.cc/surfaces/b/datagate-search/run/exa.web.search.md): Open-web search that returns each result's evidence URL and publish date (Exa Search API). `start_published_date` and `domains` narrow it; `limit` caps the results (default 10). Up to $0.02 per unit. - [linkup.key.validate](https://brickbank.cc/surfaces/b/datagate-search/run/linkup.key.validate.md): Whether a Linkup API key is valid, free of charge (GET /credits/balance) $0.00 per unit. - [linkup.research.run](https://brickbank.cc/surfaces/b/datagate-search/run/linkup.research.run.md): Run a Linkup research task on a question at a fixed depth (`S` or `M`), returning a sourced answer with the pages it cites Up to $0.50 per unit. - [podcast.episode_search](https://brickbank.cc/surfaces/b/datagate-search/run/podcast.episode_search.md): Podcast episodes whose tagged people, title or description match a query (Podcast Index search/byperson), newest first, each with `episode_id`, `title`, `description`, `published_at`, `url`, `audio_url`, `duration` (seconds), `show_id`, `show_title` and `transcript_url` when the feed names one. `since` (a unix time or an ISO 8601 date or time) drops older ones; `limit` is the most returned (default 20, most 100). $0.00 per unit. - [podcast.key.validate](https://brickbank.cc/surfaces/b/datagate-search/run/podcast.key.validate.md): Whether a Podcast Index key and secret are valid, free of charge (GET /stats/current) $0.00 per unit. - [podcast.show_episodes](https://brickbank.cc/surfaces/b/datagate-search/run/podcast.show_episodes.md): A show's newest episodes, newest first (Podcast Index episodes/byfeedid), each as `episode_search` returns it. `since` (a unix time or an ISO 8601 date or time) keeps newer ones; `limit` is the most returned (default 20, most 100). $0.00 per unit. - [podcast.show_resolve](https://brickbank.cc/surfaces/b/datagate-search/run/podcast.show_resolve.md): A podcast's show id from its title or its RSS feed URL (Podcast Index podcasts/byfeedurl, search/byterm): `show_id`, `title`, `feed_url`, `url`, `description`, `author`, `language`, `episode_count` and `newest_episode_at`. A title must match one show exactly (ignoring case) or be the only hit; otherwise it is a miss, since a wrong show is worse than none, and the feed URL is exact. $0.00 per unit. - [podcast.transcript](https://brickbank.cc/surfaces/b/datagate-search/run/podcast.transcript.md): The transcript an episode's feed names in its `podcast:transcript` tag (Podcast Index episodes/byid): `episode_id`, `title`, `transcript_url`, `transcript_type` (its media type, when the feed gives one) and `transcripts`, every `{url, type}` the feed lists. An episode whose feed names none is a not_found miss; there is no speech-to-text. $0.00 per unit. - [serpapi.connection.try](https://brickbank.cc/surfaces/b/datagate-search/run/serpapi.connection.try.md): Prove the key works: one Google Jobs search, read as jobs.search reads it. Not free: SerpApi's free account call answers with the key itself, so this spends one search (a repeat within the hour is served from SerpApi's cache, free). No input. $0.01 per unit. - [serpapi.jobs.search](https://brickbank.cc/surfaces/b/datagate-search/run/serpapi.jobs.search.md): Google Jobs postings for a query (SerpApi), UK by default (`gl=uk`). Each posting names the employer, location, source board and how long ago it was posted. `page_token` reads the next page of 10. $0.01 per unit. - [serpapi.limits.read](https://brickbank.cc/surfaces/b/datagate-search/run/serpapi.limits.read.md): What the key has left: per SerpApi limit (searches_per_month, searches_per_hour) its allowance, the searches left and when it resets, from SerpApi's free Account API. Spends no search. No input. $0.00 per unit. - [serpapi.web.search](https://brickbank.cc/surfaces/b/datagate-search/run/serpapi.web.search.md): Google's organic web results for a query (SerpApi, engine google): each result's URL, title, snippet and rank, the top `limit` (default and most 10). `gl`/`hl` name the country and language. One search; no results is a free miss. $0.01 per unit. - [tavily.key.validate](https://brickbank.cc/surfaces/b/datagate-search/run/tavily.key.validate.md): Whether a Tavily API key is valid, free of charge (GET /usage) $0.00 per unit. - [tavily.limits.read](https://brickbank.cc/surfaces/b/datagate-search/run/tavily.limits.read.md): What the account has left: its monthly credits (credits_per_month: the plan's and any pay-as-you-go allowance), the credits left and when they reset, from Tavily's free GET /usage. Spends no credit. No input. $0.00 per unit. - [tavily.web.search](https://brickbank.cc/surfaces/b/datagate-search/run/tavily.web.search.md): Open-web search that returns each result's evidence URL, snippet and publish date (Tavily Search API). `topic` news returns dates; `start_date`/`end_date` (YYYY-MM-DD) and `domains` narrow it; `limit` caps the results (default 10); `depth` advanced costs two credits. Up to $0.02 per unit. - [voyage.embeddings.embed](https://brickbank.cc/surfaces/b/datagate-search/run/voyage.embeddings.embed.md): Texts in, one embedding vector per text out (Voyage AI), for clustering or search by meaning. Up to 64 texts of at most 8000 characters each; `vectors` keep the input order and the result names the `model` and the `dimension`. `model` defaults to voyage-3.5; `input_type` (document or query) tells the model what the texts are for. Billed per input token, reported in `tokens`. Up to $0.01 per unit. - [voyage.key.validate](https://brickbank.cc/surfaces/b/datagate-search/run/voyage.key.validate.md): Whether a Voyage AI key is valid (embeds one word, a fraction of a cent) $0.0000010 per unit. - [youtube.channel_resolve](https://brickbank.cc/surfaces/b/datagate-search/run/youtube.channel_resolve.md): A channel's id from its @handle, its channel URL (youtube.com/@handle, /channel/UC..., /user/name) or the id itself (YouTube Data API channels.list): `channel_id`, `url`, `title`, `handle`, `subscriber_count`. A `/c/name` custom URL cannot be resolved without a 100-unit search, so it is a bad_input miss. Costs 1 quota unit. $0.00 per unit. - [youtube.channel_uploads](https://brickbank.cc/surfaces/b/datagate-search/run/youtube.channel_uploads.md): A channel's uploads, newest first (YouTube Data API playlistItems.list on its uploads playlist, 2 quota units a page, never search's 100), each as `video_search` returns it. `since` (a date or an RFC 3339 time) drops older ones; `limit` is the page (default 25, most 50); a page that may continue carries `next_page_token`, sent back as `page_token`. $0.00 per unit. - [youtube.key.validate](https://brickbank.cc/surfaces/b/datagate-search/run/youtube.key.validate.md): Whether a YouTube Data API key is valid, for 1 quota unit (videoCategories.list) $0.00 per unit. - [youtube.video_exists](https://brickbank.cc/surfaces/b/datagate-search/run/youtube.video_exists.md): Whether one YouTube video is still public: its id or URL (watch?v=, youtu.be, /shorts, /live, /embed) in, the video with its current view, like and comment counts out (videos.list). A deleted or private video is a not_found miss; a quota or rate limit holds and any other failure is a vendor_error miss, never not_found. Costs 1 quota unit. $0.00 per unit. - [youtube.video_search](https://brickbank.cc/surfaces/b/datagate-search/run/youtube.video_search.md): Videos matching a query (YouTube Data API search.list), each with its title, description, publish time, channel, ISO 8601 duration, view, like and comment counts and thumbnail. `published_after` (a date or an RFC 3339 time) keeps newer ones; `order` is relevance (default), date, viewCount or rating; `limit` is the page (default 25, most 50); a full page carries `next_page_token`, sent back as `page_token` for the next. Costs 101 of the project's 10,000 daily quota units; when the day's are used up it holds with a retry after the reset (midnight Pacific Time). $0.00 per unit. ### dibs 0.1.0 - [domains.check](https://brickbank.cc/surfaces/b/dibs/run/domains.check.md): Which `.` domains are free: every name on `ALWAYS_TLDS` (.com, .no, .cc, .co, .at) first, $0.00 per unit. - [domains.ladder](https://brickbank.cc/surfaces/b/dibs/run/domains.ladder.md): Each name's best domain-ladder rung (free .com, free domain hack, free other TLD), with the $0.40 per unit. - [domains.price](https://brickbank.cc/surfaces/b/dibs/run/domains.price.md): A registrar's price, premium flag and renewal for finalist domains (the caller's Porkbun keys), beside the registry verdict. $0.00 per unit. - [domains.watch](https://brickbank.cc/surfaces/b/dibs/run/domains.watch.md): Each domain's RDAP statuses, expiry, days left and drop phase now, asked of its registry alone. $0.00 per unit. - [names.suggest](https://brickbank.cc/surfaces/b/dibs/run/names.suggest.md): Product-name candidates for a bonsai vision: name, why (citing V-ids), length, pronounceable, notes. $0.06 per unit. - [naming.clear](https://brickbank.cc/surfaces/b/dibs/run/naming.clear.md): Clearance for up to 8 finalists of a product card: handles (GitHub, npm, PyPI, crates; X and Instagram by $0.05 per unit. - [naming.critic](https://brickbank.cc/surfaces/b/dibs/run/naming.critic.md): For each name the founder liked, in the order given: the strongest objection, its severity and a $0.25 per unit. - [naming.dossier](https://brickbank.cc/surfaces/b/dibs/run/naming.dossier.md): The decision page for the names the founder starred or liked: the Pareto front of mark × domain path, a $0.00 per unit. - [naming.fit](https://brickbank.cc/surfaces/b/dibs/run/naming.fit.md): For each name, in the order given: its fit to the card's vision, the passage it speaks to, why, a gloss. $0.36 per unit. - [naming.internal](https://brickbank.cc/surfaces/b/dibs/run/naming.internal.md): Names for an internal tool, best first, each with how it was made and, when generated, the blind guess $0.08 per unit. - [naming.steer](https://brickbank.cc/surfaces/b/dibs/run/naming.steer.md): The next round for a product card, a client-held envelope and this product's marks (`[{name, label, $1.47 per unit. ### instantly 1.0.0 - [campaign.enrol](https://brickbank.cc/surfaces/b/instantly/run/campaign.enrol.md): Enrol a lead into an Instantly campaign (and optionally a list) by email $0.00 per unit. - [campaign.sending_status](https://brickbank.cc/surfaces/b/instantly/run/campaign.sending_status.md): Read an Instantly campaign's daily send limit, how much of it is used, and whether it is hit $0.00 per unit. - [lead.add](https://brickbank.cc/surfaces/b/instantly/run/lead.add.md): Add a lead to an Instantly campaign or list with its names, company fields and custom variables $0.00 per unit. - [lead.list](https://brickbank.cc/surfaces/b/instantly/run/lead.list.md): List the leads of an Instantly campaign with their delivery status, paging Instantly internally $0.00 per unit. ### lemlist 1.0.0 - [activities.pull](https://brickbank.cc/surfaces/b/lemlist/run/activities.pull.md): The lemlist activity feed (sends, opens, replies, ...) since an instant, as raw rows $0.00 per unit. - [campaign.enrol](https://brickbank.cc/surfaces/b/lemlist/run/campaign.enrol.md): Enrol a lead into a lemlist campaign by email $0.00 per unit. - [campaign.preflight](https://brickbank.cc/surfaces/b/lemlist/run/campaign.preflight.md): Whether a lemlist campaign can dispatch a lead right now, without adding one $0.00 per unit. - [campaigns.inventory](https://brickbank.cc/surfaces/b/lemlist/run/campaigns.inventory.md): List the account's lemlist campaigns with status and the vendor's boolean flags $0.00 per unit. - [campaigns.list](https://brickbank.cc/surfaces/b/lemlist/run/campaigns.list.md): List the account's lemlist campaigns $0.00 per unit. - [employment.confirm](https://brickbank.cc/surfaces/b/lemlist/run/employment.confirm.md): Whether lemlist's people database places a LinkedIn profile at the given company $0.00 per unit. - [key.validate](https://brickbank.cc/surfaces/b/lemlist/run/key.validate.md): Whether a lemlist API key is valid, free of charge $0.00 per unit. - [lead.add](https://brickbank.cc/surfaces/b/lemlist/run/lead.add.md): Add a lead (email and/or LinkedIn URL, names, custom variables) to a lemlist campaign that can dispatch it $0.00 per unit. - [people.stated_employment](https://brickbank.cc/surfaces/b/lemlist/run/people.stated_employment.md): The current employer lemlist's people database states for a LinkedIn profile $0.00 per unit. - [seats.count](https://brickbank.cc/surfaces/b/lemlist/run/seats.count.md): How many distinct lemlist users (seats) the account has $0.00 per unit. ### lpcritic 0.1.0 - [hero_check](https://brickbank.cc/surfaces/b/lpcritic/run/hero_check.md): Critiques a landing page's first screen (URL or md/html upload) at 1280 and 390 px: a stranger's cold read, the hero's promises and rule-cited findings, top 3 first. Never judges whether the product delivers. $0.06 per unit. - [line_check](https://brickbank.cc/surfaces/b/lpcritic/run/line_check.md): Checks one headline, subhead or CTA line: its promise rung 0-4 (concrete = 3+), what it says back, whether a competitor could say it, and rule-cited findings. No rewrites. $0.02 per unit. - [page_critique](https://brickbank.cc/surfaces/b/lpcritic/run/page_critique.md): Critiques a whole landing page (URL or md/html upload): its cold read and every promise with its proof and whether the page keeps it. Never judges whether the product delivers. $0.31 per unit. - [visual_check](https://brickbank.cc/surfaces/b/lpcritic/run/visual_check.md): Judges a styled page's screenshots (laptop and phone, first screen and whole page) against five fixed visual rules: a focal visual, one type scale, rhythm between sections, a product not a document, legible on a phone. Findings are fail (blocker) or warn (advice), each with where and a fix at its source. $0.02 per unit. ### smspool 1.0.0 - [balance.read](https://brickbank.cc/surfaces/b/smspool/run/balance.read.md): The SMSPool credit left on your key, in USD $0.00 per unit. - [key.validate](https://brickbank.cc/surfaces/b/smspool/run/key.validate.md): Whether an SMSPool API key is valid, free of charge $0.00 per unit. - [sms.code](https://brickbank.cc/surfaces/b/smspool/run/sms.code.md): Rent a phone number for a site and read the code it texts $0.01 per unit. ### ui-critic 0.1.0 - [ui.critique](https://brickbank.cc/surfaces/b/ui-critic/run/ui.critique.md): Judges how a captured screen looks, from its pixels, computed styles and, when you give them, your design tokens only: nine deterministic floor rules (contrast, unstyled controls, tap targets, 390 px overflow, token and grid drift, type sizes, axe, dead clicks) plus a three-sample model quorum over real and wireframe tiles. Returns a critic-verdict/1 report: exit code, admissible findings with locators and crops, JUnit, SARIF and a builder view. Never sees the screen's goal or page source. $0.80 per unit. ### ux-critic 0.1.0 - [ux.critique](https://brickbank.cc/surfaces/b/ux-critic/run/ux.critique.md): Judges whether a persona can finish their tasks on a screen, from a capture bundle's accessibility trees and click graph (never its pixels), from a written UX spec, or from an API/library example script and its output. Deterministic graph rules plus a 3-sample LLM walk quorum; returns a critic-verdict/1 report (exit code, findings, JUnit, SARIF, builder view) and the walked traces. $0.85 per unit. ### whatblock 0.1.0 - [company.what_it_does](https://brickbank.cc/surfaces/b/whatblock/run/company.what_it_does.md): What a company actually does — what it sells, to whom, where — in 1-3 plain third-person sentences, from its own LinkedIn About and website texts. No self-praise, mission or founding story; never invents facts. $0.00060 per unit. ## Machine-readable - https://brickbank.cc/pricing.json - https://brickbank.cc/openapi.json - https://brickbank.cc/.well-known/mcp catalog: cccab12262a08bfc9c64c2bdc328319e0ab30fc3bf22ffd25388737ab54aaa5a