bossroster 0.1.0
Outside sites it contacts: api.anthropic.com, app.icypeas.com
View manifest
- resolve — 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 Inputs: none Try
- aggregate — 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 Inputs: Canonical company key (from resolve) Try
- leader_seat — 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 Inputs: Canonical company key (from resolve) Try
- people.find — 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 Inputs: Company LinkedIn URN, Company name, Company domain, UK Companies House number (read officers for it), Polish KRS number (read the register's board for it) Try
- ask — 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 Inputs: Canonical company key (from resolve) Try
- email.find — 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 Inputs: First name, Last name, Company domain Try
- key.validate — Whether your BossRoster key is valid, free of charge. $0.02 per unit Inputs: none Try
From your software
Replace <YOUR_RUN_KEY> with your run key. The operator's run key is in crew /root/dev/blocks/.env, BLOCKS_RUN_KEYS; make more on the run keys page.
Address: https://brickbank.cc/b/bossroster
Call it:
# Use a new code for each new run. Send the same code again when you retry, and you get the first run back, never charged twice.
curl -X POST https://brickbank.cc/b/bossroster/v1/run/resolve -H "Authorization: Bearer <YOUR_RUN_KEY>" -H "Idempotency-Key: <NEW_CODE_PER_RUN>" -d '{"items": [{"id": "example", "input": {"domain": "stripe.com"}}]}'MCP address: https://brickbank.cc/b/bossroster/mcp (tools)
Claude Code:
claude mcp add --transport http bossroster https://brickbank.cc/b/bossroster/mcp --header "Authorization: Bearer <YOUR_RUN_KEY>"
.mcp.json (other MCP clients):
{
"mcpServers": {
"bossroster": {
"type": "http",
"url": "https://brickbank.cc/b/bossroster/mcp",
"headers": {
"Authorization": "Bearer <YOUR_RUN_KEY>"
}
}
}
}Run keys page (needs a run key)datagate-people 0.1.0
Outside sites it contacts: api.hunter.io, api.leadmagic.io, app.bettercontact.rocks, app.icypeas.com
View manifest
- bettercontact.email.find — A person's work email from name and company domain (BetterContact waterfall) $0.07 per unit Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- bettercontact.phone.find — A person's phone number from their LinkedIn URL (BetterContact waterfall). Dataset-sourced, not dial-verified, so `type` is `unknown`. $0.75 per unit Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- bettercontact.people.find — 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 Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- bettercontact.key.validate — Whether a BetterContact API key is valid and has credits, free (GET /account) $0.00 per unit Inputs: none Try
- bossroster.people.find — 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 Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- bossroster.email.find — A manager's verified work email, from a name people.find served (BossRoster) up to $0.06 per unit Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- bossroster.key.validate — Whether a BossRoster key is valid, free of charge $0.00 per unit Inputs: none Try
- companies_house.companies.search — 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 Inputs: incorporated_from, incorporated_to, sic_codes, company_status, name_includes, limit Try
- companies_house.filings.share_allotments — 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 Inputs: company_number, limit Try
- companies_house.officers.list — 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 Inputs: company_number, include_resigned, limit Try
- companies_house.key.validate — Whether a Companies House API key is valid, free of charge (a one-row company search) $0.00 per unit Inputs: none Try
- getprospect.email.find — A person's work email from a name and company domain or name (GetProspect Email Finder) $0.00 per unit Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- getprospect.email.verify — 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 Inputs: email Try
- getprospect.key.validate — Whether a GetProspect API key is valid, free of charge (GET /v2/me) $0.00 per unit Inputs: none Try
- hunter.email.find — A person's work email from name and company (Hunter Email Finder) $0.02 per unit Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- hunter.email.find_published — 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 Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- hunter.email.verify — 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 Inputs: email Try
- hunter.people.find — 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 Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- hunter.key.validate — Whether a Hunter API key is valid, free of charge (GET /account) $0.00 per unit Inputs: none Try
- hunter.account.balance — A Hunter account's plan and the credits and searches used and available, free of charge (GET /account) $0.00 per unit Inputs: none Try
- icypeas.people.rank — 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 Inputs: What the pick is for: the job posting, or fixed client titles for a company-only pipeline, candidates Try
- icypeas.people.taxonomy — 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 Inputs: none Try
- icypeas.domain.scan — Role emails Icypeas finds at a company domain or name (Icypeas Domain Scan) $0.02 per unit Inputs: Company domain or name Try
- icypeas.email.find — 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 Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- icypeas.email.verify — 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 Inputs: email Try
- icypeas.account.balance — An Icypeas account's plan and credits left, free of charge (POST /a/actions/subscription-information) $0.00 per unit Inputs: none Try
- icypeas.companies.search — 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 Inputs: none Try
- icypeas.company.find — 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 Inputs: Company domain Try
- icypeas.key.validate — Whether an Icypeas API key is valid, free of charge (POST /find-people/count) $0.00 per unit Inputs: none Try
- icypeas.people.count — How many people at a company (domain or LinkedIn company URN) match a job-title filter, free $0.00 per unit Inputs: Company domain, LinkedIn sales-company URN Try
- icypeas.people.find — 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 Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- icypeas.people.find_ranked — 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: 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 Inputs: company_domain, company_name, company_urn, Job titles, most likely first, What the pick is for: the job posting, or fixed client titles for a company-only pipeline Try
- icypeas.people.search — 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 Inputs: none Try
- icypeas.company.scrape — 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 Inputs: LinkedIn company URL Try
- icypeas.company.url_find — A company's LinkedIn page URL by name or domain (Icypeas URL Search) $0.02 per unit Inputs: Company name or domain Try
- icypeas.email.reverse — The LinkedIn profile behind an email address (Icypeas Reverse Email Lookup) $0.19 per unit Inputs: Email Try
- icypeas.profile.scrape — A LinkedIn profile's public fields, read from Icypeas's own scrape (never from LinkedIn) $0.03 per unit Inputs: LinkedIn profile URL Try
- icypeas.profile.url_find — A person's LinkedIn profile URL by name and company name or domain (Icypeas URL Search) $0.02 per unit Inputs: First name, Last name, Company name or domain Try
- krs.officers.list — 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 Inputs: krs, limit Try
- krs.connection.try — Prove the source answers: one extract of a known company, read as officers are. Free, no input. $0.00 per unit Inputs: none Try
- leadmagic.email.find — A person's work email from name and company domain (LeadMagic Email Finder) $0.02 per unit Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- leadmagic.people.find — 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 Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- leadmagic.phone.find — A person's mobile number from their LinkedIn URL (LeadMagic Mobile Finder) $0.02 per unit Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- leadmagic.key.validate — Whether a LeadMagic API key is valid, free of charge (POST /credits) $0.00 per unit Inputs: none Try
- prospeo.email.find — A person's verified work email from name and company (Prospeo Enrich Person) $0.00 per unit Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- prospeo.key.validate — Whether a Prospeo API key is valid, free of charge (GET /account-information) $0.00 per unit Inputs: none Try
- tomba.email.find_published — A person's work email Tomba names a source page for, with that page (Tomba Email Finder) $0.02 per unit Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- tomba.key.validate — Whether a Tomba key and secret are valid, free of charge (GET /me) $0.00 per unit Inputs: none Try
- treg.email.find — A person's work email from name and company, routed across email finders (treg) up to $0.15 per unit Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- treg.key.validate — Whether a treg token is valid, free of charge (an empty email find treg refuses) $0.00 per unit Inputs: none Try
From your software
Replace <YOUR_RUN_KEY> with your run key. The operator's run key is in crew /root/dev/blocks/.env, BLOCKS_RUN_KEYS; make more on the run keys page.
Address: https://brickbank.cc/b/datagate-people
bettercontact.email.find has no example input yet, so there is no ready-made call: try it to see its inputs.
MCP address: https://brickbank.cc/b/datagate-people/mcp (tools)
Claude Code:
claude mcp add --transport http datagate-people https://brickbank.cc/b/datagate-people/mcp --header "Authorization: Bearer <YOUR_RUN_KEY>"
.mcp.json (other MCP clients):
{
"mcpServers": {
"datagate-people": {
"type": "http",
"url": "https://brickbank.cc/b/datagate-people/mcp",
"headers": {
"Authorization": "Bearer <YOUR_RUN_KEY>"
}
}
}
}Run keys page (needs a run key)datagate-scrape 0.1.0
Outside sites it contacts: api.apify.com, api.ashbyhq.com, api.brightdata.com, api.eu.lever.co, api.harvestapi.io, api.lever.co, boards-api.greenhouse.io, www.reddit.com
View manifest
- apify.actor_run — Run an Apify Actor and return its dataset rows, billed at the run's measured usage $1.00 per unit Inputs: actor_id, run_input Try
- apify.store.search — Search the public Apify store for Actors by keyword: ids, run statistics and pricing, no key needed $0.00 per unit Inputs: query Try
- apify.actor.describe — 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 Inputs: actor_id Try
- apify.company_team_profiles — 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 Inputs: company, limit Try
- apify.key.validate — Whether an Apify API token is valid, free of charge (GET /users/me) $0.00 per unit Inputs: none Try
- apify.fantasticjobs_career_site_jobs — 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 Inputs: titles, time_range, limit Try
- apify.harvestapi_linkedin_post_comments — 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 Inputs: post_urls, max_comments Try
- apify.harvestapi_linkedin_post_search — 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 Inputs: search_queries, author_urls, posted_since, max_posts, sort_by Try
- apify.harvestapi_linkedin_profile_scraper — 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 Inputs: profile_urls, mode Try
- apify.harvestapi_linkedin_profile_search — 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 Inputs: company_slugs, seniority, titles, limit_per_company Try
- apify.lead_scraper_apollo_zoominfo_lusha — 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 Inputs: domains, titles, seniorities, require_email, role_match_mode, limit Try
- apify.leads_finder — 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 Inputs: domains, job_titles, include_mobile, limit Try
- apify.leads_finder_linkedin_apollo_leads_generator — 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 Inputs: domains, limit Try
- apify.leads_finder_with_emails_apollo_lusha_zoominfo — 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 Inputs: domains, job_titles, seniorities, limit Try
- apify.linkedin_company — 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 Inputs: companies Try
- apify.linkedin_company_employees — 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 Inputs: companies, limit Try
- apify.linkedin_post_comments — 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 Inputs: post_urls, max_comments Try
- apify.linkedin_profile_comments — 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 Inputs: profile_urls, max_comments Try
- apify.linkedin_profile_details — Read known LinkedIn profiles by public identifier (harvestapi profile scraper, build 0.0.138): 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), 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 Inputs: public_identifiers, mode Try
- apify.linkedin_profile_posts — 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 Inputs: author_urls, max_posts Try
- apify.x_post_search — 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 Inputs: search_queries, author_handles, posted_since, max_posts, sort_by Try
- apify.harvestapi_linkedin_post_comments.reread — 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 Inputs: run_id Try
- apify.harvestapi_linkedin_post_search.reread — 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 Inputs: run_id Try
- apify.linkedin_post_comments.reread — 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 Inputs: run_id Try
- apify.linkedin_profile_comments.reread — 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 Inputs: run_id Try
- apify.linkedin_profile_details.reread — 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 Inputs: run_id Try
- apify.linkedin_profile_posts.reread — 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 Inputs: run_id Try
- apify.x_post_search.reread — 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 Inputs: run_id Try
- brightdata.linkedin_profiles — Collect LinkedIn profiles by URL as a Bright Data snapshot, billed at the records it delivers $1.00 per unit Inputs: urls Try
- brightdata.linkedin_companies — Collect LinkedIn company pages by URL as a Bright Data snapshot, billed at the records it delivers $1.00 per unit Inputs: urls Try
- brightdata.linkedin_jobs — Collect LinkedIn job postings by URL as a Bright Data snapshot, billed at the records it delivers $1.00 per unit Inputs: urls Try
- brightdata.linkedin_post_search — 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 Inputs: search_queries, author_urls, posted_since, max_posts, sort_by Try
- brightdata.datasets.list — The datasets the Bright Data account can run, with their ids $0.00 per unit Inputs: none Try
- brightdata.key.validate — Whether a Bright Data API key is valid, free of charge (GET /datasets/list) $0.00 per unit Inputs: none Try
- company_website.homepage.fetch — 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 Inputs: domain Try
- company_website.connection.try — 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 Inputs: none Try
- contractsfinder.notices — 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 Inputs: keyword, limit Try
- contractsfinder.connection.try — Prove the source answers: one keyword search of Contracts Finder, read as notices are. Free, no input. $0.00 per unit Inputs: none Try
- customapi.key.validate — Whether the API root and bearer key are good: GET the base URL with the key, free of charge $0.00 per unit Inputs: none Try
- customapi.api.get — GET one JSON document from a path under the customer's own API, with their bearer key $0.00 per unit Inputs: path, query Try
- feeds.reddit.posts — 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. $0.00 per unit Inputs: subreddit, limit Try
- feeds.discourse.topics — 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 Inputs: forum, category, limit Try
- feeds.connection.try — 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 Inputs: none Try
- harvestapi.people.find — 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 Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- harvestapi.key.validate — Whether a HarvestAPI key is valid, free of charge (GET /users/my-api-user) $0.00 per unit Inputs: none Try
- innovate_uk.funded_projects — 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 Inputs: company_number, company_name, limit Try
- innovate_uk.connection.try — 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 Inputs: none Try
- jina.page.read — 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 Inputs: url Try
- jina.connection.try — Prove the reader answers: one read of example.com, judged as page.read judges it. Free, no input. $0.00 per unit Inputs: none Try
- jobboards.company.job_posts — 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 Inputs: company_domain, limit Try
- jobboards.connection.try — 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 Inputs: none Try
- nhscep.posts — 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 Inputs: limit Try
- nhscep.connection.try — Prove the source answers: read the site's newest post as posts are. Free, no input. $0.00 per unit Inputs: none Try
- signalsapi.company.resolve — 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 Inputs: company_domain, company_name Try
- signalsapi.key.validate — Whether a SignalsAPI key is valid, free of charge (GET /v1/whoami) $0.00 per unit Inputs: none Try
- signalsapi.reqs.qualified — 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 Inputs: criteria, cursor, exclude_agencies, include_pulse, limit, live_only, salary_max_usd, salary_min_usd, since Try
- signalsapi.company.open_reqs — 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 Inputs: signalsapi_id, function, country, limit Try
- signalsapi.company.hiring_brief — 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 Inputs: signalsapi_id, max_age Try
- signalsapi.jobs.role — 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 Inputs: company_id, req_key Try
- signalsapi.company.events — 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 Inputs: since, company_id, event_type, limit Try
- ukri.projects — 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 Inputs: query, limit Try
- ukri.connection.try — Prove the source answers: one search of UKRI's Gateway to Research, read as projects are. Free, no input. $0.00 per unit Inputs: none Try
From your software
Replace <YOUR_RUN_KEY> with your run key. The operator's run key is in crew /root/dev/blocks/.env, BLOCKS_RUN_KEYS; make more on the run keys page.
Address: https://brickbank.cc/b/datagate-scrape
apify.actor_run has no example input yet, so there is no ready-made call: try it to see its inputs.
MCP address: https://brickbank.cc/b/datagate-scrape/mcp (tools)
Claude Code:
claude mcp add --transport http datagate-scrape https://brickbank.cc/b/datagate-scrape/mcp --header "Authorization: Bearer <YOUR_RUN_KEY>"
.mcp.json (other MCP clients):
{
"mcpServers": {
"datagate-scrape": {
"type": "http",
"url": "https://brickbank.cc/b/datagate-scrape/mcp",
"headers": {
"Authorization": "Bearer <YOUR_RUN_KEY>"
}
}
}
}Run keys page (needs a run key)datagate-crm 0.1.0
Outside sites it contacts: api.clay.com, api.hubapi.com, api.instantly.ai
View manifest
- bullhorn.key.validate — Whether the access token and REST URL are good: the REST login alone, free and writing nothing $0.00 per unit Inputs: none Try
- bullhorn.lead.upsert — 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 Inputs: email, fields Try
- bullhorn.token.refresh — 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 Inputs: refresh_token Try
- clay.webhook.deliver — 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 Inputs: url, payload, headers Try
- clay.connection.try — Prove the Clay webhook takes a row: POST one probe row ([email protected]) 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 Inputs: url, headers Try
- hubspot.contact.upsert — 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 Inputs: email, full_name, first_name, last_name, company_name, phone, job_title, company_id, list_id Try
- hubspot.company.upsert — 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 Inputs: name, domain Try
- hubspot.lists.list — The account's HubSpot lists (first 100) $0.00 per unit Inputs: none Try
- hubspot.connection.try — Prove the HubSpot connection reads and writes: search contacts for datagate's one probe contact ([email protected]), 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 Inputs: none Try
- hubspot.token.refresh — 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 Inputs: refresh_token Try
- instantly.campaign.enrol — Enrol a lead into an Instantly campaign (and optionally a list) by email $0.00 per unit Inputs: campaign_id, contact_id, email, list_id Try
- instantly.lead.add — Add a lead to an Instantly campaign or list with its names, company fields and custom variables $0.00 per unit Inputs: email, campaign_id, list_id, first_name, last_name, website, company_name, custom_variables Try
- instantly.connection.try — Prove the Instantly connection reads and writes: list one campaign, then add datagate's probe lead ([email protected]) to the workspace with no campaign or list. Idempotent: a repeat adds nothing. $0.00 per unit Inputs: none Try
- instantly.lead.list — The leads of one Instantly campaign with their sending state (replied, bounced, other) and last update $0.00 per unit Inputs: campaign_id, since Try
- instantly.campaign.sending_status — One Instantly campaign's state and its daily sending limit (null when Instantly reports none) $0.00 per unit Inputs: campaign_id Try
- lemlist.key.validate — Whether a lemlist API key is valid, free of charge $0.00 per unit Inputs: none Try
- lemlist.campaigns.list — List the account's lemlist campaigns $0.00 per unit Inputs: none Try
- lemlist.campaigns.inventory — List the account's lemlist campaigns with status and the vendor's boolean flags $0.00 per unit Inputs: none Try
- lemlist.campaign.preflight — Whether a lemlist campaign can dispatch a lead right now, without adding one $0.00 per unit Inputs: campaign_id Try
- lemlist.campaign.enrol — Enrol a lead into a lemlist campaign by email $0.00 per unit Inputs: campaign_id, contact_id, email, list_id Try
- lemlist.lead.add — Add a lead (email and/or LinkedIn URL, names, variables) to a lemlist campaign that can dispatch it $0.00 per unit Inputs: campaign_id, email, linkedin_url, first_name, last_name, variables Try
- lemlist.activities.pull — The lemlist activity feed (sends, opens, replies, ...) since an instant, as raw rows $0.00 per unit Inputs: since Try
- lemlist.seats.count — How many distinct lemlist users (seats) the account has $0.00 per unit Inputs: none Try
- lemlist.employment.confirm — Whether lemlist's people database places a LinkedIn profile at the given company $0.00 per unit Inputs: full_name, first_name, last_name, company_domain, company_name, company_urn, linkedin_url Try
- lemlist.people.stated_employment — The current employer lemlist's people database states for a LinkedIn profile $0.00 per unit Inputs: linkedin_url Try
- manatal.candidate.upsert — 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 Inputs: email, full_name, current_position, current_company, description Try
- manatal.connection.try — Prove the Manatal connection reads and writes: list one candidate, then create datagate's probe candidate ([email protected]) unless it is already there. Idempotent: the account never holds more than the one probe candidate. $0.00 per unit Inputs: none Try
- recruitcrm.contact.upsert — 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 Inputs: email, full_name, first_name, last_name, company_name, phone, job_title, company_id, list_id Try
- recruitcrm.company.upsert — 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 Inputs: name, domain Try
- recruitcrm.connection.try — Prove the RecruitCRM connection reads and writes: search contacts for datagate's one probe contact ([email protected]) 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 Inputs: none Try
- sourcewhale.campaigns.list — The team's live SourceWhale campaigns (paused and draft ones are not listed) $0.00 per unit Inputs: none Try
- sourcewhale.key.validate — Whether a SourceWhale team API key works, free of charge (GET campaigns/list) $0.00 per unit Inputs: none Try
- sourcewhale.candidate.upsert — 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 Inputs: campaign_id, owner_email, email, linkedin_url, phone, first_name, last_name, job_title, headline, company_name, company_domain, company_linkedin_url, company_location, custom_variables, comments, source Try
From your software
Replace <YOUR_RUN_KEY> with your run key. The operator's run key is in crew /root/dev/blocks/.env, BLOCKS_RUN_KEYS; make more on the run keys page.
Address: https://brickbank.cc/b/datagate-crm
bullhorn.key.validate has no example input yet, so there is no ready-made call: try it to see its inputs.
MCP address: https://brickbank.cc/b/datagate-crm/mcp (tools)
Claude Code:
claude mcp add --transport http datagate-crm https://brickbank.cc/b/datagate-crm/mcp --header "Authorization: Bearer <YOUR_RUN_KEY>"
.mcp.json (other MCP clients):
{
"mcpServers": {
"datagate-crm": {
"type": "http",
"url": "https://brickbank.cc/b/datagate-crm/mcp",
"headers": {
"Authorization": "Bearer <YOUR_RUN_KEY>"
}
}
}
}Run keys page (needs a run key)datagate-notify 0.1.0
Outside sites it contacts: api.mailgun.net, api.telegram.org, hooks.slack.com
View manifest
- mailgun.notify.send — Deliver a message as a plain-text email via the Mailgun send API, from notify@<domain> $0.00 per unit Inputs: channel, to, subject, body Try
- mailgun.email.send — Send an email via Mailgun from a caller-chosen From (display name allowed) on the domain $0.00 per unit Inputs: from, domain, to, subject, text, html, reply_to, message_id, in_reply_to, references, unsubscribe_url, tracking, attachments Try
- mailgun.bounce.get — 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 Inputs: address, domain Try
- mailgun.bounce.delete — 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 Inputs: address, domain Try
- mailgun.unsubscribe.add — 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 Inputs: address, domain Try
- mailgun.unsubscribe.get — 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 Inputs: address, domain Try
- mailgun.unsubscribe.delete — 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 Inputs: address, domain Try
- mailgun.complaint.get — 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 Inputs: address, domain Try
- mailgun.complaint.delete — 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 Inputs: address, domain Try
- mailgun.domain.create — 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 Inputs: domain Try
- mailgun.domain.get — 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 Inputs: domain Try
- mailgun.domain.verify — 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 Inputs: domain Try
- mailgun.route.put — 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 Inputs: domain, url, forward_to Try
- mailgun.route.get — 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 Inputs: domain, url, forward_to Try
- mailgun.key.validate — Whether a Mailgun API key is valid and owns the sending domain, free of charge (GET /domains/<domain>) $0.00 per unit Inputs: none Try
- mailgun.events.get — 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 Inputs: begin, end, event, recipient, domain, limit, page Try
- mailgun.inbound.get — 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 Inputs: recipient, since, domain, limit Try
- slack.notify.send — 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 Inputs: channel, to, subject, body Try
- slack.key.validate — 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 Inputs: none Try
- telegram.notify.send — Deliver a message via the Telegram Bot API (`to` is the chat id or @channelusername) $0.00 per unit Inputs: channel, to, subject, body Try
- telegram.message.send — 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 Inputs: chat_id, text Try
- telegram.key.validate — Whether a Telegram bot token is valid, free of charge (GET /getMe) $0.00 per unit Inputs: none Try
- webhook.webhook.deliver — POST a JSON payload to a caller-supplied webhook URL, once, with the caller's own headers $0.00 per unit Inputs: url, payload, headers Try
- webhook.connection.try — 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 Inputs: url Try
From your software
Replace <YOUR_RUN_KEY> with your run key. The operator's run key is in crew /root/dev/blocks/.env, BLOCKS_RUN_KEYS; make more on the run keys page.
Address: https://brickbank.cc/b/datagate-notify
mailgun.notify.send has no example input yet, so there is no ready-made call: try it to see its inputs.
MCP address: https://brickbank.cc/b/datagate-notify/mcp (tools)
Claude Code:
claude mcp add --transport http datagate-notify https://brickbank.cc/b/datagate-notify/mcp --header "Authorization: Bearer <YOUR_RUN_KEY>"
.mcp.json (other MCP clients):
{
"mcpServers": {
"datagate-notify": {
"type": "http",
"url": "https://brickbank.cc/b/datagate-notify/mcp",
"headers": {
"Authorization": "Bearer <YOUR_RUN_KEY>"
}
}
}
}Run keys page (needs a run key)datagate-search 0.1.0
Outside sites it contacts: api.anthropic.com, api.company-information.service.gov.uk, api.exa.ai
View manifest
- anthropic.llm.field — 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 Inputs: prompt, system Try
- anthropic.web.search — 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 Inputs: query Try
- anthropic.text.judge — 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`. `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 Inputs: text, url, headline Try
- anthropic.judge.rubric — 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 Inputs: none Try
- anthropic.key.validate — Whether an Anthropic key is valid, free of charge (GET /v1/models) $0.00 per unit Inputs: none Try
- exa.web.search — 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 Inputs: query Try
- exa.connection.try — 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 Inputs: none Try
- exa.agent.run — 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 Inputs: query, system_prompt, output_schema Try
- linkup.research.run — 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 Inputs: query Try
- linkup.key.validate — Whether a Linkup API key is valid, free of charge (GET /credits/balance) $0.00 per unit Inputs: none Try
- serpapi.jobs.search — 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 Inputs: query Try
- serpapi.web.search — 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 Inputs: query Try
- serpapi.limits.read — 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 Inputs: none Try
- serpapi.connection.try — 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 Inputs: none Try
- tavily.web.search — 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 Inputs: query Try
- tavily.key.validate — Whether a Tavily API key is valid, free of charge (GET /usage) $0.00 per unit Inputs: none Try
- tavily.limits.read — 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 Inputs: none Try
From your software
Replace <YOUR_RUN_KEY> with your run key. The operator's run key is in crew /root/dev/blocks/.env, BLOCKS_RUN_KEYS; make more on the run keys page.
Address: https://brickbank.cc/b/datagate-search
anthropic.llm.field has no example input yet, so there is no ready-made call: try it to see its inputs.
MCP address: https://brickbank.cc/b/datagate-search/mcp (tools)
Claude Code:
claude mcp add --transport http datagate-search https://brickbank.cc/b/datagate-search/mcp --header "Authorization: Bearer <YOUR_RUN_KEY>"
.mcp.json (other MCP clients):
{
"mcpServers": {
"datagate-search": {
"type": "http",
"url": "https://brickbank.cc/b/datagate-search/mcp",
"headers": {
"Authorization": "Bearer <YOUR_RUN_KEY>"
}
}
}
}Run keys page (needs a run key)dibs 0.1.0
Outside sites it contacts: api.anthropic.com, api.name.com, api.porkbun.com, cloudflare-dns.com, crates.io, data.iana.org, dns.google, domainfinder.nic.at, github.com, pubapi.registry.google, pypi.org, rdap.identitydigital.services, rdap.nic.so, rdap.norid.no, rdap.registry.co, rdap.verisign.com, registry.npmjs.org, tld-rdap.verisign.com, whois.nic.at, whois.nic.io, whois.nic.sh, whois.nic.so
View manifest
- names.suggest — Product-name candidates for a bonsai vision: name, why (citing V-ids), length, pronounceable, notes. $0.06 per unit Inputs: Vision, Current Name, Count, Style Try
- naming.steer — The next round for a product card, a client-held envelope and this product's marks (`[{name, label, $1.47 per unit Inputs: Product, State, Marks Try
- naming.critic — For each name the founder liked, in the order given: the strongest objection, its severity and a $0.25 per unit Inputs: Product, Names Try
- naming.fit — 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 Inputs: Product, Names Try
- naming.internal — Names for an internal tool, best first, each with how it was made and, when generated, the blind guess $0.08 per unit Inputs: Does, Siblings, Taken, Wraps, Family, Count Try
- domains.check — Which `<name>.<tld>` domains are free: every name on `ALWAYS_TLDS` (.com, .no, .cc, .co, .at) first, $0.00 per unit Inputs: Names, Tlds Try
- domains.ladder — Each name's best domain-ladder rung (free .com, free domain hack, free other TLD), with the $0.40 per unit Inputs: Names, Product, Tlds Try
- naming.clear — Clearance for up to 8 finalists of a product card: handles (GitHub, npm, PyPI, crates; X and Instagram by $0.05 per unit Inputs: Product, Names Try
- naming.dossier — The decision page for the names the founder starred or liked: the Pareto front of mark × domain path, a $0.00 per unit Inputs: Finalists, Ladder, Clearance, Classes, Prices, Critique, Funnel Try
- domains.watch — Each domain's RDAP statuses, expiry, days left and drop phase now, asked of its registry alone. $0.00 per unit Inputs: Domains Try
- domains.price — A registrar's price, premium flag and renewal for finalist domains (the caller's Porkbun keys), beside the registry verdict. $0.00 per unit Inputs: Domains Try
From your software
Replace <YOUR_RUN_KEY> with your run key. The operator's run key is in crew /root/dev/blocks/.env, BLOCKS_RUN_KEYS; make more on the run keys page.
Address: https://brickbank.cc/b/dibs
Call it:
# Use a new code for each new run. Send the same code again when you retry, and you get the first run back, never charged twice.
curl -X POST https://brickbank.cc/b/dibs/v1/run/names.suggest -H "Authorization: Bearer <YOUR_RUN_KEY>" -H "Idempotency-Key: <NEW_CODE_PER_RUN>" -d '{"items": [{"id": "example", "input": {"vision": "- **V-1** `cap` \u2014 Founders get a landing page critique in one minute.", "count": 5}}]}'MCP address: https://brickbank.cc/b/dibs/mcp (tools)
Claude Code:
claude mcp add --transport http dibs https://brickbank.cc/b/dibs/mcp --header "Authorization: Bearer <YOUR_RUN_KEY>"
.mcp.json (other MCP clients):
{
"mcpServers": {
"dibs": {
"type": "http",
"url": "https://brickbank.cc/b/dibs/mcp",
"headers": {
"Authorization": "Bearer <YOUR_RUN_KEY>"
}
}
}
}Run keys page (needs a run key)