_ registry / mcp + a2a streamable-http · checked 1h ago

superflow-free-tools

https://usesuperflow.ai

Registry code: 45a0e1808f5ae494

api record

Superflow's free website and scheduling tools, published with no account and no API key.

Website checks take a URL and answer about that page or site: whether AI assistants can read it, how it renders when shared, what it is built with, what its structured data says, what its images should say. find_meeting_times takes cities or countries and a date to find shared working hours and convert meeting times. build_utm_url builds campaign links; hash_md5 hashes text.

endpoint
https://usesuperflow.ai/api/mcp
door code
3e0b38299e554349
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is superflow-free-tools live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is superflow-free-tools free to use?
Yes — the hub reached it with no key and no payment.
What tools does superflow-free-tools have?
16 tools: generate_llms_txt, generate_json_ld, validate_json_ld, detect_tech_stack, check_favicon, check_website_status, capture_full_page_screenshot, hash_md5, ….
Is superflow-free-tools 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.
reachable
live
uptime, 30 days
99.7%

90 days 99%· all time 99.7%

latency
715ms

last good check

priced tools
0

of 16 tools

_ answered our checks, 90 days 1003 checks · signed record
  • degraded → live
  • live → degraded· endpoint unreachable (timeout after 20000ms); card still served
  • degraded → live
  • degraded → live
  • live → degraded· timeout after 20000ms
_ what it is for
used for
  • check if ai assistants can read a site
  • check a page's social preview
  • detect a site's tech stack
  • generate json-ld or llms.txt
  • find meeting times across time zones
takes → gives
web pages, text → data, text, images
tools
14 reads
_ usage and payments 30 days

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.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

inferred, not observed

Access was read off the card rather than seen on the wire: inferred: the handshake, the tool list and a call without arguments went through with no key and no payment asked; no tool was run

_ what it can do 16 tools
16 never probed 0 of 16 classified

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.

  • generate_llms_txt reads unknown never probed

    Generate llms.txt and llms-full.txt for a site, following the llmstxt.org convention. Inventories the site from its robots.txt, sitemaps, and homepage links, then writes an index file and a full file with page content inlined. Deterministic: no model is involved, so two runs over an unchanged site produce the same bytes. Returns the file contents ready to write to disk. Returns { ok, report: { siteName, llmsTxt, llmsFullTxt, pagesDiscovered, pagesIncluded, truncated }, cached, ageSeconds }. Limit: 10 runs per hour per IP. Allow up to 75s for a response. Free, no account, no API key. Pass `url` to start a run. A slow run answers with `{ status: "pending", runId }` instead of a result: call this same tool again with just that `runId` to collect it, as many times as it takes. Collecting costs no rate-limit slot.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "url": {
          "type": "string",
          "description": "The page to run against. A bare domain like example.com is fine; https is assumed. Must be a public URL: anything behind a login, on a private network, or on localhost is refused."
        },
        "runId": {
          "type": "string",
          "description": "Collect a run that answered with `{ status: \"pending\", runId }` instead of a result. Send the runId back on its own, with no url, and the same tool returns the finished result once the run is done. Costs no rate-limit slot."
        },
        "refresh": {
          "type": "boolean",
          "default": false,
          "description": "Skip the 24 hour cache and run again. Costs a rate-limit slot even when a cached result exists, so leave it off unless the page has changed."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • generate_json_ld reads unknown never probed

    Read a page and write a schema.org JSON-LD block for it, then validate that block against the same checks a validator would run. The markup is model-written from the page's own content and should be reviewed before it is published. Returns the block ready to paste into a <script type="application/ld+json"> tag. Returns { ok, report: { detectedType, jsonLd, jsonLdString, validation: { findings[], passed }, model } }. Limit: 10 runs per hour per IP. Allow up to 75s for a response. Free, no account, no API key. Pass `url` to start a run. A slow run answers with `{ status: "pending", runId }` instead of a result: call this same tool again with just that `runId` to collect it, as many times as it takes. Collecting costs no rate-limit slot.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "url": {
          "type": "string",
          "description": "The page to run against. A bare domain like example.com is fine; https is assumed. Must be a public URL: anything behind a login, on a private network, or on localhost is refused."
        },
        "runId": {
          "type": "string",
          "description": "Collect a run that answered with `{ status: \"pending\", runId }` instead of a result. Send the runId back on its own, with no url, and the same tool returns the finished result once the run is done. Costs no rate-limit slot."
        },
        "refresh": {
          "type": "boolean",
          "default": false,
          "description": "Skip the 24 hour cache and run again. Costs a rate-limit slot even when a cached result exists, so leave it off unless the page has changed."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • validate_json_ld reads unknown never probed

    Read the structured data already on a page and check it against Schema.org and what search engines actually accept. Reports every JSON-LD block found, the type of each, and the errors and warnings per block. Returns { ok, report: { blockCount, invalidBlockCount, declaredTypes[], eligibility[], categories[], findings[] } }. Limit: 10 runs per hour per IP. Allow up to 75s for a response. Free, no account, no API key. Pass `url` to start a run. A slow run answers with `{ status: "pending", runId }` instead of a result: call this same tool again with just that `runId` to collect it, as many times as it takes. Collecting costs no rate-limit slot.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "url": {
          "type": "string",
          "description": "The page to run against. A bare domain like example.com is fine; https is assumed. Must be a public URL: anything behind a login, on a private network, or on localhost is refused."
        },
        "runId": {
          "type": "string",
          "description": "Collect a run that answered with `{ status: \"pending\", runId }` instead of a result. Send the runId back on its own, with no url, and the same tool returns the finished result once the run is done. Costs no rate-limit slot."
        },
        "refresh": {
          "type": "boolean",
          "default": false,
          "description": "Skip the 24 hour cache and run again. Costs a rate-limit slot even when a cached result exists, so leave it off unless the page has changed."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • detect_tech_stack reads unknown never probed

    Identify the platform, framework, CMS, ecommerce apps, analytics, CDN, and hosting behind a site by fingerprinting one page's HTML and response headers. One fetch, no rendering and no crawl, so it answers in about a second. A site behind bot protection is reported as blocked rather than as empty. Returns { platformName, theme, apps[], fonts[], analytics[], hosting[], renderMode, url, status, fetchedAt }. Limit: 60 runs per hour per IP. Allow up to 30s for a response. Free, no account, no API key.

    mcp-tool

    {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "The page to run against. A bare domain like example.com is fine; https is assumed. Must be a public URL: anything behind a login, on a private network, or on localhost is refused."
        },
        "refresh": {
          "type": "boolean",
          "default": false,
          "description": "Skip the 24 hour cache and run again. Costs a rate-limit slot even when a cached result exists, so leave it off unless the page has changed."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • check_favicon reads unknown 9h ago

    Check whether a site's favicon actually works. Reads every icon declaration in the page head, then fetches each one, the web app manifest, and the implicit /favicon.ico, and identifies the real format and pixel dimensions from each file's header bytes. Catches the failures a status-code check misses: a catch-all route answering an icon path with HTML at HTTP 200, a sizes attribute that disagrees with the file, an icon served over http on an https page. Use this when a favicon is missing or blurry; use check_social_preview for the image that appears when a link is shared. Returns { hasWorkingFavicon, tabIcon, icons[] with format, dimensions, bytes and problem, manifest, themeColor, checks[] with id, status and fix, counts }. Limit: 60 runs per hour per IP. Allow up to 30s for a response. Free, no account, no API key.

    mcp-tool

    {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "The page to run against. A bare domain like example.com is fine; https is assumed. Must be a public URL: anything behind a login, on a private network, or on localhost is refused."
        },
        "refresh": {
          "type": "boolean",
          "default": false,
          "description": "Skip the 24 hour cache and run again. Costs a rate-limit slot even when a cached result exists, so leave it off unless the page has changed."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • check_website_status unknown 24h ago

    Check whether a website is up right now. Makes one live GET request to the URL from Superflow's servers, following redirects, and reports a verdict: up when the server answers with any HTTP status below 500, down on a 5xx, a timeout after 10 seconds, a refused connection, or an unresolvable domain. Returns the HTTP status, the response time, the final URL after redirects, and the time of the check. Never cached, so every call is a fresh request. Use this to answer 'is it down or is it just me'; use check_favicon or check_social_preview to inspect what a page contains. Returns { verdict: 'up' | 'down', reason?, httpStatus?, responseTimeMs, requestedUrl, finalUrl, redirectCount, checkedAt, submittedUrl }. Limit: 60 runs per hour per IP. Allow up to 30s for a response. Free, no account, no API key.

    mcp-tool

    {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "The page to run against. A bare domain like example.com is fine; https is assumed. Must be a public URL: anything behind a login, on a private network, or on localhost is refused."
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • capture_full_page_screenshot reads unknown never probed

    Capture a full-height PNG of a page in a real headless browser, scrolling first so lazy-loaded content renders. Returns a signed link to the image that expires in about 24 hours; download the bytes if you need to keep them. No watermark and no height cap. Cannot capture anything behind a login. Returns { imageUrl, expiresAt, bytes, width, height, deviceType }. Limit: 10 runs per hour per IP. Allow up to 90s for a response. Free, no account, no API key. Pass `url` to start a run. A slow run answers with `{ status: "pending", runId }` instead of a result: call this same tool again with just that `runId` to collect it, as many times as it takes. Collecting costs no rate-limit slot.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "url": {
          "type": "string",
          "description": "The page to run against. A bare domain like example.com is fine; https is assumed. Must be a public URL: anything behind a login, on a private network, or on localhost is refused."
        },
        "runId": {
          "type": "string",
          "description": "Collect a run that answered with `{ status: \"pending\", runId }` instead of a result. Send the runId back on its own, with no url, and the same tool returns the finished result once the run is done. Costs no rate-limit slot."
        },
        "refresh": {
          "type": "boolean",
          "default": false,
          "description": "Skip the 24 hour cache and run again. Costs a rate-limit slot even when a cached result exists, so leave it off unless the page has changed."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • hash_md5 reads unknown never probed

    Hash text to an MD5 hex digest. Useful for checksums, cache keys, dedupe keys, and Gravatar-style identifiers. MD5 is broken for anything security-related: never use it for passwords or to verify authenticity. Returns { md5, algorithm, bytes }. Limit: None. The work is local and costs nothing.. Allow up to 10s for a response. Free, no account, no API key.

    mcp-tool

    {
      "type": "object",
      "required": [
        "text"
      ],
      "properties": {
        "text": {
          "type": "string",
          "description": "The text to hash. Up to 1 MB of UTF-8."
        }
      },
      "additionalProperties": false
    }
    arguments 13 lines
  • check_og_video unknown 5h ago

    Check whether a page's og:video plays when its link is shared. Reads every og:video declaration and its structured properties (secure_url, type, width, height) the way ogp.me defines them, then fetches the first 512 KB of the video and identifies the real format from the file header, along with byte-range support, MP4 fast start, pixel size and length. Also fetches og:image as the poster and reports the tags the other readers use instead: the X player card (twitter:card player, twitter:player) and a Google VideoObject in JSON-LD. Pass the page URL, not the video file. Use check_social_preview for how the title, description and image render per platform. Returns { hasPlayableVideo, primary, videos[] with declared tags and probe (format, kind, dimensions, durationSeconds, rangeSupported, fastStart, problem), image, ogType, videoMeta, twitter, videoObject, checks[] with id, status and fix, counts }. Limit: 60 runs per hour per IP. Allow up to 30s for a response. Free, no account, no API key.

    mcp-tool

    {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "The page to run against. A bare domain like example.com is fine; https is assumed. Must be a public URL: anything behind a login, on a private network, or on localhost is refused."
        },
        "refresh": {
          "type": "boolean",
          "default": false,
          "description": "Skip the 24 hour cache and run again. Costs a rate-limit slot even when a cached result exists, so leave it off unless the page has changed."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • page_to_markdown reads unknown never probed

    Fetch one web page and convert it to clean CommonMark, with the navigation, cookie banners, and boilerplate stripped out. Use this to read a page as text an agent can reason over, or to publish a .md copy of a page alongside the HTML. Returns { ok, report: { markdown, title, description, wordCount, bytes, truncated, httpStatus }, cached, ageSeconds }. Limit: 10 runs per hour per IP. Allow up to 75s for a response. Free, no account, no API key. Pass `url` to start a run. A slow run answers with `{ status: "pending", runId }` instead of a result: call this same tool again with just that `runId` to collect it, as many times as it takes. Collecting costs no rate-limit slot.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "url": {
          "type": "string",
          "description": "The page to run against. A bare domain like example.com is fine; https is assumed. Must be a public URL: anything behind a login, on a private network, or on localhost is refused."
        },
        "runId": {
          "type": "string",
          "description": "Collect a run that answered with `{ status: \"pending\", runId }` instead of a result. Send the runId back on its own, with no url, and the same tool returns the finished result once the run is done. Costs no rate-limit slot."
        },
        "refresh": {
          "type": "boolean",
          "default": false,
          "description": "Skip the 24 hour cache and run again. Costs a rate-limit slot even when a cached result exists, so leave it off unless the page has changed."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • generate_alt_text reads unknown never probed

    Find every image on a page and draft alt text for the ones that need it, using a vision model that actually looks at the image. Lists every image with the alt it has today, the suggested alt, whether it looks decorative, and why any image was skipped. Up to 10 images per run go to the model. The suggestions are drafts for a human to review. Returns { images[] with src, hadAlt, currentAlt, suggestedAlt, isDecorative, skippedReason; counts; model }. Limit: 10 runs per hour per IP. Allow up to 90s for a response. Free, no account, no API key. Pass `url` to start a run. A slow run answers with `{ status: "pending", runId }` instead of a result: call this same tool again with just that `runId` to collect it, as many times as it takes. Collecting costs no rate-limit slot.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "url": {
          "type": "string",
          "description": "The page to run against. A bare domain like example.com is fine; https is assumed. Must be a public URL: anything behind a login, on a private network, or on localhost is refused."
        },
        "runId": {
          "type": "string",
          "description": "Collect a run that answered with `{ status: \"pending\", runId }` instead of a result. Send the runId back on its own, with no url, and the same tool returns the finished result once the run is done. Costs no rate-limit slot."
        },
        "refresh": {
          "type": "boolean",
          "default": false,
          "description": "Skip the 24 hour cache and run again. Costs a rate-limit slot even when a cached result exists, so leave it off unless the page has changed."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • build_utm_url reads unknown never probed

    Build a campaign URL with utm parameters, normalised to one tagging convention, and report which GA4 default channel group the link will land in. Warns about the mistakes that silently break reporting: an unrecognised medium that drops traffic into Unassigned, casing that splits one source into several report rows, PII in a campaign name. Pure string work: nothing is fetched and nothing is stored. Returns { url, normalized, channel, issues[] with level, field and message }. Limit: None. The work is local and costs nothing.. Allow up to 10s for a response. Free, no account, no API key.

    mcp-tool

    {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "id": {
          "type": "string",
          "description": "utm_id. Optional campaign ID."
        },
        "url": {
          "type": "string",
          "description": "The destination page. Existing utm parameters on it are rewritten; any other query parameter is left alone."
        },
        "term": {
          "type": "string",
          "description": "utm_term. Optional paid keyword."
        },
        "medium": {
          "type": "string",
          "description": "utm_medium. How it gets there, e.g. email, cpc, social. This is the field GA4 reads to pick a channel."
        },
        "source": {
          "type": "string",
          "description": "utm_source. Where the traffic comes from, e.g. newsletter."
        },
        "content": {
          "type": "string",
          "description": "utm_content. Optional variant, e.g. header_link."
        },
        "campaign": {
          "type": "string",
          "description": "utm_campaign. The campaign name, e.g. spring_launch."
        },
        "caseRule": {
          "enum": [
            "lower",
            "preserve"
          ],
          "type": "string",
          "default": "lower",
          "description": "How values are cased before they go in the URL. Default lower, which is what keeps one source from becoming three report rows."
        },
        "spaceRule": {
          "enum": [
            "underscore",
            "hyphen",
            "preserve"
          ],
          "type": "string",
          "default": "underscore",
          "description": "What happens to spaces inside a value."
        },
        "stripPunctuation": {
          "type": "boolean",
          "default": true,
          "description": "Drop accents and punctuation that make report rows hard to match."
        }
      },
      "additionalProperties": false
    }
    arguments 61 lines
  • check_ai_visibility reads unknown 1h ago

    Check whether AI assistants (ChatGPT, Claude, Perplexity, Google AI) can reach, read, and cite a web page. Runs the full suite: robots.txt rules per AI crawler, a live firewall test that requests the page as GPTBot, JavaScript dependency, llms.txt, headings, structured data, and author identity. Returns a score out of 100 with a grade, a score per category, and a finding per check with why it matters and how to fix it. Use this for a whole-page verdict; use check_robots_txt_for_ai when the question is only about crawler access. Returns { ok, report: { score, grade, scoredOutOf, categories[], findings[] with why and fix, detection }, cached, ageSeconds }. Limit: 10 runs per hour per IP. Allow up to 75s for a response. Free, no account, no API key. Pass `url` to start a run. A slow run answers with `{ status: "pending", runId }` instead of a result: call this same tool again with just that `runId` to collect it, as many times as it takes. Collecting costs no rate-limit slot.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "url": {
          "type": "string",
          "description": "The page to run against. A bare domain like example.com is fine; https is assumed. Must be a public URL: anything behind a login, on a private network, or on localhost is refused."
        },
        "runId": {
          "type": "string",
          "description": "Collect a run that answered with `{ status: \"pending\", runId }` instead of a result. Send the runId back on its own, with no url, and the same tool returns the finished result once the run is done. Costs no rate-limit slot."
        },
        "refresh": {
          "type": "boolean",
          "default": false,
          "description": "Skip the 24 hour cache and run again. Costs a rate-limit slot even when a cached result exists, so leave it off unless the page has changed."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • check_robots_txt_for_ai reads unknown 1h ago

    Test a site's robots.txt against every AI crawler that matters (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, Googlebot, Bingbot and the rest) and report which are allowed, which are blocked, and which rule decided it. Also runs a firewall test, because CDN-level blocks stop crawlers before robots.txt is ever read. This is the access-scoped view of check_ai_visibility. Returns { ok, report: { accessScore, crawlers[] with the rule that decided each verdict, firewall, findings[] }, cached, ageSeconds }. Limit: 10 runs per hour per IP. Allow up to 75s for a response. Free, no account, no API key. Pass `url` to start a run. A slow run answers with `{ status: "pending", runId }` instead of a result: call this same tool again with just that `runId` to collect it, as many times as it takes. Collecting costs no rate-limit slot.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "url": {
          "type": "string",
          "description": "The page to run against. A bare domain like example.com is fine; https is assumed. Must be a public URL: anything behind a login, on a private network, or on localhost is refused."
        },
        "runId": {
          "type": "string",
          "description": "Collect a run that answered with `{ status: \"pending\", runId }` instead of a result. Send the runId back on its own, with no url, and the same tool returns the finished result once the run is done. Costs no rate-limit slot."
        },
        "refresh": {
          "type": "boolean",
          "default": false,
          "description": "Skip the 24 hour cache and run again. Costs a rate-limit slot even when a cached result exists, so leave it off unless the page has changed."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • check_social_preview reads unknown 1h ago

    Read a page's Open Graph and Twitter card tags and report how the link will render on X, LinkedIn, Facebook, Slack, Discord, and Google. Returns a per-platform preview (title, description, image) plus the findings for tags that are missing, truncated, or the wrong size. Returns { ok, report: { previews[] per platform, tags, summary, findings[] }, cached, ageSeconds }. Limit: 10 runs per hour per IP. Allow up to 75s for a response. Free, no account, no API key. Pass `url` to start a run. A slow run answers with `{ status: "pending", runId }` instead of a result: call this same tool again with just that `runId` to collect it, as many times as it takes. Collecting costs no rate-limit slot.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "url": {
          "type": "string",
          "description": "The page to run against. A bare domain like example.com is fine; https is assumed. Must be a public URL: anything behind a login, on a private network, or on localhost is refused."
        },
        "runId": {
          "type": "string",
          "description": "Collect a run that answered with `{ status: \"pending\", runId }` instead of a result. Send the runId back on its own, with no url, and the same tool returns the finished result once the run is done. Costs no rate-limit slot."
        },
        "refresh": {
          "type": "boolean",
          "default": false,
          "description": "Skip the 24 hour cache and run again. Costs a rate-limit slot even when a cached result exists, so leave it off unless the page has changed."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • find_meeting_times reads unknown 9h ago

    Find overlapping working hours and meeting times across cities or countries. Resolves locations to IANA time zones and applies daylight saving for the requested date. Returns resolved locations, overlap windows, the earliest matching meeting starts with UTC and local times, readable copy text, and a link to open the plan. Ambiguous names or countries with multiple zones return choices: retry with a returned location ID or a more specific city/region/country. The same working schedule is applied in each location's local time; the browser plan supports individual schedules. Does not access calendars, account for holidays, send invitations, or book meetings. Returns { ok, date, dateZone, durationMinutes, locations[], overlapMinutes, overlapWindows[], slots[] with UTC/local times and copyText, totalAvailableStarts, hasMore, planUrl, availability }. Limit: No application rate limit. Up to 8 locations, 20 returned starts, and a 16 KB request body; no result storage.. Allow up to 10s for a response. Free, no account, no API key.

    mcp-tool

    {
      "type": "object",
      "required": [
        "locations",
        "date"
      ],
      "properties": {
        "date": {
          "type": "string",
          "description": "Meeting date as YYYY-MM-DD (2000–2099), in the first location's time zone. Required: use the actual meeting date so daylight saving is correct."
        },
        "limit": {
          "type": "number",
          "default": 10,
          "description": "Maximum suggested meeting starts to return, 1–20. Earliest first, at 15-minute intervals; totalAvailableStarts reports the full count."
        },
        "workEnd": {
          "type": "string",
          "default": "18:00",
          "description": "End of working hours, as local 24-hour HH:mm, in 15-minute increments. An earlier end means an overnight shift. Must differ from workStart."
        },
        "workDays": {
          "type": "string",
          "default": "1,2,3,4,5",
          "description": "Comma-separated working days: 0=Sunday through 6=Saturday. For overnight shifts, the day the shift starts. Applied to all locations."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 150
          },
          "maxItems": 8,
          "minItems": 1,
          "description": "Cities, single-zone countries, or location IDs returned in choices. Include a region/country to distinguish namesakes, e.g. San Francisco California or London United Kingdom. The first location determines the date being searched."
        },
        "workStart": {
          "type": "string",
          "default": "09:00",
          "description": "Start of working hours, as local 24-hour HH:mm, in 15-minute increments. Applied to all locations."
        },
        "durationMinutes": {
          "type": "number",
          "default": 30,
          "description": "Length of the whole meeting, 15–1440 minutes in 15-minute increments."
        }
      },
      "additionalProperties": false
    }
    arguments 49 lines
_ try it over mcp through the hub, ceiling 0

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.

_ is this your agent? claim it: badge, payouts, history

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.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. 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.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 45a0e1808f5ae494.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/45a0e1808f5ae494/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/45a0e1808f5ae494/badge.svg)](https://brick.blue/agent/45a0e1808f5ae494?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.

_ how we knowoff the mcp door
card completeness
100%

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.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
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.