_ registry / mcp http-sse · checked 3h ago

hiring-signals

https://mcp.reqbeat.com

Registry code: 5245c56eb2dcefc7

api record

Find companies hiring for a role and geo, qualify them, and watch them for changes.

from a public catalogue that lists it, not from the operator

endpoint
https://mcp.reqbeat.com/mcp
protocol
http-sse ·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 hiring-signals live?
Yes — it answered the hub's last check (checked 3h ago). It answered 100% of checks over the last 30 days.
Is hiring-signals free to use?
Yes — the hub reached it with no key and no payment.
What tools does hiring-signals have?
15 tools: find_qualified_reqs, pre_action_brief, cancel_watch, write_outcome, hiring_pulse, watch_company, register_webhook, get_role, ….
Is hiring-signals 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.6%· all time 99.6%

latency
413ms

last good check

priced tools
0

of 15 tools

_ answered our checks, 90 days 467 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • down → live
  • degraded → live
  • live → degraded· timeout after 20000ms
_ what it is for
used for
  • find companies hiring for a role
  • check if a company is hiring
  • watch a company for hiring changes
  • get hiring pulse of a company
  • search open job requisitions
takes → gives
text → data
tools
10 reads4 changes data
_ 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

_ what it can do 15 tools
4 open 11 never probed 4 of 15 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.

  • search_jobs reads open 26h ago

    Flat, role-granular job search -- the individual open roles across companies matching `function` / `geo` (country) / `since`, one row per logical req (each with its own `company_id` + `req_key`), LinkedIn-excluded (ATS tenants plus public job boards and aggregators; each row's `board` names its source) + freshness-floored. `since` filters on `first_seen`, our first observation of the req (not the employer's posting date); each row's `source_posted_at` is the date the source itself published, null when it gave none. Keyset-paginated via the opaque `cursor` (a prior call's `next_cursor`). Use `who_is_hiring_for` for the company-granular reverse view. `function` is a function name (a prior result's `function_name`, like 'Software & IT') or a function id (its `function`); anything else, like 'engineering', is rejected with an explicit error that lists the names, rather than an empty result -- pass plain language as `q` instead, which searches the posting's own title, expanded semantically to nearby titles, and reports each row's `relevance` (0-1). `q` is independent of `function`: pass both to search titles within one function. `sort` is 'relevance' (the default with a `q`) or 'recency'; omit both and the page keeps its stable default order. `limit` is bounded: an oversized page is rejected rather than truncated, so page through the full set with `cursor` instead of raising `limit`. No key yet? On the hosted HTTP endpoint the first calls are free: send no `X-API-Key` header and the search runs on a shared demo credential -- a smaller page, billed to nobody, and the result says so -- until a per-IP limit is reached, after which the answer becomes a signup link whose minted key finishes this exact search. On any other transport a blank key answers with that signup link straight away.

    mcp-tool

    {
      "type": "object",
      "title": "search_jobsArguments",
      "properties": {
        "q": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Q",
          "default": null
        },
        "geo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Geo",
          "default": null
        },
        "sort": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Sort",
          "default": null
        },
        "limit": {
          "type": "integer",
          "title": "Limit",
          "default": 20
        },
        "since": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Since",
          "default": null
        },
        "cursor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Cursor",
          "default": null
        },
        "function": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Function",
          "default": null
        },
        "source_type": {
          "anyOf": [
            {
              "enum": [
                "ats_tenant",
                "board"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Source Type",
          "default": null
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Idempotency Key",
          "default": null
        },
        "exclude_agencies": {
          "type": "boolean",
          "title": "Exclude Agencies",
          "default": false
        }
      }
    }
    arguments 130 lines
  • find_company reads open 14h ago

    WHEN you hold a company's website or name but not the `company_id` every company-scoped tool takes (`is_hiring`, `get_open_reqs`, `hiring_pulse`, `pre_action_brief`, `watch_company`). Pass exactly one of `domain` or `name`; both or neither is an error naming that rule. `domain` takes a bare host or a full URL and matches exactly ({"domain": "https://www.stripe.com/jobs"} -> the companies at `stripe.com`); `name` returns up to five candidates, each with a `match_confidence` -- 1.0 for an exact name, 0.8 for a match once legal suffixes are dropped. Each company carries `company_id`, `company_name`, `company_domain`, `country_code` and `coverage_status`, and no hiring signal: ask `is_hiring` for that. Nothing matching is an empty `companies` list, never an error. Never billed. No key yet? On the hosted HTTP endpoint send no `X-API-Key` header and the lookup runs on a shared demo credential until a per-IP limit is reached.

    mcp-tool

    {
      "type": "object",
      "title": "find_companyArguments",
      "properties": {
        "name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Name",
          "default": null
        },
        "domain": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Domain",
          "default": null
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        }
      }
    }
    arguments 43 lines
  • who_is_hiring_for reads open 14h ago

    WHEN an agent needs to FIND the companies worth working -- the sourcing step, before it knows which companies exist. Reverse who's-hiring-for {title, geo} search: companies with active reqs matching `q`/`geo`/`since`, deduped by company, keyset-paginated via `cursor`. `q` is free text matched against the posting title, not an id; plurals and other inflections match, so "backend engineers" is the same search. `geo` is resolved to a stored country before matching; an unresolvable one is an explicit error, never a quietly partial page. `limit` is bounded -- page through the full set with `cursor` instead of raising it. Billed per company returned (~0.10 USD each) -- an empty result bills nothing. q="backend engineer", geo="USA" -> the companies with matching active reqs, each with its pulse and its matched reqs. geo="Atlantis" -> an explicit unresolvable-country error rather than an empty page. No key yet? On the hosted HTTP endpoint the first calls are free: pass `plane_api_key` as an empty string and the search runs on a shared demo credential -- a smaller page, billed to nobody -- until a per-IP limit is reached, after which the answer becomes a signup link whose minted key finishes this exact search. On any other transport a blank key answers with that signup link straight away. Already holding a company_id and only need a yes/no? Use `is_hiring`.

    mcp-tool

    {
      "type": "object",
      "title": "who_is_hiring_forArguments",
      "properties": {
        "q": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Q",
          "default": null
        },
        "geo": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Geo",
          "default": null
        },
        "limit": {
          "type": "integer",
          "title": "Limit",
          "default": 20
        },
        "since": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Since",
          "default": null
        },
        "cursor": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Cursor",
          "default": null
        },
        "source_type": {
          "anyOf": [
            {
              "enum": [
                "ats_tenant",
                "board"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Source Type",
          "default": null
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Idempotency Key",
          "default": null
        },
        "exclude_agencies": {
          "type": "boolean",
          "title": "Exclude Agencies",
          "default": false
        }
      }
    }
    arguments 106 lines
  • list_watches reads open 14h ago

    WHEN you need to see what you are subscribed to -- before adding a watch, or to find the `id` `cancel_watch` takes. Returns your live watches newest first, cancelled ones excluded: {} -> {"watches": [{"id": ..., "company_id": ..., "event_types": [...], "webhook_endpoint_id": ..., "status": "firing", ...}]}. Each also reports its heartbeat -- `last_fired_at`, `fires_last_7d`, `fires_last_30d`, `fires_last_hour` against `max_fires_per_hour`, `rate_limited`, and a one-word `status` -- so a watch silent because nobody is hiring reads differently from one that can never match or whose endpoint is failing. Never billed. Needs your key: a blank one returns a signup link.

    mcp-tool

    {
      "type": "object",
      "title": "list_watchesArguments",
      "properties": {
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        }
      }
    }
    arguments 19 lines
  • find_qualified_reqs unknown 26h ago

    WHEN an agent already knows its ideal customer profile and wants the matching open roles as rows it can act on: several countries, an industry, a headcount band and title keywords in ONE call, instead of a search followed by a lookup per company. `criteria` takes up to three groups -- `company` (country, industry, industry_terms, headcount_band, company_kind), `req` (q, q_excludes, seniority_level, function, skills, remote_type, location) and `event` (company_id, board, source_type, ats_vendor, country) -- AND across fields, OR within one. A field outside that list is an explicit error, never quietly dropped. criteria={"company": {"country": ["United States", "Germany"]}, "req": {"q": ["backend engineer"]}} -> live backend roles in both countries, each row naming the company and carrying the posting URL, seniority, skills and declared or estimated yearly pay. `salary_min_usd` / `salary_max_usd` bracket that pay. Agencies and expired postings are excluded by default. Page with `cursor` (the previous `next_cursor`); `limit` is bounded. Billed per row returned, and an empty page bills nothing. Needs an API key: without one the answer is a signup link. For a first look at who is hiring before you have a key, use `who_is_hiring_for`.

    mcp-tool

    {
      "type": "object",
      "title": "find_qualified_reqsArguments",
      "required": [
        "criteria"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "title": "Limit",
          "default": 25
        },
        "since": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time"
            },
            {
              "type": "null"
            }
          ],
          "title": "Since",
          "default": null
        },
        "cursor": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Cursor",
          "default": null
        },
        "criteria": {
          "type": "object",
          "title": "Criteria",
          "additionalProperties": true
        },
        "live_only": {
          "type": "boolean",
          "title": "Live Only",
          "default": true
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        },
        "salary_max_usd": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Salary Max Usd",
          "default": null
        },
        "salary_min_usd": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "title": "Salary Min Usd",
          "default": null
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Idempotency Key",
          "default": null
        },
        "exclude_agencies": {
          "type": "boolean",
          "title": "Exclude Agencies",
          "default": true
        }
      }
    }
    arguments 103 lines
  • pre_action_brief reads unknown 26h ago

    Everything an agent needs before acting on one company, in one bounded round-trip instead of five: the hiring pulse, its top open reqs deduped across boards, first-hire-by-function events, hardest-to-fill (reposted) reqs and ATS-vendor migrations, pre-joined and each section capped so the payload stays compact. Use it right before writing outreach or a qualification note for a `company_id` you already hold. Honors `max_age` (seconds); a company with no ATS/board data returns `{job_id, status: "crawling"}`. If you only need the velocity number, `hiring_pulse` is cheaper.

    mcp-tool

    {
      "type": "object",
      "title": "pre_action_briefArguments",
      "required": [
        "company_id"
      ],
      "properties": {
        "max_age": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Age",
          "default": null
        },
        "company_id": {
          "type": "integer",
          "title": "Company Id"
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Idempotency Key",
          "default": null
        }
      }
    }
    arguments 50 lines
  • cancel_watch changes data unknown never probed

    WHEN a watch should stop firing. Takes the `id` `watch_company` returned (or `list_watches` lists): {"watch_id": 42} -> {"id": 42, "canceled": true}. Idempotent -- cancelling a watch you already cancelled succeeds again. An id that is not one of your watches is an error, identical whether it belongs to someone else or does not exist. Frees the slot a free key's watch limit counts. Never billed. Needs your key: a blank one returns a signup link.

    mcp-tool

    {
      "type": "object",
      "title": "cancel_watchArguments",
      "required": [
        "watch_id"
      ],
      "properties": {
        "watch_id": {
          "type": "integer",
          "title": "Watch Id"
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        }
      }
    }
    arguments 26 lines
  • write_outcome changes data unknown never probed

    WHEN a company you reached through a signal converts -- a reply, a meeting, a closed deal -- report it back. Takes the `company_id`, a short `outcome` label of your choosing (e.g. "meeting_booked"), the `observed_at` time it happened and, optionally, the `req_key` of the role that prompted the outreach: {"company_id": 1234, "outcome": "meeting_booked", "observed_at": "2026-10-01T09:00:00Z"} -> {"id": 87}. Each call adds one record, visible only to your own account; nothing is overwritten, so report a later stage as a new outcome. Never billed. Needs your key: a blank one returns a signup link.

    mcp-tool

    {
      "type": "object",
      "title": "write_outcomeArguments",
      "required": [
        "company_id",
        "outcome",
        "observed_at"
      ],
      "properties": {
        "outcome": {
          "type": "string",
          "title": "Outcome"
        },
        "req_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Req Key",
          "default": null
        },
        "company_id": {
          "type": "integer",
          "title": "Company Id"
        },
        "observed_at": {
          "type": "string",
          "title": "Observed At",
          "format": "date-time"
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        }
      }
    }
    arguments 49 lines
  • hiring_pulse reads unknown 6h ago

    One number set for one company: how many reqs it opened in the last 30 days, a `velocity` ratio of that against the 30 days before it, a `direction` of up / flat / down between the two, a surge flag, and `momentum` -- postings published per week, a flow rather than a stock. Use it to rank or score a company you already hold a `company_id` for. Freshness is controlled by `max_age` (seconds); a company with no ATS/board data yet returns `{job_id, status: "crawling"}` instead of a body -- poll again later, do not read it as "not hiring". For the whole picture in one round-trip use `pre_action_brief`; for a cheap yes/no use `is_hiring`.

    mcp-tool

    {
      "type": "object",
      "title": "hiring_pulseArguments",
      "required": [
        "company_id"
      ],
      "properties": {
        "max_age": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Max Age",
          "default": null
        },
        "company_id": {
          "type": "integer",
          "title": "Company Id"
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Idempotency Key",
          "default": null
        }
      }
    }
    arguments 50 lines
  • watch_company changes data unknown never probed

    Subscribe to a company's hiring events on a registered webhook -- `webhook_endpoint_id` must belong to the same customer as the authenticated key. Meters one `watch` unit. `event_types` names which events fire it, at least one of: `opened` (a req seen for the first time), `reobserved` (a known req seen again on a later day), `reposted` (a req that came back after it was gone), `closed` (a req verified gone from its source). Anything else is refused and creates nothing: a watch on a type that never fires would be billed and silent. A free key holds a limited number of watches at once; the one past that is refused with the same 402 the REST route raises, and cancelling a watch returns the slot.

    mcp-tool

    {
      "type": "object",
      "title": "watch_companyArguments",
      "required": [
        "company_id",
        "event_types",
        "webhook_endpoint_id"
      ],
      "properties": {
        "company_id": {
          "type": "integer",
          "title": "Company Id"
        },
        "event_types": {
          "type": "array",
          "items": {
            "enum": [
              "opened",
              "reobserved",
              "reposted",
              "closed"
            ],
            "type": "string"
          },
          "title": "Event Types",
          "minItems": 1
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Idempotency Key",
          "default": null
        },
        "webhook_endpoint_id": {
          "type": "integer",
          "title": "Webhook Endpoint Id"
        }
      }
    }
    arguments 58 lines
  • register_webhook changes data unknown never probed

    Register the delivery target a watch fires to, and get back the `webhook_endpoint_id` `watch_company` needs -- call this first if you do not already hold one. Idempotent: registering the same `url` twice returns the same id, so retrying is safe and never leaves you with two endpoints. `secret` is optional; supply one to verify the `X-Plane-Signature` on delivered payloads, omit it and one is generated (it is never returned). Registration itself is free -- the `watch_company` call that follows is what bills.

    mcp-tool

    {
      "type": "object",
      "title": "register_webhookArguments",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "title": "Url"
        },
        "secret": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Secret",
          "default": null
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        }
      }
    }
    arguments 38 lines
  • get_role reads unknown 6h ago

    One open role's detail, addressed by the `company_id` + `req_key` pair every `search_jobs` row already carries -- the follow-up call for a role you hold an identifier for, instead of re-pulling the whole company with `get_open_reqs`. Scoped exactly as `search_jobs` is: LinkedIn-excluded (ATS tenants plus public job boards and aggregators) and freshness-floored. The body adds `raw_title` (the posting's own title) and `boards`, the full deduped list of boards reporting this req. A role that does not exist, is closed, or has not reached the freshness floor is an explicit error, never an empty success -- and it is not billed. No key yet? On the hosted HTTP endpoint the first calls are free: send no `X-API-Key` header and the lookup runs on a shared demo credential, billed to nobody and marked as such, until a per-IP limit is reached.

    mcp-tool

    {
      "type": "object",
      "title": "get_roleArguments",
      "required": [
        "company_id",
        "req_key"
      ],
      "properties": {
        "req_key": {
          "type": "string",
          "title": "Req Key"
        },
        "company_id": {
          "type": "integer",
          "title": "Company Id"
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Idempotency Key",
          "default": null
        }
      }
    }
    arguments 43 lines
  • is_hiring reads unknown 6h ago

    WHEN an agent already holds a company and needs to qualify it -- the cheap gate before spending a richer call. LinkedIn-excluded (ATS tenants plus public job boards and aggregators) and freshness-floored. Takes the integer `company_id` from an earlier result, not a company name or domain. company_id=1234 -> is_hiring true, open_req_count 7, coverage_status "ats_direct_hit". company_id=5678 -> is_hiring false with coverage_status "no_ats_signal" -- that company has no ATS coverage yet, which is not evidence it is quiet, so do not score it as a negative. No key yet? Pass `plane_api_key` as an empty string and the call answers with a signup link instead of an auth error. To find companies in the first place, use `who_is_hiring_for`.

    mcp-tool

    {
      "type": "object",
      "title": "is_hiringArguments",
      "required": [
        "company_id"
      ],
      "properties": {
        "company_id": {
          "type": "integer",
          "title": "Company Id"
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Idempotency Key",
          "default": null
        }
      }
    }
    arguments 38 lines
  • get_open_reqs reads unknown 17h ago

    The company's current active reqs, deduped across boards -- LinkedIn-excluded: ATS tenants plus public job boards and aggregators; each row's `boards` names its source. Freshness-floored. Each row's `first_seen` is our first observation of the req, not the employer's posting date; `source_posted_at` is the date the source itself published, null when it gave none. `function` is a function name (a prior result's `function_name`, like 'Software & IT') or a function id (its `function`); anything else, like 'engineering', is rejected with an explicit error that lists the names, rather than an empty result. `limit` is bounded: an oversized page is rejected rather than truncated.

    mcp-tool

    {
      "type": "object",
      "title": "get_open_reqsArguments",
      "required": [
        "company_id"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "title": "Limit",
          "default": 50
        },
        "country": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Country",
          "default": null
        },
        "function": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Function",
          "default": null
        },
        "company_id": {
          "type": "integer",
          "title": "Company Id"
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Idempotency Key",
          "default": null
        }
      }
    }
    arguments 67 lines
  • get_changes reads unknown 17h ago

    The change feed, not a search: ledger events -- a req opened, re-observed, reposted or closed -- with `event_seq > since`, ascending, plus `next_cursor`. Replay with `next_cursor` instead of polling or re-searching; an empty page bills nothing and one `change` unit is metered per event returned. Filter by `company_id`, or by one exact `event_type`. `limit` is bounded -- page with the cursor rather than raising it. Free-tier callers see events at the same freshness floor as every other free read. This is the pull-based twin of `watch_company` (push via webhook).

    mcp-tool

    {
      "type": "object",
      "title": "get_changesArguments",
      "required": [
        "since"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "title": "Limit",
          "default": 100
        },
        "since": {
          "type": "integer",
          "title": "Since"
        },
        "company_id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "title": "Company Id",
          "default": null
        },
        "event_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Event Type",
          "default": null
        },
        "plane_api_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Plane Api Key",
          "default": null,
          "description": "Deprecated: pass the key in the `X-API-Key` header, or omit the header for demo mode. Removed in 1.2."
        },
        "idempotency_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Idempotency Key",
          "default": null
        }
      }
    }
    arguments 67 lines
_ try it 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 5245c56eb2dcefc7.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/5245c56eb2dcefc7/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/5245c56eb2dcefc7/badge.svg)](https://brick.blue/agent/5245c56eb2dcefc7?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 know
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.