Skip to content
Official MCP RegistryListed

Stonewake

Part ofStonewakeMCP server

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

First seen 2 Oct 2026. Evidence as of 7 Oct 2026.

23
Tools
From an anonymous probe
1
Source listings
Each with its own history
11
Recorded changes
Since first seen

Tools

ToolDescriptionBehaviour
company_eventsThe 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 complete as of that lookup alone), and its state is not_in_portfolio, with no timestamp, for a company outside your workspace's active portfolio, and not_looked_up, with no timestamp, in any workspace where the lookups are not switched on; show its note beside the feed.Read-only
company_financialsEvery 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.Read-only
company_financingThe 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.Read-only
company_networkThe 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.Read-only
company_profileOne 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.Read-only
company_recordsThe 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.Read-only
company_regional_contextOfficial 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, 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.Read-only
company_sector_contextOfficial 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.Read-only
country_profileCountry 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. Indicator and dataset entries carry attribution fields such as attribution_text stating the data licence terms; preserve that attribution whenever values are quoted onward.Read-only
deal_bookThe 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: 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 and whenever no sentence passes its check), the analyst's own next_action, and economics.Read-only
developmentsDated, 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.Read-only
entity_risk_profileThe 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. Company nodes only; person lookups answer not_found.Read-only
exposure_review_historyOne 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.Read-only
ownership_chainThe 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.Read-only
portfolio_bookThe 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). Ordered most severe first (red, amber, insufficient, not_assessed, green). Paged with limit and offset; the response carries the exact total. Set include_inactive true to include exposures no longer actively monitored.Read-only
portfolio_import_previewPreview 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.Read-only
portfolio_overviewCurrent health of the monitored portfolio: how many exposures sit in each status band (green, amber, red, insufficient, not_assessed), 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.Read-only
portfolio_reviews_dueThe 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.Read-only
sanctions_person_candidatesReview 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 five official sanctions lists (EU Financial Sanctions Files, UK Sanctions List, OFAC SDN, OFAC non SDN and the Swiss sanctions list of SECO). 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.Read-only
scoring_rubricHow 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.Read-only
screening_lookupScreenings 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.Read-only
search_companiesFind 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.Read-only
search_stonewake_docsSearch 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.Read-only

Change history

  1. search_companies: description changed (+"In workspaces where person data is switched on, the natural" +"the registers name" +"found too, after every company, with node_type person and score null; they are")
  2. screening_lookup: input schema changed
  3. screening_lookup: description changed (+"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);" +"(entity, country" +"person),")
  4. sanctions_person_candidates: description changed (+"five" +"SDN, OFAC non" +"the Swiss sanctions list of SECO).")
  5. ownership_chain: description changed (+"Natural person" +"named only in workspaces where person data is switched on; elsewhere" +"reason, and params.include_persons says which applied.")
  6. developments: description changed (+"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.")
  7. company_network: tool added
  8. screening_lookup: description changed (+"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 withheld here and published_note says so.")
  9. company_sector_context: tool added
  10. company_regional_context: tool added
  11. company_events: description changed (+"your workspace last looked" +"alone), and its state is not_in_portfolio, with no timestamp, for a company outside your workspace's active portfolio, and not_looked_up, with no timestamp, in any workspace where the lookups are not switched on;" -"were last looked")
Source listings
SourceListingFirst seenLast seenVersions
Official MCP Registryai.stonewake/stonewake2 Oct 20267 Oct 20261