protogrid

Search / ai.stonewake/stonewake

Stonewake

R1· needs a key

Seventeen read only tools over cited company, portfolio and country data for bank credit desks.

v1.0.0 · active · website · descriptor JSON · versions

An agent can connect on its own if it already holds STONEWAKE_TOKEN.Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.
Quality80good
Trust83of 100
Uptime, 30 days100%
Latency p50478 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "stonewake": {
      "type": "http",
      "url": "https://mcp.stonewake.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${STONEWAKE_TOKEN}"
      }
    }
  }
}
claude mcp add --transport http stonewake https://mcp.stonewake.ai/mcp --header "Authorization: Bearer ${STONEWAKE_TOKEN}"
[mcp_servers.stonewake]
url = "https://mcp.stonewake.ai/mcp"
bearer_token_env_var = "STONEWAKE_TOKEN"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "stonewake": {
      "type": "remote",
      "url": "https://mcp.stonewake.ai/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:STONEWAKE_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "stonewake": {
      "type": "http",
      "url": "https://mcp.stonewake.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${STONEWAKE_TOKEN}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=stonewake&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbWNwLnN0b25ld2FrZS5haS9tY3AiLCJoZWFkZXJzIjp7IkF1dGhvcml6YXRpb24iOiJCZWFyZXIgJHtTVE9ORVdBS0VfVE9LRU59In19"
}
{
  "servers": {
    "stonewake": {
      "type": "http",
      "url": "https://mcp.stonewake.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${STONEWAKE_TOKEN}"
      }
    }
  }
}
{
  "mcpServers": {
    "stonewake": {
      "httpUrl": "https://mcp.stonewake.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${STONEWAKE_TOKEN}"
      }
    }
  }
}
extensions:
  "stonewake":
    enabled: true
    name: "stonewake"
    type: streamable_http
    uri: "https://mcp.stonewake.ai/mcp"
    headers:
      "Authorization": "Bearer ${STONEWAKE_TOKEN}"
    timeout: 300

Placeholders to fill from your own secret store: ${STONEWAKE_TOKEN}. The registry never accepts secret values.

Quality 80 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length12 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations36 of 36 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • warn
    tools.token_costabout 14,243 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability75 · weight 15
  • warn
    stability.changes85 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

36 tools, about 14,243 tokens to load them all · tool set b22a3f21e2b5 · tools last changed 2026-10-20 · checked 2026-10-20 11:08 UTC

Tool changes

  • deal_bookchangeddescription
    before

    The deal book of the one team the caller's key reads; every row names that team (team_id, team_name). Without deal_id this lists deals ordered by their ranking window first (financing open, early stage, not confirmed, financing closed, cancelled) and the score inside it unless sort names one column, filterable by stage, window, country_code (ISO country codes), sector, status, eca, eca_named (only deals naming an export credit agency), minimum contract value (min_value_usd), and free text (q); sort is priority (the default, the window order above) or one column that orders the whole filtered book, score, value (the USD value), last_activity, stage (the pipeline order), name or first_seen, with direction desc (the default) or asc and rows without a value last, or latest_update, which ignores the window and orders by the newest dated event, rows without one last, desc only; paged with limit (default 50, maximum 100) and offset, with the exact total. Dismissed deals are excluded unless status asks for them, and the portfolio rows a desk holds back by default (closed, cancelled, older than the stale window of 12 months by default, own bank, domestic; score_hidden true) are off the page unless include_hidden is true, and score_own_bank marks the rows where your own bank is a lender. A row carrying merged_into was found to be a duplicate and folded into the deal that field names: read that deal instead, and expect this one to be dismissed. Each row carries its window (score_window and its label), the band word and reason count behind its score (score_band, score_reason_count), the confirmed state over its linked findings (state, state_label), the newest quote backed event date (event_date, null when no source stated one), the lender names on the deal (lenders), and the two derived sentences a desk reads first: angle (why the row is on the list) and ask (what is still to be financed, read from the confirmed state, the window, the agencies and the lenders; a row whose state no source confirmed reads State not confirmed by a source yet), latest_update (the newest event a source dated and confirmed, with its date, a short label naming the confirmed state and the amount only where a quote states it, the state and the finding_id it rests on, null when there is none) and has_unseen_update (true when that event reached the deal after your last open of it in the dashboard, null for an API key, which records no opens). With deal_id (the deal_id field of list rows) it returns one deal in full, with score_reasons, one plain sentence per scoring component saying which fact it matched, alongside parties carrying entity_id and node_id where bound, the cited timeline with press quotes (each entry also carrying the state its quote confirmed, the confirming passage and the event date), lifecycle events, sources each carrying source_tier (1 a primary source, 2 trade press, 3 an aggregator, which is also where an unclassified publisher lands) and its tier_label, the deal summary (summary_lines, three lines generated from the cited findings by fixed rules, not by a model, each with the finding and quote behind every field it states), the briefing (null, or text, drafted_at, drafted_by, which reads model, and sources, a quick summary an AI model drafts from the text of the deal's cited sources with those sources listed by source_id, url, publisher and published_at, only its numbers written in digits checked against that text, null until it is drafted, whenever no sentence passes its check, and when nothing is left once a clause asking the reader to confirm, verify, check or review anything is removed), the analyst's own next_action, and economics.

    after · 97% of words in common

    The deal book of the one team the caller's key reads; every row names that team (team_id, team_name). Without deal_id this lists deals ordered by their ranking window first (financing open, early stage, not confirmed, financing closed, cancelled) and the score inside it unless sort names one column, filterable by stage, window, country_code (ISO country codes), sector, status, eca, eca_named (only deals naming an export credit agency), minimum contract value (min_value_usd), and free text (q); sort is priority (the default, the window order above) or one column that orders the whole filtered book, score, value (the USD value), last_activity, stage (the pipeline order), name or first_seen, with direction desc (the default) or asc and rows without a value last, or latest_update, which ignores the window and orders by the newest dated event, rows without one last, desc only; paged with limit (default 50, maximum 100) and offset, with the exact total. Dismissed deals are excluded unless status asks for them, and the portfolio rows a desk holds back by default (closed, cancelled, older than the stale window of 12 months by default, no movement within the movement hold, own bank, domestic, below the value floor, a market outside the mandate; score_hidden true) are off the page unless include_hidden is true, stale_months and movement_months naming the two age rules in months, and score_own_bank marks the rows where your own bank is a lender. A row carrying merged_into was found to be a duplicate and folded into the deal that field names: read that deal instead, and expect this one to be dismissed. Each row carries its window (score_window and its label), the band word and reason count behind its score (score_band, score_reason_count), the confirmed state over its linked findings (state, state_label), the newest quote backed event date (event_date, null when no source stated one), the lender names on the deal (lenders), and the two derived sentences a desk reads first: angle (why the row is on the list) and ask (what is still to be financed, read from the confirmed state, the window, the agencies and the lenders; a row whose state no source confirmed reads State not confirmed by a source yet), latest_update (the newest event a source dated and confirmed, with its date, a short label naming the confirmed state and the amount only where a quote states it, the state and the finding_id it rests on, null when there is none) and has_unseen_update (true when that event reached the deal after your last open of it in the dashboard, null for an API key, which records no opens). With deal_id (the deal_id field of list rows) it returns one deal in full, with score_reasons, one plain sentence per scoring component saying which fact it matched, alongside parties carrying entity_id and node_id where bound, the cited timeline with press quotes (each entry also carrying the state its quote confirmed, the confirming passage and the event date), lifecycle events, sources each carrying source_tier (1 a primary source, 2 trade press, 3 an aggregator, which is also where an unclassified publisher lands) and its tier_label, the deal summary (summary_lines, three lines generated from the cited findings by fixed rules, not by a model, each with the finding and quote behind every field it states), the briefing (null, or text, drafted_at, drafted_by, which reads model, and sources, a quick summary an AI model drafts from the text of the deal's cited sources with those sources listed by source_id, url, publisher and published_at, only its numbers written in digits checked against that text, null until it is drafted, whenever no sentence passes its check, and when nothing is left once a clause asking the reader to confirm, verify, check or review anything is removed), the analyst's own next_action, and economics.

  • audit_log_exportchangeddescription
    before

    The workspace's own audit log for a window of days: every recorded action with its time (UTC), action name, actor, target, run, model and details, in ledger order, including sign ins, single sign on provisioning and role changes, and member removals. Takes from and to as YYYY-MM-DD, both days included, at most 366 days. Needs an API key a workspace administrator issued with the audit scope; any other key answers forbidden. The export itself is recorded in the audit log. Large windows are cut at the output cap, so ask for shorter windows.

    after · 85% of words in common

    The workspace's own audit log for a window of days: every recorded action with its time (UTC), action name, actor, target, run, the model that served its model calls (several joined by +, unknown when that cannot be shown, never the planned model) and details, in ledger order, including sign ins, single sign on provisioning and role changes, and member removals. Takes from and to as YYYY-MM-DD, both days included, at most 366 days. Needs an API key a workspace administrator issued with the audit scope; any other key answers forbidden. The export itself is recorded in the audit log. Large windows are cut at the output cap, so ask for shorter windows.

  • deal_duplicatesremoved

    The open duplicate questions of the caller team's deal book, the list the dashboard shows on its Possible duplicates card, pairs of live deals the transaction key says look like one transaction, newest first. Each row names the deal a merge keeps (deal_id, deal_name, the one first seen), the deal it would fold in (other_deal_id, other_deal_name), its team (team_id, team_name), what the two share (basis, one of buyer, company, institution, name, project or value_missing), one plain sentence naming what matched (reason) and when the question was raised (created_at). Pairs that merged automatically, pairs a person already answered and pairs one side of which was dismissed are not listed. Paged with limit and offset; the response carries the exact total. Merging two deals or answering not the same deal happens in the Stonewake dashboard.

  • deal_duplicateschangeddescription
    before

    The open duplicate questions of the caller team's deal book, the list the dashboard shows on its Possible duplicates card, pairs of live deals the transaction key says look like one transaction, newest first. Each row names the deal a merge keeps (deal_id, deal_name, the one first seen), the deal it would fold in (other_deal_id, other_deal_name), its team (team_id, team_name), what the two share (basis, one of buyer, company, institution, name or value_missing), one plain sentence naming what matched (reason) and when the question was raised (created_at). Pairs that merged automatically, pairs a person already answered and pairs one side of which was dismissed are not listed. Paged with limit and offset; the response carries the exact total. Merging two deals or answering not the same deal happens in the Stonewake dashboard.

    after · 99% of words in common

    The open duplicate questions of the caller team's deal book, the list the dashboard shows on its Possible duplicates card, pairs of live deals the transaction key says look like one transaction, newest first. Each row names the deal a merge keeps (deal_id, deal_name, the one first seen), the deal it would fold in (other_deal_id, other_deal_name), its team (team_id, team_name), what the two share (basis, one of buyer, company, institution, name, project or value_missing), one plain sentence naming what matched (reason) and when the question was raised (created_at). Pairs that merged automatically, pairs a person already answered and pairs one side of which was dismissed are not listed. Paged with limit and offset; the response carries the exact total. Merging two deals or answering not the same deal happens in the Stonewake dashboard.

  • tender_matcheschangeddescription, input schema
    before

    The public procurement notices the caller team's tender profiles matched, newest first, one row per procedure citing its newest matching notice. Each match explains every criterion its profile sets (CPV code, NUTS region, value band in EUR, keyword, procedure type, buyer legal type, notice kind, days to the tender deadline) with the outcome hit, the notice field it read, what the notice states there and what the profile asks, and carries the notice itself with its source_url and record_id as the citation. A notice is a match only when it hits every criterion its profile sets, so an unknown is never a match. Winners are never shown, and a buyer whose legal type may name a natural person is withheld (buyer_withheld). Filter by status (new, dismissed or in_deal_book) or profile_id, page with limit and offset, or pass match_id alone to read one match. A match outside the caller team answers not_found. A match can also cite a notice of the team's own portal lane (portal_notice, an export the bank uploaded or an alert of one of its portal accounts), chosen by a profile or by the portal's own saved search (decided_by portal_search).

    after · 93% of words in common

    The public procurement notices the caller team's tender profiles matched, newest first, one row per procedure citing its newest matching notice. Each match explains every criterion its profile sets (CPV code, NUTS region, value band in EUR, keyword, procedure type, buyer legal type, notice kind, days to the tender deadline) with the outcome hit, the notice field it read, what the notice states there and what the profile asks, and carries the notice itself with its source_url and record_id as the citation. A notice is a match only when it hits every criterion its profile sets, so an unknown is never a match. Winners are never shown, and a buyer whose legal type may name a natural person is withheld (buyer_withheld). Filter by status (new, dismissed or in_deal_book) or profile_id, page with limit and offset, or pass match_id alone to read one match. A match outside the caller team answers not_found. A match can also cite a notice of the team's own portal lane (portal_notice, an export the bank uploaded or an alert of one of its portal accounts), chosen by a profile or by the portal's own saved search (decided_by portal_search). Pass deal_id alone for the matches an analyst took into that deal of the Deal Book (status in_deal_book), where the notice is cited on the deal.

  • company_socialchangeddescription
    before

    What is said on social platforms and forums about the companies the workspace holds in its book or watches, and the natural persons it watches where person data is switched on (node_type person), read from a licensed social listening source. Every answer carries source.enabled; while it is false no source is switched on and nothing current is read. Without node_id it lists the companies, each with its newest reading of a day read in full, or latest null while no reading is stored. With node_id it returns that company's daily readings, newest first (days, default 30), and its newest 100 items of the last 30 days: item_key, platform, url (null with link_withheld true when every form of the link would name a person), published_at, language, the source's sentiment label and the matched_name. A reading counts the items of its 30 day window per platform and by sentiment (YouTube items are listed, never counted); its state is reading (sentiment_net is positive minus negative over the rated items, from -1 to +1), too_little_coverage (fewer than three rated items in a window read in full, no sentiment) or feed_gap (the day or a thin window not read in full, no sentiment). No author, handle, title or post text is ever kept. A watched person is read like any company, its reading context for the bank's due diligence on that person and never a score of the person. A sole trader carries no sentiment, so readings are empty, latest is null and each item's sentiment is null, while its items are listed. A company's reading is context beside the credit view, and no reading is ever part of the risk score. A company outside the workspace's book and watch list answers 404.

    after · 99% of words in common

    What is said on social platforms and forums about the companies the workspace holds in its book or watches, and the natural persons it watches where person data is switched on (node_type person), read from a licensed social listening source. Every answer carries source.enabled; while it is false no source is switched on and nothing current is read. Without node_id it lists the companies, each with its newest reading of a day read in full, or latest null while no reading is stored. With node_id it returns that company's daily readings, newest first (days, default 30), and its newest 100 items of the last 30 days: item_key, platform, url (null with link_withheld true when every form of the link would name a person), published_at, language, the source's sentiment label and the matched_name. A reading counts the items of its 30 day window per platform and by sentiment (YouTube items are listed, never counted); its state is reading (sentiment_net is positive minus negative over the rated items, from -1 to +1), too_little_coverage (fewer than three rated items in a window read in full, no sentiment) or feed_gap (the day or a thin window not read in full, no sentiment). No author, handle, title or post text is ever kept. A watched person is read like any company, its reading context for the bank's due diligence on that person and never a score of the person. A sole trader (sole_trader true, a natural person's business) carries no sentiment, so readings are empty, latest is null and each item's sentiment is null, while its items are listed. A company's reading is context beside the credit view, and no reading is ever part of the risk score. A company outside the workspace's book and watch list answers 404.

  • deal_duplicatesadded

    The open duplicate questions of the caller team's deal book, the list the dashboard shows on its Possible duplicates card, pairs of live deals the transaction key says look like one transaction, newest first. Each row names the deal a merge keeps (deal_id, deal_name, the one first seen), the deal it would fold in (other_deal_id, other_deal_name), its team (team_id, team_name), what the two share (basis, one of buyer, company, institution, name or value_missing), one plain sentence naming what matched (reason) and when the question was raised (created_at). Pairs that merged automatically, pairs a person already answered and pairs one side of which was dismissed are not listed. Paged with limit and offset; the response carries the exact total. Merging two deals or answering not the same deal happens in the Stonewake dashboard.

  • licensed_factsadded

    Company values a data provider the caller's bank licenses stated (North Data), looked up under the bank's own key into its own workspace, with the name, legal form, register and register status, the LEI where stated, the graph node it binds to through a stated identifier, the provider's source page (source_url) and when it was read. Only values read under a licence scope that covers the bank's own systems are served. Filter by node_id or by a German register with its court, for example HRB 12345 Hamburg; page with limit and offset. Looking a company up happens in the Stonewake dashboard.

  • tender_matcheschangeddescription
    before

    The public procurement notices the caller team's tender profiles matched, newest first, one row per procedure citing its newest matching notice. Each match explains every criterion its profile sets (CPV code, NUTS region, value band in EUR, keyword, procedure type, buyer legal type, notice kind, days to the tender deadline) with the outcome hit, the notice field it read, what the notice states there and what the profile asks, and carries the notice itself with its source_url and record_id as the citation. A notice is a match only when it hits every criterion its profile sets, so an unknown is never a match. Winners are never shown, and a buyer whose legal type may name a natural person is withheld (buyer_withheld). Filter by status (new, dismissed or in_deal_book) or profile_id, page with limit and offset, or pass match_id alone to read one match. A match outside the caller team answers not_found.

    after · 86% of words in common

    The public procurement notices the caller team's tender profiles matched, newest first, one row per procedure citing its newest matching notice. Each match explains every criterion its profile sets (CPV code, NUTS region, value band in EUR, keyword, procedure type, buyer legal type, notice kind, days to the tender deadline) with the outcome hit, the notice field it read, what the notice states there and what the profile asks, and carries the notice itself with its source_url and record_id as the citation. A notice is a match only when it hits every criterion its profile sets, so an unknown is never a match. Winners are never shown, and a buyer whose legal type may name a natural person is withheld (buyer_withheld). Filter by status (new, dismissed or in_deal_book) or profile_id, page with limit and offset, or pass match_id alone to read one match. A match outside the caller team answers not_found. A match can also cite a notice of the team's own portal lane (portal_notice, an export the bank uploaded or an alert of one of its portal accounts), chosen by a profile or by the portal's own saved search (decided_by portal_search).

  • company_socialchangeddescription
    before

    What is said on social platforms and forums about the companies the workspace holds in its book or watches, read from a licensed social listening source. Every answer carries source.enabled; while it is false no source is switched on and nothing current is read. Without node_id it lists the companies, each with its newest reading of a day read in full, or latest null while no reading is stored. With node_id it returns that company's daily readings, newest first (days, default 30), and its newest 100 items of the last 30 days: item_key, platform, url (null with link_withheld true when every form of the link would name a person), published_at, language, the source's sentiment label and the matched_name. A reading counts the items of its 30 day window per platform and by sentiment (YouTube items are listed, never counted); its state is reading (sentiment_net is positive minus negative over the rated items, from -1 to +1), too_little_coverage (fewer than three rated items in a window read in full, no sentiment) or feed_gap (the day or a thin window not read in full, no sentiment). No author, handle, title or post text is ever kept. A sole trader's coverage answers withheld sole_trader. A reading is context beside the credit view and never part of the risk score. A company outside the workspace's book and watch list answers 404.

    after · 90% of words in common

    What is said on social platforms and forums about the companies the workspace holds in its book or watches, and the natural persons it watches where person data is switched on (node_type person), read from a licensed social listening source. Every answer carries source.enabled; while it is false no source is switched on and nothing current is read. Without node_id it lists the companies, each with its newest reading of a day read in full, or latest null while no reading is stored. With node_id it returns that company's daily readings, newest first (days, default 30), and its newest 100 items of the last 30 days: item_key, platform, url (null with link_withheld true when every form of the link would name a person), published_at, language, the source's sentiment label and the matched_name. A reading counts the items of its 30 day window per platform and by sentiment (YouTube items are listed, never counted); its state is reading (sentiment_net is positive minus negative over the rated items, from -1 to +1), too_little_coverage (fewer than three rated items in a window read in full, no sentiment) or feed_gap (the day or a thin window not read in full, no sentiment). No author, handle, title or post text is ever kept. A watched person is read like any company, its reading context for the bank's due diligence on that person and never a score of the person. A sole trader carries no sentiment, so readings are empty, latest is null and each item's sentiment is null, while its items are listed. A company's reading is context beside the credit view, and no reading is ever part of the risk score. A company outside the workspace's book and watch list answers 404.

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 83 / 100

no-repository
provenance55
liveness100
freshness100
hygiene80

+dns-namespace +website +reachable +uptime-100% +updated-25d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://mcp.stonewake.ai/mcp streamable-httpapi_key ${STONEWAKE_TOKEN}yes100%478 ms2025-11-252026-10-20

Tools (36)

alert_deliveriesread-onlyThe delivery status of the workspace's alerts, newest first. Every attempt has a claim row (queued, or held_budget or held_quiet when it was not sent, digest when the fact arrived too old for an immediate alert) and an outcome row (sent or failed with its error_class). A delivered row means the receiver confirmed it (a signed webhook, or the SMS provider's final report), undelivered is the SMS provider's final negative report, and a dead_letter row closes an endpoint delivery whose failure is permanent or whose every retry is spent. Rows name the alert event by event_id and an endpoint by endpoint_id; a user's identity is not served. A key reads the deliveries of its own team's alerts and of workspace wide ones. Filter by event_id, status or channel. Paged with limit and offset; the response carries the exact total.
alert_eventsread-onlyThe alert events of the workspace, newest first. Each names its event_class (risk_red, risk_amber, insolvency_notice, sanctions_candidate, tender_match, press_candidate or monitoring_finding), its severity (critical, high or info), the graph node_id and exposure_id of its subject, the source it stands on (source.kind and source.id), when the fact occurred and when the alert was written. An alert names ids only, never a name. A key reads its own team's events and the workspace wide ones. Filter by event_class or severity. Paged with limit and offset; the response carries the exact total.
audit_log_exportread-onlyThe workspace's own audit log for a window of days: every recorded action with its time (UTC), action name, actor, target, run, the model that served its model calls (several joined by +, unknown when that cannot be shown, never the planned model) and details, in ledger order, including sign ins, single sign on provisioning and role changes, and member removals. Takes from and to as YYYY-MM-DD, both days included, at most 366 days. Needs an API key a workspace administrator issued with the audit scope; any other key answers forbidden. The export itself is recorded in the audit log. Large windows are cut at the output cap, so ask for shorter windows.
company_eventsread-onlyThe register event feed of one company: filings, status changes, and other register happenings, grouped into display rows and ordered by significance tier, each row citing its evidencing record where one exists. Takes node_id, the graph node id from search_companies hits. Related events arrive folded into one rollup row with a member_count and a group_key; pass that group_key as group to expand one rollup into its member events. A citation whose notice is set carries a text to show with the record; keep that notice with the record wherever it is quoted onward. For a company with a German register entry, insolvency_lookup states when your workspace last looked its German insolvency notices up (the portal allows single company lookups only, so they are only as complete as that lookup). Its state is pending while a lookup is queued (a company a person opened in the dashboard is looked up within minutes), then current with the date of the lookup; not_requested, with no timestamp, for a company no person of your workspace opened in the dashboard, screened, put into a dossier or holds in the portfolio, since reading this tool never asks for a lookup; and not_looked_up, with no timestamp, in any workspace where the lookups are not switched on. Show its note beside the feed.
company_financialsread-onlyEvery financial figure for one company, newest reporting period first, each figure citing the source record it came from (a public register, a public filing repository, or the annual financial report the issuer published on its own website). Takes node_id, the graph node id carried by search_companies hits (not the entity_id of company_profile). Figures are served as filed at the source, except a figure with derived true, which the filing does not state and which was calculated from two figures the same filing states; its derivation says how in plain words. A missing period means nothing was filed, not zero.
company_financingread-onlyThe debt surface of one company: registered charges with status lines and bound lenders, listed debt instruments, filed debt position facts, derived aggregates, a maturity wall, and per section coverage states saying how complete each section is. Takes node_id, the graph node id from search_companies hits. Long instrument books fold into the maturity wall; pass bucket (within_12m, 1_to_2y, 2_to_5y, beyond_5y, or no_maturity) to expand one maturity slice, and include_matured true to also list matured instruments.
company_networkread-onlyThe register neighborhood of one node: its officers, shareholders and beneficial owners, its holdings, branches and other register relations, each edge citing the register record that states it (register, record type, identifier, source URL, retrieval date), current edges before closed ones. Takes node_id, the graph node id from search_companies hits or from a previous network answer, so a neighbor expands the same way. Natural persons are served, with node_type person, only in workspaces where person data is switched on; elsewhere they and their edges are left out, and a person node_id answers not_found. edge_types keeps the named types only (for example officer_of,owns); limit caps the neighbors, default and maximum 200, and truncated says when it cut.
company_newsread-onlyGlobal news coverage of the companies the workspace holds in its book or watches, and of the natural persons it watches where person data is switched on (node_type person), read from the GDELT Project's 15 minute files in English and machine translated from about 65 languages. Without node_id it lists the companies, each with its newest reading of a day read in full (the day in progress is never read in full and reads feed_gap), or latest null while no reading is stored, which says nothing about coverage. With node_id it returns that company's daily readings, newest first (days, default 30), and the newest 100 articles behind the newest one together with every article its events list: article_key, url, publisher_host, published_at, language, gdelt_tone and the matched_organization name. A reading's state is reading (tone_mean is the mean GDELT document tone of the articles in the 30 day window, article_keys cite the newest 100 of them and articles_window counts them all), too_little_coverage (fewer than three articles in a fully read window, no tone) or feed_gap (the day or a thin window not fully read, no tone). Tone is context beside the credit view and never part of the risk score. With node_id it also returns events, the company's serious news events of the same days: event_type (insolvency, sanctions, fraud, cyberattack, accident, legal_action, executive_exit, layoffs, strike or environment_rights, from GDELT's own theme codes under a reviewed mapping, never a model), severity, opened_at, detected_at, closes_at, the articles, independent sources and languages behind it, whether it raised an alert, the article_keys of its newest 20 articles, and its check: before any alert a model reads the event's articles and a deterministic gate keeps its verdict only when the cited article is one of the event's own and the quote is found in it verbatim; status is confirmed (only such an event alerts), not_confirmed (news to read, not a finding), pending, unchecked (the check could not run, no alert went out) or covered, with verdict, the checked event_type, the cited article_key, reason, model, prompt_version, checked_at and second_source_articles, the NewsAPI.ai articles the check read beside the event's own (article_key, url, publisher_host, published_at, language, provider), empty while that source is off. No headline, article text or quote is kept, and no person name beyond the matched name of a followed person. A watched person is read for the due diligence the bank runs on that person, its tone context and never a score of the person. A sole trader (sole_trader true, a natural person's business) carries no tone, so latest is null, readings are empty and gdelt_tone is null, while its articles and events are served. Neither is ever scored. Every answer carries the GDELT attribution to show with the data. A company outside the workspace's book and watch list answers 404.
company_overviewread-onlyOne company the way the dashboard's Network view shows it, by node_id, the graph node id carried by search_companies hits (not the entity_id of company_profile). Answers the register identity, what the register records held for the company state (GLEIF, Companies House, a German register extract where one was read, SEC EDGAR, the Swiss gazette and the Marktstammdatenregister operator) in plain words, each fact with the record it cites and when that record was last confirmed, and the risk status. risk_state is portfolio when your team holds the company (risk then carries its portfolio assessment, as entity_risk_profile returns it), assessed when an assessment was made on the spot for your team, in_progress while one is being made, not_assessed with risk_reason allowance, failed or not_started, or sole_trader when the register states a natural person's business, which is never scored (risk then carries sole_trader true and no assessment). A tool call reads only and never starts an assessment. Pass locale de for the German field labels.
company_profileread-onlyOne registry row's identity from the closed Stonewake registry of named market participants (export credit agencies, multilaterals, development finance institutions, development banks, government agencies and banks, plus the trade publications deals cite): slug, display name, full name, kind and its label, country and location, aliases, and group memberships. Takes entity_id from the registry's own id space. This is NOT the node_id that search_companies returns and entity_risk_profile takes; the two id spaces are different, and an id from the wrong space answers not_found.
company_public_fundingread-onlyPublic grants and state aid one company received, from the EU State aid Transparency Award Module, Kohesio and the Financial Transparency System, with totals per year and per programme. Takes node_id, the graph node id from search_companies hits. Each award cites its source record and states how it was bound to the company, always by an identifier and never by a name alone. Totals never add figures of a different basis or currency, and a range a source states stays a range (band_low_total and band_high_total). The tool reads only awards to organisations. State aid figures from TAM are aid granted, not aid paid, published only above the threshold of each measure and never for de minimis aid, and for a loan or a guarantee a figure may be the loan or guarantee itself.
company_recordsread-onlyThe register records behind one company, a page at a time. Each row is a citation (register, record type, identifier, source URL, retrieval date), newest first. Takes node_id, the graph node id from search_companies hits. Every page states records_total, the company's whole count, and registers, each register's connector_id, name and count; pass one connector_id to page that register alone. A company listed in a securities register can hold over 100,000 records, so page with limit (default and maximum 25) and offset, and read registers first to decide what to page. A row whose notice is set carries a text to show with the record; keep that notice with the record wherever it is quoted onward.
company_regional_contextread-onlyOfficial regional statistics beside one German company: the VGR der Länder tables of the Kreis (GDP, gross value added by industry, employment, population) and the Zensus 2022 housing figures of the Gemeinde and the Kreis (rents, vacancy, building age) its seat lies in, and the Regionalatlas indicators of the Kreis (population movement, business registrations and insolvencies, unemployment, disposable income), the BA labour market figures of the Kreis (registered unemployed, underemployment, the newest 13 months) and the Regionaldatenbank tables of the Gemeinde and the Kreis (corporate insolvencies by WZ 2008 section, Hebesätze), each with its table, period, retrieval time, source link and the attribution line, which must be shown with the figure. Takes node_id, the graph node id from search_companies hits. The seat is the register seat; only when no register extract states one is it the seat a German insolvency notice states, and region.seat_label then says so with the notice date. region states how the seat was joined to its official key (an exact name match only), or why no region is determined; missing lists in plain sentences what is not held. Aggregates for context only, never part of the company's score or status.
company_sector_contextread-onlyOfficial German statistics beside one German company: the corporate insolvency and enterprise figures Destatis publishes for its WZ 2008 section and its Bundesland, each with its table code, period, retrieval time, source link and the licence attribution line, which must be shown with the figure. Takes node_id, the graph node id from search_companies hits. No German register states a company's NACE code, so pass nace (a section letter or a NACE code such as 41.20) to name the sector; the answer then says the caller named it. missing lists in plain sentences what is not held, Kreis level included. Aggregates for context only, never part of the company's score or status.
company_socialread-onlyWhat is said on social platforms and forums about the companies the workspace holds in its book or watches, and the natural persons it watches where person data is switched on (node_type person), read from a licensed social listening source. Every answer carries source.enabled; while it is false no source is switched on and nothing current is read. Without node_id it lists the companies, each with its newest reading of a day read in full, or latest null while no reading is stored. With node_id it returns that company's daily readings, newest first (days, default 30), and its newest 100 items of the last 30 days: item_key, platform, url (null with link_withheld true when every form of the link would name a person), published_at, language, the source's sentiment label and the matched_name. A reading counts the items of its 30 day window per platform and by sentiment (YouTube items are listed, never counted); its state is reading (sentiment_net is positive minus negative over the rated items, from -1 to +1), too_little_coverage (fewer than three rated items in a window read in full, no sentiment) or feed_gap (the day or a thin window not read in full, no sentiment). No author, handle, title or post text is ever kept. A watched person is read like any company, its reading context for the bank's due diligence on that person and never a score of the person. A sole trader (sole_trader true, a natural person's business) carries no sentiment, so readings are empty, latest is null and each item's sentiment is null, while its items are listed. A company's reading is context beside the credit view, and no reading is ever part of the risk score. A company outside the workspace's book and watch list answers 404.
country_profileread-onlyCountry intelligence for export finance. Without iso3 this returns the index of covered countries with each one's risk score and the caller team's live deal rollup. With iso3 (a three letter ISO 3166-1 alpha-3 code such as TUR) it returns one country in depth: the risk score with its cited component breakdown, indicator values, membership lists with legal citations, reference events, and the team's deals there. The deal fields are filled only for a workspace with the deals module; without it they read zero and empty, which says nothing about deals in that country, so never report them as no deals. Indicator and dataset entries carry attribution fields such as attribution_text stating the data licence terms; preserve that attribution whenever values are quoted onward.
deal_binding_queueread-onlyThe parties on the caller team's live deals that are not yet matched to a company in a register, the worklist the dashboard shows behind Match parties to a register. Followed deals come first, then the parties flagged because two or more companies hold the identifier a person entered (flagged_identifier names it), then the parties with candidate companies. Each row names its deal (deal_id, deal_name, deal_followed), its team (team_id, team_name), the party's role and name, whether a person already chose none of the candidates (dismissed), and the candidates, each a company with node_id, label, country_iso3 and up to three identifiers, the LEI first. Pass deal_id to read one deal's parties; a deal outside the caller's team reads as an empty page. Paged with limit and offset; the response carries the exact total. Matching a party happens in the Stonewake dashboard.
deal_bookread-onlyThe deal book of the one team the caller's key reads; every row names that team (team_id, team_name). Without deal_id this lists deals ordered by their ranking window first (financing open, early stage, not confirmed, financing closed, cancelled) and the score inside it unless sort names one column, filterable by stage, window, country_code (ISO country codes), sector, status, eca, eca_named (only deals naming an export credit agency), minimum contract value (min_value_usd), and free text (q); sort is priority (the default, the window order above) or one column that orders the whole filtered book, score, value (the USD value), last_activity, stage (the pipeline order), name or first_seen, with direction desc (the default) or asc and rows without a value last, or latest_update, which ignores the window and orders by the newest dated event, rows without one last, desc only; paged with limit (default 50, maximum 100) and offset, with the exact total. Dismissed deals are excluded unless status asks for them, and the portfolio rows a desk holds back by default (closed, cancelled, older than the stale window of 12 months by default, no movement within the movement hold, own bank, domestic, below the value floor, a market outside the mandate; score_hidden true) are off the page unless include_hidden is true, stale_months and movement_months naming the two age rules in months, and score_own_bank marks the rows where your own bank is a lender. A row carrying merged_into was found to be a duplicate and folded into the deal that field names: read that deal instead, and expect this one to be dismissed. Each row carries its window (score_window and its label), the band word and reason count behind its score (score_band, score_reason_count), the confirmed state over its linked findings (state, state_label), the newest quote backed event date (event_date, null when no source stated one), the lender names on the deal (lenders), and the two derived sentences a desk reads first: angle (why the row is on the list) and ask (what is still to be financed, read from the confirmed state, the window, the agencies and the lenders; a row whose state no source confirmed reads State not confirmed by a source yet), latest_update (the newest event a source dated and confirmed, with its date, a short label naming the confirmed state and the amount only where a quote states it, the state and the finding_id it rests on, null when there is none) and has_unseen_update (true when that event reached the deal after your last open of it in the dashboard, null for an API key, which records no opens). With deal_id (the deal_id field of list rows) it returns one deal in full, with score_reasons, one plain sentence per scoring component saying which fact it matched, alongside parties carrying entity_id and node_id where bound, the cited timeline with press quotes (each entry also carrying the state its quote confirmed, the confirming passage and the event date), lifecycle events, sources each carrying source_tier (1 a primary source, 2 trade press, 3 an aggregator, which is also where an unclassified publisher lands) and its tier_label, the deal summary (summary_lines, three lines generated from the cited findings by fixed rules, not by a model, each with the finding and quote behind every field it states), the briefing (null, or text, drafted_at, drafted_by, which reads model, and sources, a quick summary an AI model drafts from the text of the deal's cited sources with those sources listed by source_id, url, publisher and published_at, only its numbers written in digits checked against that text, null until it is drafted, whenever no sentence passes its check, and when nothing is left once a clause asking the reader to confirm, verify, check or review anything is removed), the analyst's own next_action, and economics.
developmentsread-onlyDated, cited developments surfaced by your team's research runs, the runs of the one team the caller's key reads: grounded findings with a headline, category, verification state, and corroborating source count. Without run_id this is a feed paged with limit (default 25, maximum 100) and offset, with the exact total; sort is recent (default) or score. Each row names the run_id it came from and its team (team_id, team_name); pass run_id to load that whole research run with its grounded findings, press quotes, and cited sources. Another team's run_id answers not found, like an unknown one. A run about a natural person is served only where person data is switched on, and its rows carry no relevance score and are never ordered by one.
entity_risk_profileread-onlyThe caller team's credit-risk view of one company, by its graph node_id (the id search_companies hits carry). Answers one of three honest shapes: not in the portfolio (in_portfolio false), held but not yet assessed (assessment null), or the full current assessment with its status band, score, seen_share, explained_share and reachable_share (the figure the insufficient floor reads), a coverage_line of one to three sentences counting covered signals and gaps with their reasons, and every signal with its state (evidenced, register_quiet, gap, awaiting_bank_input, not_applicable), gap_reason, evidence grade (A to D), evidence value, note, and citation ids. A signal no connected source reaches for the company's jurisdiction is a gap, never not_applicable. A held company also carries entity_class: the class its checks route on (a bank is never scored on corporate distress models) and its source, either your team's analyst override or the register rule that derived it. A sole trader (sole_trader true, a natural person's business by its register's evidence) is never scored: assessment and entity_class are null. Company nodes only; person lookups answer not_found.
exposure_review_historyread-onlyOne exposure's credit review history, newest first, so the first item is the standing review and each later one the review it superseded. Each review carries its disposition (no_action, watch_list, intensified_care or escalated), note, next review date and when it was recorded. The history is append only, and a correction is a newer review. Takes exposure_id, the id of a portfolio_book row (not a node_id). An exposure outside the caller team's book answers not_found. Owners and reviewers are member identities and are not served. Paged with limit and offset; the response carries the exact total.
licensed_factsread-onlyCompany values a data provider the caller's bank licenses stated (North Data), looked up under the bank's own key into its own workspace, with the name, legal form, register and register status, the LEI where stated, the graph node it binds to through a stated identifier, the provider's source page (source_url) and when it was read. Only values read under a licence scope that covers the bank's own systems are served. Filter by node_id or by a German register with its court, for example HRB 12345 Hamburg; page with limit and offset. Looking a company up happens in the Stonewake dashboard.
ownership_chainread-onlyThe upward ownership chains of one company, composed across registers and cited hop by hop, with per register coverage notes. Takes node_id, the graph node id from search_companies hits. threshold is the minimum ownership percentage a chain must keep to be followed, default 25; max_depth caps the number of hops, default and maximum 8. Natural person owners are named only in workspaces where person data is switched on; elsewhere a chain reaching an individual terminates there with a stated terminal reason, and params.include_persons says which applied. Hop values are served verbatim from the registers, never synthesized.
portfolio_bookread-onlyThe monitored book itself: one row per exposure with the team whose book holds it (team_id, team_name), its label, register identifier, entity class (corporate, sovereign_or_public_body, bank, spv or fund, derived from register-stated facts and null when none has been derived yet), desk, current status band, score, completeness, seen_share (the weight share of applicable signals actually observed), explained_share and reachable_share (the observed share of what a connected source can serve, the figure the insufficient floor reads), the top contributing signals with their citation ids, the most recent status change, and the standing credit review (disposition, note, next review date, and whether that date has passed). A sole trader (a natural person's business by its register's evidence) has status sole_trader and no score, coverage, signals or status change: it is never scored. Ordered most severe first (red, amber, then insufficient, not_assessed and sole_trader, then green). Paged with limit and offset; the response carries the exact total. Set include_inactive true to include exposures no longer actively monitored.
portfolio_import_previewread-onlyPreview adding a book of companies to the caller team's monitored portfolio. Pass the book as CSV text whose header is identifier_type,identifier plus, optionally, name, currency, limit_amount and drawn_amount; at most 2,000 rows. Every row is matched by its registry identifier alone, where identifier_type is lei, uk_crn, de_register (register type, number and court, for example HRB 275806 München), us_cik or another national register scheme. The name column is echoed back and never used to match. Each row answers its outcome (add, reactivate, in_book, duplicate, ambiguous, unresolved, invalid), a reason, and the matched node_id and register name. Rows are paged with limit and offset in file order; counts and total always cover the whole file, so page on until offset reaches total. Nothing is written, and applying an import happens in the Stonewake dashboard.
portfolio_overviewread-onlyCurrent health of the monitored portfolio: how many exposures sit in each status band (green, amber, red, insufficient, not_assessed) and how many are sole traders (sole_trader: a natural person's business, never scored, so it has no band and no transitions), the active exposure count, the number of transitions in the last 30 days and how many of them are status changes (an exposure's first assessment is an addition to the book, a transition but not a change), and how many exposures have an overdue credit review. Optionally pass transitions_since (an ISO 8601 date-time) to also list the individual status transitions since that moment, newest first, each with its cause: the signals whose change moved the status, their citation ids, and the register record behind the lead one. Start here for questions like how the book is doing or what changed since a date and why.
portfolio_reviews_dueread-onlyThe credit reviews of the monitored book that need attention today (UTC), the overdue ones, whose standing next review date has passed, and those falling due within window_days (14), today included, each group soonest first. Every row names its exposure, team, company label and node_id, current status band, disposition and next review date. Each group lists at most 50 rows, while overdue_total and due_soon_total count every one; never_reviewed counts the active exposures with no review yet. Exposures no longer actively monitored are never listed. Owners are member identities and are not served.
report_downloadsread-onlyWhere to download the PDF documents of one subject, for filing them into a document library such as SharePoint. A deal (the id deal_book serves) has its deal report and committee pack, a counterparty (the registry id company_profile speaks) its counterparty report and pack, a company (a graph node id from search_companies) its company profile. The tool first reads the subject, so an id the key cannot read answers not found, then returns each document's /v1 path. The documents are fetched with the same key, which needs the reports scope. No document is generated by this call.
sanctions_person_candidatesread-onlyReview candidates for the natural persons that public registers link to the companies on the caller's team's book (officers, shareholders, beneficial owners), matched by name and by the list's own aliases against the person designations on the six official sanctions lists (EU Financial Sanctions Files, UK Sanctions List, OFAC SDN, OFAC non SDN, the Swiss sanctions list of SECO and the UN Security Council Consolidated List). A date of birth or nationality both sides state that contradicts removes a candidate. A candidate is review material, never a match, and sets no portfolio status or score; each row names the list, the designation reference, the listed names, the fields that matched (matched_on) and those that narrowed (narrowed_on), a link to the official file, and status open or confirmed (an analyst confirmed it on the dashboard, where decisions are made). The result also carries lists, one entry per list with its reading, Checked or Not checked, the reason where it is not checked, its edition and the time of its last check, lists_not_checked, their count, and persons_compared, the count of register persons that were compared. A list that is switched off or was not checked within the last 48 hours reads Not checked, so an empty page says only that no open or confirmed candidate exists among the register persons compared, and it says nothing while lists_not_checked is above 0. Rejected candidates are not served, and a person whom no connected register links to the book is not compared. Paged with limit (default 50, maximum 100) and offset, with the exact total. Available only in workspaces where person data is switched on; elsewhere it answers not found.
scoring_rubricread-onlyHow scores are produced for the caller's team: the live scoring configuration (signal weights, status thresholds, evidence-coverage floor; version null means the built-in desk default is active) together with the team's stored rubric versions, newest first. Use this to interpret the status bands and scores that the portfolio and risk tools return.
screening_lookupread-onlyScreenings run for the caller's team, covering organizations and countries, and natural persons only in workspaces where person data is switched on (elsewhere a person screening answers not_found and the person filter an empty page); each row names its team (team_id, team_name; both null on a workspace wide screening every team reads). Without screening_id this lists screening runs newest first, filterable by subject_type (entity, country or person), by the subject's ids (node_id for a company from search_companies, entity_id for a registry institution from company_profile, iso3 for a country), or by subject name; paged with limit (default 20, maximum 100) and offset, and the response carries the exact total. With screening_id it returns that one run in full. First comes official_lists, a deterministic comparison of the subject with each official sanctions list it names, made when the run is read and not on the screening day, one status per list (listed only on an identifier the list itself states, name match awaiting review, name match reviewed, no entry found, or not checked with the reason; a name match is never a hit, names match exactly so other spellings are not found, and a list that was not checked never reads as clear). Each entry of an entity, vessel or aircraft carries published_fields, the fields its list publishes on it, verbatim, each with the path where the list states it; the fields that can state a natural person (free text, other parties, contact lines) are served only in workspaces where person data is switched on, elsewhere they are withheld and published_note says so. Then the adverse media verdicts per category with rationale and review state, the drafted summary, grounded findings with their press quotes, and the sources behind them. A person screening returns official_lists and its grounded findings with their sources and nothing else, never a verdict, an assessment, a drafted summary or any score, rating or ranking of the person. Findings quote reported coverage, not established fact.
search_companiesread-onlyFind a company by name or identifier. The query can be a scheme-prefixed identifier such as lei:5493001KJTIIGC8Y1R12, a bare registration number (CRN, CIK, LEI and similar shapes), or a company name (matched exact, then prefix, then token, then fuzzy). Hits carry the graph node_id that entity_risk_profile takes, plus jurisdiction, status fields, and register identifiers. connected_sources names the registers an empty result was searched against. In workspaces where person data is switched on, the natural persons the registers name are found too, after every company, with node_type person and score null; they are never scored.
search_stonewake_docsread-onlySearch the Stonewake API documentation at docs.stonewake.ai: authentication and the swk_live_ key format, quickstart, key management, error bodies, status codes, and rate limits. Deterministic text search over the official pages; returns the best matching excerpts with each page's URL. This tool needs no Stonewake API key.
tender_export_previewread-onlyPreview a tender portal export for the caller team's own tender notices. Pass the file the portal exported (CSV, XLSX or the XML of one eForms notice, at most 700,000 bytes) base64 encoded in content_base64 and its name in file_name; the extension must match the content. Name the portal the file was exported from in source_portal; uploads from dtvp, vergabe24, dab, dtad, had and vergabe_saarland are not accepted for now. The header is matched against the known portal profiles; when none matches, the answer says mapping_required with the file's columns and the available_fields, and a second call passes mapping, an object from column name to field. Every row answers its outcome (new, update, unchanged, duplicate, skipped, invalid), the reference that identifies it and a reason; unknown columns are listed and never read, and counters name every dropped value. Rows are paged with limit and offset in file order; counts and total cover the whole file. Nothing is written, and confirming an upload happens in the Stonewake dashboard.
tender_matchesread-onlyThe public procurement notices the caller team's tender profiles matched, newest first, one row per procedure citing its newest matching notice. Each match explains every criterion its profile sets (CPV code, NUTS region, value band in EUR, keyword, procedure type, buyer legal type, notice kind, days to the tender deadline) with the outcome hit, the notice field it read, what the notice states there and what the profile asks, and carries the notice itself with its source_url and record_id as the citation. A notice is a match only when it hits every criterion its profile sets, so an unknown is never a match. Winners are never shown, and a buyer whose legal type may name a natural person is withheld (buyer_withheld). Filter by status (new, dismissed or in_deal_book) or profile_id, page with limit and offset, or pass match_id alone to read one match. A match outside the caller team answers not_found. A match can also cite a notice of the team's own portal lane (portal_notice, an export the bank uploaded or an alert of one of its portal accounts), chosen by a profile or by the portal's own saved search (decided_by portal_search). Pass deal_id alone for the matches an analyst took into that deal of the Deal Book (status in_deal_book), where the notice is cited on the deal.
tender_profilesread-onlyThe caller team's live tender profiles by name, each with what it asks of a public procurement notice (CPV codes and NUTS regions with everything below them, a value band in EUR, keywords matched as whole words in the title or description, procedure types, buyer legal types, notice kinds and the minimum days to the tender deadline), its use case (finance_project or bank_as_bidder) and whether it is active. An empty list or a null bound is a criterion the profile does not set. Paged with limit and offset; the response carries the exact total.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "ai.stonewake/stonewake",
  "title": "Stonewake",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://mcp.stonewake.ai/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "isSecret": true,
          "isRequired": true,
          "description": "Bearer <workspace API key>. Listing the tools and the documentation search tool work without one; every tool that reads workspace data requires it. Access is by arrangement, there is no self-serve signup.",
          "placeholder": "Bearer swk_live_..."
        }
      ]
    }
  ],
  "version": "1.0.0",
  "websiteUrl": "https://docs.stonewake.ai/mcp",
  "description": "Seventeen read only tools over cited company, portfolio and country data for bank credit desks."
}