Skip to main content
Glama

Deal book

deal_book
Read-onlyIdempotent

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 set, cancelled) and the score inside it unless sort names one column, filterable by stage, window, country_code (ISO 3166-1 alpha-3 codes in upper case, such as DEU), region (the desk region of the deal's country), sector, status, eca, eca_named (only deals naming an export credit agency), minimum contract value (min_value_usd, a finite number), free text (q) and team (one team you read by its id, or all; a key reads its own team); every closed value is case exact and an unknown one is refused with the allowed values; 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 (financing set, 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 where the rubric holds such rows; score_hidden true) are off the page unless include_hidden is true, stale_months and movement_months naming the two age rules in months, outside_markets_held true where a market outside the mandate holds a row back, 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. from_pool marks a deal of the shared deal pool, whose facts and research Stonewake keeps once for every workspace while its status and dismissal are your team's own, and dismissed_in_pool one Stonewake dismissed in the pool (merged into another deal, or set aside, for example as historical), which reads dismissed in every workspace and can be neither reopened nor followed, so neither it nor a merged row lists a reopen_suggested event. Your team's status, dismissal and next step on a merged row carry to the deal it was merged into. 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 (timeline_limit entries, default 50, at most 200, each 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, and reliability with reliability_label where a public authority names the outlet as part of a disinformation network (shown, never counted toward confirmation; a deal cites only pages naming its project or a party), 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, its numbers written in digits and its names 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.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "deal_book"
  }
}

Input Schema

NameRequiredDescriptionDefault
qNoEvery word must match; a quoted phrase matches as written.
ecaNoKeep only deals naming this export credit agency.
sortNoThe order, default priority (the ranking window first). latest_update orders by the newest dated event, whatever the window. Any other value orders the whole filtered book by that one column.
teamNoOne team id the caller reads (GET /v1/me lists them), or all; a key reads its one team, and another team answers forbidden.
limitNoPage size, default 50, maximum 100.
stageNoKeep only these lifecycle stages.
offsetNoRows to skip, default 0.
regionNoKeep only deals whose country lies in these regions: europe, turkey, cis_central_asia, gcc, middle_east, north_africa, sub_saharan_africa, asia, americas.
sectorNoKeep only these sectors.
statusNoKeep only these statuses; dismissed deals appear only when asked for here.
windowNoKeep only these ranking windows.
deal_idNoA deal_id from the list; when present the list arguments are not used.
directionNodesc (the default) or asc. The priority and latest_update orders read desc only.
eca_namedNoKeep only deals naming an export credit agency.
country_codeNoKeep only deals in these countries, each an ISO 3166-1 alpha-3 code in upper case, such as DEU (two letter codes are refused).
min_value_usdNoKeep only deals at or above this contract value in USD.
include_hiddenNoAlso serve the rows a desk holds back by default (financing set, cancelled, older than the stale window, own bank, domestic); off by default.
timeline_limitNoWith deal_id, the timeline entries to return, default 50, maximum 200.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / country_code / description
      Previous value: -"Keep only deals in these ISO 3166-1 alpha-3 country codes."New value: +"Keep only deals in these countries, each an ISO 3166-1 alpha-3 code in upper case, such as DEU (two letter codes are refused)."
    • addedInput schema / properties / country_code / items / enum
      Added value: +[
      +  "ABW",
      +  "AFG",
      +  "AGO",
      +  "AIA",
      +  "ALA",
      +  "ALB",
      +  "AND",
      +  "ARE",
      +  "ARG",
      +  "ARM",
      +  "ASM",
      +  "ATA",
      +  "ATF",
      +  "ATG",
      +  "AUS",
      +  "AUT",
      +  "AZE",
      +  "BDI",
      +  "BEL",
      +  "BEN",
      +  "BES",
      +  "BFA",
      +  "BGD",
      +  "BGR",
      +  "BHR",
      +  "BHS",
      +  "BIH",
      +  "BLM",
      +  "BLR",
      +  "BLZ",
      +  "BMU",
      +  "BOL",
      +  "BRA",
      +  "BRB",
      +  "BRN",
      +  "BTN",
      +  "BVT",
      +  "BWA",
      +  "CAF",
      +  "CAN",
      +  "CCK",
      +  "CHE",
      +  "CHL",
      +  "CHN",
      +  "CIV",
      +  "CMR",
      +  "COD",
      +  "COG",
      +  "COK",
      +  "COL",
      +  "COM",
      +  "CPV",
      +  "CRI",
      +  "CUB",
      +  "CUW",
      +  "CXR",
      +  "CYM",
      +  "CYP",
      +  "CZE",
      +  "DEU",
      +  "DJI",
      +  "DMA",
      +  "DNK",
      +  "DOM",
      +  "DZA",
      +  "ECU",
      +  "EGY",
      +  "ERI",
      +  "ESH",
      +  "ESP",
      +  "EST",
      +  "ETH",
      +  "FIN",
      +  "FJI",
      +  "FLK",
      +  "FRA",
      +  "FRO",
      +  "FSM",
      +  "GAB",
      +  "GBR",
      +  "GEO",
      +  "GGY",
      +  "GHA",
      +  "GIB",
      +  "GIN",
      +  "GLP",
      +  "GMB",
      +  "GNB",
      +  "GNQ",
      +  "GRC",
      +  "GRD",
      +  "GRL",
      +  "GTM",
      +  "GUF",
      +  "GUM",
      +  "GUY",
      +  "HKG",
      +  "HMD",
      +  "HND",
      +  "HRV",
      +  "HTI",
      +  "HUN",
      +  "IDN",
      +  "IMN",
      +  "IND",
      +  "IOT",
      +  "IRL",
      +  "IRN",
      +  "IRQ",
      +  "ISL",
      +  "ISR",
      +  "ITA",
      +  "JAM",
      +  "JEY",
      +  "JOR",
      +  "JPN",
      +  "KAZ",
      +  "KEN",
      +  "KGZ",
      +  "KHM",
      +  "KIR",
      +  "KNA",
      +  "KOR",
      +  "KWT",
      +  "LAO",
      +  "LBN",
      +  "LBR",
      +  "LBY",
      +  "LCA",
      +  "LIE",
      +  "LKA",
      +  "LSO",
      +  "LTU",
      +  "LUX",
      +  "LVA",
      +  "MAC",
      +  "MAF",
      +  "MAR",
      +  "MCO",
      +  "MDA",
      +  "MDG",
      +  "MDV",
      +  "MEX",
      +  "MHL",
      +  "MKD",
      +  "MLI",
      +  "MLT",
      +  "MMR",
      +  "MNE",
      +  "MNG",
      +  "MNP",
      +  "MOZ",
      +  "MRT",
      +  "MSR",
      +  "MTQ",
      +  "MUS",
      +  "MWI",
      +  "MYS",
      +  "MYT",
      +  "NAM",
      +  "NCL",
      +  "NER",
      +  "NFK",
      +  "NGA",
      +  "NIC",
      +  "NIU",
      +  "NLD",
      +  "NOR",
      +  "NPL",
      +  "NRU",
      +  "NZL",
      +  "OMN",
      +  "PAK",
      +  "PAN",
      +  "PCN",
      +  "PER",
      +  "PHL",
      +  "PLW",
      +  "PNG",
      +  "POL",
      +  "PRI",
      +  "PRK",
      +  "PRT",
      +  "PRY",
      +  "PSE",
      +  "PYF",
      +  "QAT",
      +  "REU",
      +  "ROU",
      +  "RUS",
      +  "RWA",
      +  "SAU",
      +  "SDN",
      +  "SEN",
      +  "SGP",
      +  "SGS",
      +  "SHN",
      +  "SJM",
      +  "SLB",
      +  "SLE",
      +  "SLV",
      +  "SMR",
      +  "SOM",
      +  "SPM",
      +  "SRB",
      +  "SSD",
      +  "STP",
      +  "SUR",
      +  "SVK",
      +  "SVN",
      +  "SWE",
      +  "SWZ",
      +  "SXM",
      +  "SYC",
      +  "SYR",
      +  "TCA",
      +  "TCD",
      +  "TGO",
      +  "THA",
      +  "TJK",
      +  "TKL",
      +  "TKM",
      +  "TLS",
      +  "TON",
      +  "TTO",
      +  "TUN",
      +  "TUR",
      +  "TUV",
      +  "TWN",
      +  "TZA",
      +  "UGA",
      +  "UKR",
      +  "UMI",
      +  "URY",
      +  "USA",
      +  "UZB",
      +  "VAT",
      +  "VCT",
      +  "VEN",
      +  "VGB",
      +  "VIR",
      +  "VNM",
      +  "VUT",
      +  "WLF",
      +  "WSM",
      +  "YEM",
      +  "ZAF",
      +  "ZMB",
      +  "ZWE",
      +  "XKX"
      +]
    • addedInput schema / properties / country_code / items / maxLength
      Added value: +128
    • addedInput schema / properties / country_code / items / minLength
      Added value: +1
    • removedInput schema / properties / country_code / items / pattern
      Removed value: -"^[A-Za-z]{3}$"
  2. Changed12 schema fields changed
    • changedInput schema / properties / country_code / description
      Previous value: -"Keep only deals in these ISO country codes."New value: +"Keep only deals in these ISO 3166-1 alpha-3 country codes."
    • removedInput schema / properties / country_code / items / maxLength
      Removed value: -128
    • removedInput schema / properties / country_code / items / minLength
      Removed value: -1
    • addedInput schema / properties / country_code / items / pattern
      Added value: +"^[A-Za-z]{3}$"
    • changedInput schema / properties / q / description
      Previous value: -"Free-text filter over deal names and summaries."New value: +"Every word must match; a quoted phrase matches as written."
    • addedInput schema / properties / region / items / enum
      Added value: +[
      +  "europe",
      +  "turkey",
      +  "cis_central_asia",
      +  "gcc",
      +  "middle_east",
      +  "north_africa",
      +  "sub_saharan_africa",
      +  "asia",
      +  "americas"
      +]
    • addedInput schema / properties / sector / items / enum
      Added value: +[
      +  "energy_power",
      +  "renewables",
      +  "oil_gas",
      +  "mining_metals",
      +  "transport_rail",
      +  "aviation",
      +  "maritime_ports",
      +  "telecom_digital",
      +  "water_environment",
      +  "healthcare",
      +  "industrial_plant",
      +  "defence",
      +  "agri_food",
      +  "social_infra",
      +  "other",
      +  "power_grid",
      +  "conventional_power",
      +  "hydrogen_transition",
      +  "transport",
      +  "digital_infra",
      +  "office",
      +  "retail",
      +  "logistics",
      +  "residential",
      +  "hotel",
      +  "data_center",
      +  "development_land",
      +  "mixed_use"
      +]
    • addedInput schema / properties / stage / items / enum
      Added value: +[
      +  "unknown",
      +  "signal",
      +  "planned",
      +  "marketed",
      +  "tender",
      +  "under_offer",
      +  "awarded",
      +  "exchanged",
      +  "mandated",
      +  "completed",
      +  "financing",
      +  "refinancing",
      +  "eca_cover",
      +  "fid",
      +  "closed",
      +  "dropped"
      +]
    • addedInput schema / properties / status / items / enum
      Added value: +[
      +  "new",
      +  "tracking",
      +  "dismissed"
      +]
    • addedInput schema / properties / team
      Added value: +{
      +  "description": "One team id the caller reads (GET /v1/me lists them), or all; a key reads its one team, and another team answers forbidden.",
      +  "maxLength": 16,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedInput schema / properties / window / description
      Previous value: -"Keep only these ranking windows: financing_open, early_stage, not_confirmed, financing_closed, cancelled."New value: +"Keep only these ranking windows."
    • addedInput schema / properties / window / items / enum
      Added value: +[
      +  "financing_open",
      +  "early_stage",
      +  "not_confirmed",
      +  "financing_closed",
      +  "cancelled"
      +]
  3. Changed13 schema fields changed
    • addedInput schema / properties / country_code / items / maxLength
      Added value: +128
    • addedInput schema / properties / country_code / items / minLength
      Added value: +1
    • changedInput schema / properties / deal_id / description
      Previous value: -"A deal_id from the list; when present the other arguments are not used."New value: +"A deal_id from the list; when present the list arguments are not used."
    • addedInput schema / properties / region
      Added value: +{
      +  "description": "Keep only deals whose country lies in these regions: europe, turkey, cis_central_asia, gcc, middle_east, north_africa, sub_saharan_africa, asia, americas.",
      +  "items": {
      +    "maxLength": 128,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / sector / items / maxLength
      Added value: +128
    • addedInput schema / properties / sector / items / minLength
      Added value: +1
    • addedInput schema / properties / stage / items / maxLength
      Added value: +128
    • addedInput schema / properties / stage / items / minLength
      Added value: +1
    • addedInput schema / properties / status / items / maxLength
      Added value: +128
    • addedInput schema / properties / status / items / minLength
      Added value: +1
    • addedInput schema / properties / timeline_limit
      Added value: +{
      +  "description": "With deal_id, the timeline entries to return, default 50, maximum 200.",
      +  "maximum": 200,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / window / items / maxLength
      Added value: +128
    • addedInput schema / properties / window / items / minLength
      Added value: +1
  4. Changed1 schema field changed
    • changedInput schema / properties / include_hidden / description
      Previous value: -"Also serve the rows a desk holds back by default (closed, cancelled, older than the stale window, own bank, domestic); off by default."New value: +"Also serve the rows a desk holds back by default (financing set, cancelled, older than the stale window, own bank, domestic); off by default."
  5. Changed1 schema field changed
    • addedInput schema / properties / offset / maximum
      Added value: +9223372036854776000
  6. Changed3 schema fields changed
    • addedInput schema / properties / direction
      Added value: +{
      +  "description": "desc (the default) or asc. The priority and latest_update orders read desc only.",
      +  "enum": [
      +    "desc",
      +    "asc"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / sort / description
      Previous value: -"Ranking, default score."New value: +"The order, default priority (the ranking window first). latest_update orders by the newest dated event, whatever the window. Any other value orders the whole filtered book by that one column."
    • changedInput schema / properties / sort / enum
      Previous value: -[
      -  "score",
      -  "last_activity",
      -  "value",
      -  "first_seen",
      -  "latest_update"
      -]New value: +[
      +  "priority",
      +  "score",
      +  "value",
      +  "last_activity",
      +  "stage",
      +  "name",
      +  "first_seen",
      +  "latest_update"
      +]
  7. Changed1 schema field changed
    • changedInput schema / properties / sort / enum
      Previous value: -[
      -  "score",
      -  "last_activity",
      -  "value",
      -  "first_seen"
      -]New value: +[
      +  "score",
      +  "last_activity",
      +  "value",
      +  "first_seen",
      +  "latest_update"
      +]
  8. First observed

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only, idempotent, non-destructive safety profile, and the description goes well beyond them: it explains the portfolio rows held back by default and the two age rules, that merged_into rows should be read via the target deal, that dismissed_in_pool cannot be reopened or followed, that your team's status carries across merges, and that has_unseen_update is null for API keys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The scope statement is front-loaded, but the body is two enormous run-on sentences that pack filtering, sorting, hidden-row rules, merge semantics and every return field into dense prose. Almost every clause carries information, yet the reader must re-parse to extract the sort and pagination rules.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter tool with no output schema, the description is unusually complete: it enumerates the row fields (window, band, state, event_date, lenders, angle, ask, latest_update) and the deep-record payload (score_reasons, timeline, source_tier, reliability, summary_lines, briefing, next_action, economics) so an agent knows what comes back in each mode.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so a 3 would be the floor, but the description adds real meaning: sort is priority (window order) or exactly one column ordering the whole filtered book, direction is desc-only for priority and latest_update with null-valued rows last, country_code is ISO alpha-3 upper case, region is the desk region of the deal's country, and team is limited to what a key reads.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a concrete verb+resource: 'the deal book of the one team the caller's key reads', and distinguishes its two modes (list without deal_id, full record with deal_id). It never names a sibling tool such as portfolio_book, so the agent must infer the boundary itself, which keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit routing between its own modes ('Without deal_id this lists deals...', 'With deal_id ... returns one deal in full') plus default behaviors (dismissed excluded unless status asks, hidden rows off unless include_hidden, priority ordering by default). It stops short of telling the agent when to reach for this vs. portfolio_book or deal_binding_queue.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources