firstsited
Registry code: 1341f8e7080b67da
FirstSited tracks which technologies newly launched websites are built with. Use these tools to look up a single site's stack, to find sites matching a technology, category, country and date range, to follow a technology's adoption over time, to export the matching sites together with the contact details those sites publish, and to set standing watches that report new adopters on a schedule. Calls are metered against the customer's plan; tools that return many sites may ask the user to confirm the cost before returning data.
- endpoint
- https://mcp.stackscope.dev
- protocol
- http-sse ·2025-06-18
- authentication
- bearer
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is firstsited live?
- Yes — it answered the hub's last check (checked 19h ago). It answered 100% of checks over the last 30 days.
- Is firstsited free to use?
- Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
- What tools does firstsited have?
- 11 tools: list_watches, stack_breakdown, delete_watch, export_sites, lookup_site, create_watch, account_status, technology_sites, ….
- Is firstsited safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 11 tools
- degraded → live
- unknown → live
- used for
- find websites using a technology
- export adopter contacts
- takes → gives
- text → data
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
list_watches auth-required 9d ago
The customer's watches, including inactive watches and their current status. A watch can deliver new matching sites by email, Slack or webhook as they are discovered, or keep matches in the account portal. Free.
{ "type": "object", "properties": {} }arguments 4 linesstack_breakdown auth-required never probed
Counts and shares, not a list: for the sites matching a filter, how many use each technology, grouped by kind (payments, analytics, hosting, cms...). Answers any question of the form 'how many', 'what share', or 'which X do sites using Y use' in one call, for example 'what payment providers do Ghost sites use'. Use this BEFORE find_sites or export_sites for those questions; exporting rows and counting them costs hundreds of lookups for the same answer. Same filters as find_sites. Counts one Explore slice and no site allowance.
{ "type": "object", "properties": { "near": { "type": [ "string", "null" ], "default": null, "description": "Only sites near a place: a town or city, a postcode, or 'lat,lng', e.g. Bristol. Use with radius. Sites we could not place are left out." }, "since": { "type": [ "string", "null" ], "default": null, "description": "Earliest LAUNCH date, YYYY-MM-DD." }, "until": { "type": [ "string", "null" ], "default": null, "description": "Latest LAUNCH date, YYYY-MM-DD. Inclusive of the whole day." }, "radius": { "type": [ "string", "null" ], "default": null, "description": "How far from near, e.g. 30mi or 50km (a bare number is km). From 5 to 248 miles (8 to 400 km)." }, "country": { "type": [ "string", "null" ], "default": null, "description": "Country as an ISO 3166-1 alpha-2 code, e.g. GB. Names are accepted too. Country is an ESTIMATE with a confidence score, so see minCountryConfidence." }, "regions": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Only sites in these states, provinces or other regions, e.g. [\"Texas\", \"Oklahoma\"]. Each a name, a name and country such as 'Georgia, US', or an id such as US-TX. A site matches if it is in ANY of them. Sites we could not place are left out." }, "category": { "type": [ "string", "null" ], "default": null, "description": "Product category of the SITES, e.g. ecommerce. Not a kind of technology; for that see technologyCategory." }, "keywords": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Whole words to look for in a site's name, title or description, e.g. photogrammetry. Matches ANY of them; a multi-word entry is a phrase. Three characters or more, up to ten words. Combines with every other filter, so 'Stripe sites that mention photogrammetry' is technology plus keywords. The same rule create_watch uses, so a word that filters here is the word a watch would fire on." }, "technology": { "type": [ "string", "null" ], "default": null, "description": "Technology name, exactly as returned by list_technologies, e.g. ghost. The sites using it are the population; it is left out of its own breakdown." }, "observedSince": { "type": [ "string", "null" ], "default": null, "description": "Earliest date we first recorded the site, YYYY-MM-DD." }, "technologyCategory": { "type": [ "string", "null" ], "default": null, "description": "One kind of technology to report on, e.g. payments, analytics, cms, hosting. Leave unset for every kind. list_technologies shows each technology's kind under 'category'." }, "minCountryConfidence": { "type": [ "number", "null" ], "default": null, "description": "Least country confidence to accept, 0 to 1. Pass 0.6 when the country needs to be right rather than merely likely." } } }arguments 113 linesdelete_watch auth-required never probed
Delete one of the customer's watches by id, from list_watches. Deliveries stop immediately. Free.
{ "type": "object", "required": [ "id" ], "properties": { "id": { "type": "integer", "description": "The watch id, from list_watches." } } }arguments 12 linesexport_sites auth-required never probed
A bulk export of matching sites, up to 5,000 at once, for building a list or loading into a spreadsheet. Same filters as find_sites. Ask for csv output if the result is going into a file. For counts, shares or 'which X do these sites use', call stack_breakdown instead; it answers in one call and needs no export. Counts one site from the monthly allowance for each site not already returned to you this period, so this is the call most likely to ask you to confirm first.
{ "type": "object", "properties": { "csv": { "type": "boolean", "default": false, "description": "Also return the rows as CSV text, ready to save as a file." }, "near": { "type": [ "string", "null" ], "default": null, "description": "Only sites near a place: a town or city, a postcode, or 'lat,lng', e.g. Bristol. Use with radius. Sites we could not place are left out." }, "limit": { "type": "integer", "default": 1000, "description": "How many sites to export, 1-5000. Default 1000." }, "since": { "type": [ "string", "null" ], "default": null, "description": "Earliest launch date, YYYY-MM-DD." }, "until": { "type": [ "string", "null" ], "default": null, "description": "Latest launch date, YYYY-MM-DD. Inclusive of the whole day." }, "radius": { "type": [ "string", "null" ], "default": null, "description": "How far from near, e.g. 30mi or 50km (a bare number is km). From 5 to 248 miles (8 to 400 km)." }, "confirm": { "type": "boolean", "default": false, "description": "Set true to skip the cost confirmation and return the data immediately." }, "country": { "type": [ "string", "null" ], "default": null, "description": "Country as an ISO 3166-1 alpha-2 code, e.g. GB. Names are accepted too." }, "regions": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Only sites in these states, provinces or other regions, e.g. [\"Texas\", \"Oklahoma\"]. Each a name, a name and country such as 'Georgia, US', or an id such as US-TX. A site matches if it is in ANY of them. Sites we could not place are left out." }, "category": { "type": [ "string", "null" ], "default": null, "description": "Product category, e.g. ecommerce." }, "keywords": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Whole words to look for in a site's name, title or description, e.g. photogrammetry. Matches ANY of them; a multi-word entry is a phrase. Three characters or more, up to ten words. Combines with every other filter, so 'Stripe sites that mention photogrammetry' is technology plus keywords. The same rule create_watch uses, so a word that filters here is the word a watch would fire on." }, "technology": { "type": [ "string", "null" ], "default": null, "description": "Technology name, exactly as returned by list_technologies." }, "observedSince": { "type": [ "string", "null" ], "default": null, "description": "Earliest date we first recorded the site, YYYY-MM-DD. Use this rather than 'since' when building an incremental export on a schedule." }, "hasContactPage": { "type": [ "boolean", "null" ], "default": null, "description": "Only sites that have a published contact page. Needs the 'contacts' permission." }, "includeQuality": { "type": "boolean", "default": false, "description": "Include quality bands for each site." }, "hasContactEmail": { "type": [ "boolean", "null" ], "default": null, "description": "Only sites that have a published contact email. Needs the 'contacts' permission." } } }arguments 133 lineslookup_site auth-required never probed
Everything known about one website: when it launched, what it is, and the technologies detected on it. Give a domain such as example.com (a full URL works too). Returns found: false if the site is not in the corpus. When found, counts one site from the monthly allowance.
{ "type": "object", "required": [ "domain" ], "properties": { "domain": { "type": "string", "description": "Domain to look up, e.g. example.com" }, "includeContact": { "type": "boolean", "default": false, "description": "Include the site's published contact route (role mailbox and/or contact page) when available. Needs the 'contacts' permission." }, "includeQuality": { "type": "boolean", "default": false, "description": "Include quality bands and whether the site is green hosted." }, "includeInfrastructure": { "type": "boolean", "default": false, "description": "Include hosting, DNS and email-security details." } } }arguments 27 linescreate_watch auth-required never probed
Set up a standing watch that delivers newly discovered matching sites on a schedule. Narrow it by technology, keyword, category, country, region (a state or province), distance from a place or whether the site publishes a contact route; a completely unfiltered watch needs a plan that allows the every-site stream. Free to create, but delivered sites count against the monthly site allowance, and plans limit how many watches, technologies and keywords you may have. A webhook watch returns its signing secret exactly once when it is created.
{ "type": "object", "properties": { "near": { "type": [ "string", "null" ], "default": null, "description": "Only sites near a place: a town or city, a postcode, or 'lat,lng', e.g. Bristol. Use with radius. Sites we could not place never match." }, "radius": { "type": [ "string", "null" ], "default": null, "description": "How far from near, e.g. 30mi or 50km (a bare number is km). From 5 to 248 miles (8 to 400 km)." }, "cadence": { "type": [ "string", "null" ], "default": null, "description": "How often to deliver: instant, hourly, daily or weekly. Email takes daily or weekly (default daily). Slack takes all four (default instant); hourly, daily and weekly post one grouped message per slot, and instant groups several matches arriving together. Webhook is always instant; portal stores the value but does not deliver." }, "channel": { "type": [ "string", "null" ], "default": null, "description": "Delivery channel: email, webhook, slack, or portal for no outbound delivery. Default email." }, "country": { "type": [ "string", "null" ], "default": null, "description": "Restrict to a country, ISO 3166-1 alpha-2 or a name. For several, use countries." }, "regions": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Only sites in these states, provinces or other regions, e.g. [\"Texas\", \"Oklahoma\"]. Each a name, a name and country such as 'Georgia, US', or an id such as US-TX. A site matches if it is in ANY of them. Sites we could not place never match." }, "category": { "type": [ "string", "null" ], "default": null, "description": "Restrict to a product category. For several, use categories." }, "keywords": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Whole words to look for in a site's name, title or description, e.g. photogrammetry. Matches ANY of them; a multi-word entry is a phrase. Three characters or more. A common word is refused as too broad, with an estimate of what it would deliver. Combines with a technology: 'Stripe and photogrammetry' fits on every plan." }, "countries": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Restrict to several countries, each an ISO 3166-1 alpha-2 code or a name, e.g. [\"GB\", \"Ireland\"]. A site matches if it is in ANY of them." }, "categories": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Restrict to several product categories. A site matches if it is in ANY of them." }, "webhookUrl": { "type": [ "string", "null" ], "default": null, "description": "Full HTTPS delivery URL, required for webhook or slack. It is stored encrypted; list_watches later returns only its host, never its path or query." }, "technologies": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Technologies to watch, by name. A site matches if it uses ANY of them." }, "hasContactPage": { "type": [ "boolean", "null" ], "default": null, "description": "Only sites that have a published contact page (true), or only those that do not (false). Omit for no filter; set both to require both. Needs the 'contacts' permission." }, "hasContactEmail": { "type": [ "boolean", "null" ], "default": null, "description": "Only sites that have a published contact email (true), or only those that do not (false). Omit for no filter. Needs the 'contacts' permission." }, "technologiesAll": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Also require ALL of these technologies." }, "technologiesExcluding": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Exclude sites using any of these technologies." } } }arguments 175 linesaccount_status auth-required 9d ago
What this connection can do and how much allowance is left: the plan, the permissions granted, and how many more distinct sites may be returned before the monthly allowance is used up. Calls themselves are not capped. Free. Worth calling before a large query.
{ "type": "object", "properties": {} }arguments 4 linestechnology_sites auth-required never probed
Sites detected using one specific technology, newest first. Use find_sites instead when combining a technology with a country, category or contact filter. For counts, shares or 'which X do these sites use', call stack_breakdown instead; it answers in one call. Counts one site from the monthly allowance for each site not already returned to you this period.
{ "type": "object", "required": [ "technology" ], "properties": { "near": { "type": [ "string", "null" ], "default": null, "description": "Only sites near a place: a town or city, a postcode, or 'lat,lng', e.g. Bristol. Use with radius. Sites we could not place are left out." }, "limit": { "type": "integer", "default": 50, "description": "How many sites to return, 1-100. Default 50." }, "since": { "type": [ "string", "null" ], "default": null, "description": "Earliest launch date, YYYY-MM-DD." }, "until": { "type": [ "string", "null" ], "default": null, "description": "Latest launch date, YYYY-MM-DD. Inclusive of the whole day." }, "offset": { "type": "integer", "default": 0, "description": "How many to skip, for paging." }, "radius": { "type": [ "string", "null" ], "default": null, "description": "How far from near, e.g. 30mi or 50km (a bare number is km). From 5 to 248 miles (8 to 400 km)." }, "confirm": { "type": "boolean", "default": false, "description": "Set true to skip the cost confirmation and return the data immediately." }, "regions": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Only sites in these states, provinces or other regions, e.g. [\"Texas\", \"Oklahoma\"]. Each a name, a name and country such as 'Georgia, US', or an id such as US-TX. A site matches if it is in ANY of them. Sites we could not place are left out." }, "technology": { "type": "string", "description": "Technology name, exactly as returned by list_technologies." }, "includeQuality": { "type": "boolean", "default": false, "description": "Include quality bands for each site." } } }arguments 78 linestechnology_trend auth-required never probed
Weekly adoption of one technology over the whole period we have data for, counted across every site in the corpus, with notes marking anything that changed how it is measured. Same population as list_technologies, so the two can be compared. Counts no site allowance.
{ "type": "object", "required": [ "technology" ], "properties": { "technology": { "type": "string", "description": "Technology name, exactly as returned by list_technologies." } } }arguments 12 linesfind_sites auth-required never probed
Find newly launched sites matching any combination of technology, category, country, region (a state or province), distance from a place, date range and contact availability. This is the main search tool. For example: sites in the UK built with WordPress that launched this week and have a contact email, Shopify shops within 30 miles of Bristol, or new sites in Texas. Each site carries its town and region, and its distance when near is given. For counts, shares or 'which X do these sites use', call stack_breakdown instead; it answers in one call. Counts one site from the monthly allowance for each site not already returned to you this period; you may be asked to confirm before a large result is returned.
{ "type": "object", "properties": { "near": { "type": [ "string", "null" ], "default": null, "description": "Only sites near a place: a town or city, a postcode, or 'lat,lng', e.g. Bristol. Use with radius. Sites we could not place are left out." }, "limit": { "type": "integer", "default": 50, "description": "How many sites to return, 1-100. Default 50." }, "since": { "type": [ "string", "null" ], "default": null, "description": "Earliest LAUNCH date, YYYY-MM-DD. Use this for questions about when products launched, e.g. 'launched this week'." }, "until": { "type": [ "string", "null" ], "default": null, "description": "Latest LAUNCH date, YYYY-MM-DD. Inclusive: the whole of that day is included, so since and until set to the same date returns that one day." }, "cursor": { "type": [ "string", "null" ], "default": null, "description": "Paging token from a previous call's nextCursor. Repeat every other filter exactly as it was when the token was issued." }, "radius": { "type": [ "string", "null" ], "default": null, "description": "How far from near, e.g. 30mi or 50km (a bare number is km). From 5 to 248 miles (8 to 400 km)." }, "confirm": { "type": "boolean", "default": false, "description": "Set true to skip the cost confirmation and return the data immediately." }, "country": { "type": [ "string", "null" ], "default": null, "description": "Country as an ISO 3166-1 alpha-2 code, e.g. GB for the United Kingdom, US, DE. Country names such as 'United Kingdom' are also accepted. Country is an ESTIMATE with a confidence score, so see minCountryConfidence." }, "regions": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Only sites in these states, provinces or other regions, e.g. [\"Texas\", \"Oklahoma\"]. Each a name, a name and country such as 'Georgia, US', or an id such as US-TX. A site matches if it is in ANY of them. Sites we could not place are left out." }, "category": { "type": [ "string", "null" ], "default": null, "description": "Product category, e.g. ecommerce." }, "keywords": { "type": [ "array", "null" ], "items": { "type": [ "string", "null" ] }, "default": null, "description": "Whole words to look for in a site's name, title or description, e.g. photogrammetry. Matches ANY of them; a multi-word entry is a phrase. Three characters or more, up to ten words. Combines with every other filter, so 'Stripe sites that mention photogrammetry' is technology plus keywords. The same rule create_watch uses, so a word that filters here is the word a watch would fire on." }, "technology": { "type": [ "string", "null" ], "default": null, "description": "Technology name, exactly as returned by list_technologies, e.g. wordpress." }, "observedSince": { "type": [ "string", "null" ], "default": null, "description": "Earliest date we first recorded the site, YYYY-MM-DD. Use this instead of 'since' when polling for new rows on a schedule: sites are discovered a median of 2 days (and up to about a week) after they launch, so a poller tracking 'since' never learns about them." }, "hasContactPage": { "type": [ "boolean", "null" ], "default": null, "description": "Only sites that have a published contact page. Needs the 'contacts' permission." }, "includeQuality": { "type": "boolean", "default": false, "description": "Include quality bands for each site." }, "hasContactEmail": { "type": [ "boolean", "null" ], "default": null, "description": "Only sites that have a published contact email. Needs the 'contacts' permission." }, "minCountryConfidence": { "type": [ "number", "null" ], "default": null, "description": "Least country confidence to accept, 0 to 1. Country is estimated from the site, and scores near the 0.45 floor are weak guesses: a site whose own title says it is in Bangladesh can score 0.48 for the UK. Genuine matches usually score 0.6 or better, so pass 0.6 when the country needs to be right rather than merely likely. Every row carries its own countryConfidence too." } } }arguments 144 lineslist_technologies auth-required never probed
The catalogue of technologies we track, with how many sites use each. Use this to find the exact technology name to pass to the other tools. Counts no site allowance.
{ "type": "object", "properties": { "to": { "type": [ "string", "null" ], "default": null, "description": "Only count sites that launched on or before this date (YYYY-MM-DD)." }, "from": { "type": [ "string", "null" ], "default": null, "description": "Only count sites that launched on or after this date (YYYY-MM-DD)." }, "limit": { "type": "integer", "default": 100, "description": "How many to return, 1-500. Default 100, busiest first." } } }arguments 26 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id1341f8e7080b67da.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/1341f8e7080b67da/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/1341f8e7080b67da?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.