SavaNet SavaNetMCP Connector Reference

SavaNet MCP Connector Reference

MCP Information and Tool Reference for Implementers and Agents

SavaNet LLC, September 22nd, 2026

About this document

This document describes the tools exposed by the SavaNet MCP connector, which delivers SavaNet standardized financial data on U.S. and international public companies to any application that speaks the Model Context Protocol. It is written for two readers at once.

Read the two sections that follow, Connecting and Concepts, before the individual tool entries. Almost every question about a parameter is answered there rather than in the tool entry itself. Typical workflows then shows how the tools compose, and the tool reference gives the detail for each one.

Field names, parameter names, tool names, and literal values appear in a monospaced face throughout.

Connecting

ItemValue
Endpointhttps://www.savanet.com/claude/mcp
TransportModel Context Protocol over HTTPS
AuthenticationMicrosoft Entra. Personal Microsoft accounts are also accepted.
EntitlementsThe authenticated identity determines which model source organizations are visible. Call get_diagnostics to see the resolved profile and the entitled organization list.

A connected client sees nine tools. Tool descriptions and parameter schemas are published by the connector itself, so a host application always has the current definitions without configuration.

Custom Claude Connector

The SavaNet MCP can be accessed as a custom Claude Connector following these steps:

  1. Press + Add in Customize dialog with Connectors selected to display
    Claude connector dialog screenshot
  2. In the dialog that appears, give the connector a name and enter https://www.savanet.com/claude/mcp as the MCP server url and press Continue
    Claude connector dialog screenshot
  3. In the next dialog use these default connector settings and click on Add button at bottom of dialog
    Claude connector dialog screenshot
  4. Then sign in using your Microsoft Entra ID Log-In which is used by SavaNet to match up with your data entitlements.

Concepts

Company identifiers

SavaNet data tools take identifiers rather than company names. Two identifiers are accepted everywhere a company is named, and both are returned in every response regardless of which one was supplied.

  1. figi — the FIGI security identifier, for example BBG000B9XRY4.
  2. bloomberg_id — the Bloomberg composite identifier, for example MSFT US. Where the country code is omitted, US is assumed. This is the identifier required by the SavaNet for Excel formulas.

Resolve a name to either identifier with search_companies. When both are supplied to a data tool, figi is the one used.

MAICS Tags and measures

A MAICS Tag (Modeling and Analytics Information Classification System) is the identifier of a single financial measure, for example NetRevenue, EBITDAMargin, or EVEBITDA. The catalog currently holds 178 measures across eleven categories, and list_maics_measures returns it along with each measure’s name, category, data type, and definition.

One distinction drives which tool a measure is retrieved with.

  1. Measures of category SECURITY_INFO are non-periodic attributes of a company or its model, including CompanyName, CIK, TickerSymbol, ERICSCode, and CurrencyCode. They carry no period and are retrieved with get_maics_info.
  2. Every other category is periodic and is retrieved with get_maics_data, which requires a period.

Periods

Periodic requests take one or more period strings in the following formats.

FormatMeaning
FY-YYYYFull fiscal year, for example FY-2024. Forecast years are requested the same way.
Q#-YYYYFiscal quarter, for example Q3-2025.
P4QTrailing twelve months through the most recent reported quarter.
L4QLast four reported quarters.
QTDQuarter to date.

Scaling and currency

Measures of data type Monetary and PerShare are returned unscaled in USD. These are raw amounts rather than millions, so annual revenue for a large company is returned as 245122000000 rather than 245122. The same convention applies to values used in a screen filter, where a ten billion dollar market capitalization floor is sent as 10000000000. Ratio and percentage measures are already unscaled and are sent and returned as they are.

ERICS industry classification

ERICS (Equity Research and Investment Classification System) is SavaNet’s own global industry classification, designed around the comparison groups an analyst actually screens and values against. It has four nested levels, and a code is simply a prefix of the level below it.

LevelCode lengthGroupsExample
Economic Sector2 digits1070 Health Care
Research Group4 digits327030 Commercial Biopharmaceuticals
Industry Group6 digits99703010
Comparison Group8 digits26070301010 Diversified Pharmaceuticals

search_companies returns each company’s 8-digit comparison-group code as erics_code, which can be passed straight to screen_companies as an erics_codes filter. Prefix matching means a shorter code screens a broader universe. get_erics_info returns the full reference, including definitions, alternate names, and the business classification flags for ESG Exclusion, Non-Shariah, REIT, Holding Companies, and Pre-Commercial.

Model sources and entitlements

Every model in SavaNet belongs to a source organization, which varies depending on user entitlements. Typically for paid subscribers the get_maics_data, get_maics_info and screen_companies tools will default to return data from the “SavaNet” standardized models as the source, and other network clients will default to “Company” as the source, meaning values as filed in company reports. The Company source covers only US companies with less detail than the SavaNet models, so if Company is specifically provided as the Source for a request a user may get different or no response than if SavaNet is provided as the requested source.

Passing the source name of a different organization, such as a client’s own organization, will return values published by a member of that source organization published from SavaNet for Excel. A source the authenticated user is not entitled to is refused without a call to SavaNet, and the refusal returns the exact list of organizations that user is entitled to, so no guessing is required. get_diagnostics reports the same list as entitled_orgs.

Per-call limits

ToolLimits
search_companies20 queries per call, 1 to 100 companies returned per query
get_maics_data50 identifiers, 10 MAICS Tags, 10 periods, and identifiers × tags × periods ≤ 1000
get_maics_info50 identifiers, 10 MAICS Tags
get_price_data10 companies, 10 years of history
screen_companies1 to 1000 companies returned, one index per call

Typical workflows

Company financials

  1. Resolve the company with search_companies and take figi or bloomberg_id from the row you confirmed.
  2. Find the measures you need with list_maics_measures, filtered by category when you know it.
  3. Retrieve the values with get_maics_data for periodic measures, or get_maics_info for SECURITY_INFO attributes.

Peer screen and comparison

  1. Identify the industry with get_erics_info, or take erics_code from a search_companies result for the bellwether company.
  2. Run screen_companies with that code, a country or index filter, and any measure criteria.
  3. Pull the comparison measures for the returned companies with a single bulk get_maics_data call.

Building in Excel

  1. Retrieve the add-in reference once per session with get_savanet_excel_addin_guide.
  2. While working in Excel, an agent can either retrieve data via the MCP and paste into Excel or write SAVAFIN, SAVADATA, and SAVAINFO formulas using bloomberg_id, so the workbook values stay live rather than holding pasted values.

Tools at a glance

ToolPurpose
1. search_companiesResolve names, tickers, and former names to identifiers and ERICS classification
2. get_maics_dataPeriodic financial data for companies, measures, and periods
3. get_maics_infoNon-periodic company attributes, the SECURITY_INFO measures
4. get_price_dataHistorical prices and dividends
5. list_maics_measuresThe measure catalog and its MAICS Tags
6. screen_companiesScreen the universe on industry, country, index, and measure criteria
7. get_erics_infoThe ERICS industry classification reference
8. get_savanet_excel_addin_guideSyntax reference for the SavaNet for Excel functions
9. get_diagnosticsServer build, authenticated identity, and entitlements

1. search_companies

a. Description

Resolves company names, tickers, or former names to standardized identifiers, being figi, ticker, bloomberg_id, and country_code, plus ERICS classification. This is normally the first call in a SavaNet workflow, because the data tools take identifiers rather than names.

Every returned company carries a match_type describing how it matched. Results are grouped by match type, strongest first.

match_typeMeaningExample
ticker_exactThe query equals the tickerMSFT → Microsoft Corp
name_exactThe query equals the whole company nameMicrosoft → Microsoft Corp
aliasThe query equals a former or alternate nameGoogle → Alphabet Inc
word_exactThe query matches one or more complete words in the nameMicro → Advanced Micro Devices Inc
word_prefixA word starts with the query, and the query stops mid-wordMicro → Microsoft Corp
infixThe query appears mid-word. Returned only where nothing stronger matchedApple → Pineapple Financial Inc

The first three match types identify a company unambiguously. For word_exact and weaker, ordering is positional rather than by company size, meaning an earlier match within the name ranks first, so confirm the company by ticker or country, or re-query with a more specific or legal name, rather than taking the first row. Names are normalized for punctuation, casing, and legal suffixes before matching, so The Coca-Cola Company, Coca Cola, and coca-cola all resolve to the same company.

b. Parameters

ParameterTypeRequiredDefaultDescription
querystringyes—Company name(s), ticker(s), or former name(s) to resolve. Pipe-separate for bulk lookup, for example Apple|Microsoft|Alphabet, to a maximum of 20 queries per call. Each query returns its own result set keyed by the query string. A distinctive or legal name gives the most precise hit. A query under three characters is matched against tickers only.
limitintegerno10Maximum companies returned per query, from 1 to 100. total_matches reports the full match count regardless of this value.
country_codesstringnonullISO 3166-1 alpha-2 country codes, comma-separated, for example US or US,CA, restricting results to companies listed in those countries. Use it to disambiguate a name that resolves across several markets.

c. Response

Results are nested per query. The response holds a results array with one entry per query, echoing the query string and carrying its own companies list, so a bulk lookup returns parallel per-query result sets rather than one flat list.

{
  "results": [
    {
      "query": "Google",
      "companies": [
        {
          "name": "Alphabet Inc",
          "figi": "BBG009S3NB30",
          "ticker": "GOOGL",
          "bloomberg_id": "GOOGL US",
          "country_code": "US",
          "match_type": "alias",
          "matched_on": "Google",
          "erics_code": "95102010"
        }
      ],
      "total_matches": 1
    }
  ],
  "summary": { "queries_requested": 1, "queries_matched": 1 }
}
FieldNotes
nameCommon name as stored
figiFIGI identifier
tickerPrimary trading symbol
bloomberg_idBloomberg composite identifier, for example GOOGL US. Null where none is assigned
country_codeISO 3166-1 alpha-2 country of listing
match_typeHow the row matched, ordered as described above
matched_onThe stored string that produced the match, being the alias entry for an alias match and the company name otherwise. It shows the caller why a row was returned
erics_code8-digit ERICS comparison-group code. Null where the company is unclassified
total_matchesFull match count for the query, before limit

Compare total_matches with the number of rows returned to see whether results were cut off, and narrow the query if they were. A query with no matches returns an empty companies array and is not counted in summary.queries_matched.

The identifiers returned here are the inputs to the rest of the connector.

  1. figi or bloomberg_id for get_maics_data and get_maics_info. Either works.
  2. bloomberg_id for the SAVA* Excel formulas, which require it.
  3. erics_code as an erics_codes filter in screen_companies. Call get_erics_info for what a code means.
  4. Market capitalization, and every other financial measure, come from get_maics_data rather than from this tool.

2. get_maics_data

a. Description

Retrieves financial data for one or more companies, MAICS Tags, and time periods. It serves both a single lookup and a multi-company comparison, since identifiers, tags, and periods each accept comma-separated lists.

Values of data type Monetary and PerShare are returned unscaled in USD. Do not use this tool for the non-periodic SECURITY_INFO measures, which have no period and are retrieved with get_maics_info.

b. Parameters

ParameterTypeRequiredDefaultDescription
figistringone of figi / bloomberg_idnullFIGI identifier(s), comma-separated, maximum 50, for example BBG000B9XRY4,BBG000BPH459. Where both identifier parameters are supplied, figi is the one used.
bloomberg_idstringone of figi / bloomberg_idnullBloomberg identifier(s), comma-separated, maximum 50, for example MSFT US,AAPL US. Where the country code is omitted, US is assumed. Supplying this saves a search_companies round trip when the caller already holds a Bloomberg ID.
maics_tagstringyes—MAICS Tag(s), comma-separated, maximum 10, for example NetRevenue,EBITDA. Discover them with list_maics_measures.
periodsstringyes—Period(s), comma-separated, maximum 10, for example FY-2024,FY-2025,FY-2026. Formats are FY-YYYY, Q#-YYYY, P4Q, L4Q, and QTD.
sourcestringnoSavaNetA single model source organization. Omit it for the SavaNet standardized models. Pass an entitled organization to retrieve models saved to that organization, such as models saved from SavaNet for Excel.

Per-call caps are 50 identifiers, 10 MAICS Tags, and 10 periods, with the product of the three at or below 1000.

c. Response

One entry per company in a maics_data array, each carrying the company identifiers and a maics_measures object keyed by MAICS Tag. Each measure holds its display name and a values object keyed by period, so a multi-period request returns one entry per period under the same tag. Both figi and bloomberg_id come back regardless of which was supplied. A request_summary block reports what was asked for and what was returned, which is how a caller detects a company that resolved to nothing.

{
  "maics_data": [
    {
      "company_name": "Microsoft Corp",
      "figi": "BBG000BPH459",
      "ticker": "MSFT",
      "bloomberg_id": "MSFT US",
      "maics_measures": {
        "NetRevenue": { "name": "Operating Revenue, Net",
                        "values": { "FY-2025": 281724000000 } },
        "EPS":        { "name": "Recurring EPS, diluted",
                        "values": { "FY-2025": 13.74531 } }
      }
    }
  ],
  "request_summary": { "companies_requested": 1, "companies_returned": 1,
                       "measures_requested": 2, "periods_requested": 1 }
}

Where values are missing under a source the user is entitled to, the MAICS Tag may exist only in the SavaNet standardized models, so retry without source.

3. get_maics_info

a. Description

Retrieves non-periodic informational measures for one or more companies, being the MAICS measures of category SECURITY_INFO. These are informational attributes of a company or its model rather than periodic values, so the tool takes no period argument. It is the connector equivalent of the SAVAINFO Excel function.

Typical measures include CompanyName, CIK, TickerSymbol, CurrencyCode, FYEndMonthAbv, and ERICSCode, the last being the company’s 8-digit ERICS comparison-group code. Use list_maics_measures with category SECURITY_INFO for the full list.

b. Parameters

ParameterTypeRequiredDefaultDescription
maics_tagstringyes—MAICS Tag(s) of category SECURITY_INFO, comma-separated, maximum 10, for example CompanyName,CIK,ERICSCode.
figistringone of figi / bloomberg_idnullFIGI identifier(s), comma-separated, maximum 50. Where both identifier parameters are supplied, figi is the one used.
bloomberg_idstringone of figi / bloomberg_idnullBloomberg identifier(s), comma-separated, maximum 50, for example MSFT US,7203 JP. Where the country code is omitted, US is assumed.
sourcestringnoCompany or SavaNetA single model source organization. This tool defaults to source of “Company” or “SavaNet” depending on the user’s subscription.

c. Response

One entry per company in a maics_info array, shaped like the get_maics_data response without the period dimension. Each measure holds its display name and a single value. A request_summary block reports the counts requested and returned.

{
  "maics_info": [
    {
      "company_name": "Microsoft Corp",
      "figi": "BBG000BPH459",
      "bloomberg_id": "MSFT US",
      "maics_measures": {
        "CompanyName": { "name": "Company Name", "value": "Microsoft Corp" },
        "ERICSCode":   { "name": "ERICS Industry Code", "value": "95102010" }
      }
    }
  ],
  "request_summary": { "companies_requested": 1, "companies_returned": 1,
                       "measures_requested": 2 }
}

4. get_price_data

a. Description

Retrieves historical stock price and dividend data for one or more companies, being open, high, low, close, trading volume, and dividends. Prices are adjusted for splits but not for dividends, so they represent price return rather than total return. Dividends are returned separately, which lets a caller compute total return itself. It is the connector equivalent of the SAVASERIES Excel function.

b. Parameters

ParameterTypeRequiredDefaultDescription
figisstringone of figis / bloomberg_idsnullFIGI identifier(s), comma-separated, maximum 10. Where both identifier parameters are supplied, figis takes precedence.
bloomberg_idsstringone of figis / bloomberg_idsnullBloomberg ID(s), comma-separated, maximum 10, for example AAPL US,MSFT US.
historical_periodstringyes—How far back to start the series from the most recent available pricing date, expressed as a number and a unit, being days D, weeks W, months M, or years Y. Examples are 1D, 52W, 6M, and 10Y. It is capped at 10 years, and a request beyond available history returns all available history.
periodicitystringnodailyGranularity of the returned series, being daily, weekly, or monthly. Daily data is not available for histories longer than two years, and a daily request over a longer span returns weekly data instead. The granularity actually returned is reported in the priceInfo block.

c. Response

Price and dividend data come back as columnar JSON arrays in ascending chronological order, oldest date first, which is the orientation charting libraries load with the least reshaping. One object is returned per company, and for several companies those objects are returned in a series array. The identifier returned (e.g. figi or bloomberg_id) will be the same as used in the request. Volume is provided in number of shares, unscaled. Because dividends fall on only a handful of dates, they come back as a compact sparse block of event date and amount rather than an array aligned to every trading day, and that block is independent of periodicity.

{
  "priceInfo": {"bloomberg_id":"AAPL US","figi":"BBG000B9XRY4","currency":"USD",
                "periodicity":"daily","observations":2517,
                "start":"2015-07-30","end":"2025-07-29"},
  "date":   ["2015-07-30","2015-07-31", "…"],
  "open":   [29.51, 29.39, "…"],
  "high":   [29.66, 29.51, "…"],
  "low":    [29.27, 29.19, "…"],
  "close":  [29.42, 29.23, "…"],
  "volume": [168910000, 171540000, "…"],
  "dividends": {
    "date":   ["2015-08-06", "2015-11-05", "…"],
    "amount": [0.13, 0.13, "…"]
  }
}

5. list_maics_measures

a. Description

Lists the available MAICS measures and their MAICS Tags. The MAICS Tag is the identifier passed to get_maics_data, get_maics_info, and the screen_companies measure filters. This tool returns measure definitions only and cannot return a value for a company.

Measures are organized into the following categories.

CategoryCovers
FIN_PERF_MEASUREIncome statement and cash flow line items, EPS, and share counts
FIN_POS_MEASUREBalance sheet line items and period dates
SECURITY_INFONon-periodic company and model attributes, retrieved with get_maics_info
GROWTH_RATEYear-over-year growth rates
MARGIN_RATIOMargins on revenue
LEVERAGE_RATIOLiquidity and leverage ratios
VAL_MULTIPLEValuation multiples including EVEBITDA and PriceEarnings
UTILIZ_RATIOReturns on assets and equity, and asset turnover
MARKET_VALUEMarketCap and enterprise value
YIELDDividend yield and FCFE yield
RELATIVE_VALUEPriceBook

Data types are String, Integer, Decimal, Monetary, PerShare, Shares, Date, and URI, and the Monetary and PerShare types follow the unscaled USD convention.

b. Parameters

ParameterTypeRequiredDefaultDescription
categorystringnonullRestricts the listing to one category and returns full detail for it. Omit it for the compact catalog of all measures.

c. Response

A maics_measures array with one entry per measure, a total_count, and a detail flag reporting which form was returned. The compact form carries maics_tag, name, category, and data_type for every measure, together with a hint listing the current category names and their measure counts. The full form, returned when category is passed, adds each measure’s description and its is_numeric and is_percent flags.

{
  "maics_measures": [
    { "maics_tag": "EVEBITDA",
      "name": "EV including Pension Deficit / EBITDA",
      "description": "Enterprise Value including pension deficit divided by EBITDA",
      "category": "VAL_MULTIPLE",
      "data_type": "Decimal",
      "is_numeric": true,
      "is_percent": false }
  ],
  "total_count": 4,
  "category_filter": "VAL_MULTIPLE",
  "detail": "full"
}

6. screen_companies

a. Description

Screens companies on industry, country, index membership, and financial measure criteria, and returns the matching companies with their values, ranked by market capitalization. At least one filter must be provided.

Monetary and PerShare measures are both filtered and returned in unscaled USD, so a ten billion dollar market capitalization floor is sent as 10000000000.

b. Parameters

ParameterTypeRequiredDefaultDescription
fiscal_yearintegeryes—Fiscal year to screen, for example 2024.
fiscal_periodstringyes—FY for the full year, or Q1, Q2, Q3, Q4 for a quarter.
erics_codesstringnonullERICS industry codes, comma-separated, matched by prefix across the four levels. Examples are 70 for all Health Care, 7030 for Commercial Biopharmaceuticals, and 70301010 for the Diversified Pharmaceuticals comparison group. Pass them as strings to preserve leading zeros.
country_codesstringnoUSISO 2-letter country codes, comma-separated, for example US,CA,MX. The US default keeps a screen from scanning every country, so pass this explicitly to screen other markets.
index_codesstringnonullOne index per call, being SnP500, DJIA, R1KHistory for the Russell 1000, or R2KHistory for the Russell 2000. For the Russell 3000, run R1KHistory and R2KHistory separately and combine the results.
maics_measuresstringnonullA JSON array of measure filters, each holding maics_tag, operator, and value, where operator is one of >, <, >=, <=, =.
response_limitintegerno100Maximum companies returned, from 1 to 1000, ranked by MarketCap.
sourcestringnoSavaNetA single model source organization. Pass an entitled organization to screen models saved to that organization.

A measure filter array looks as follows.

[{"maics_tag":"MarketCap","operator":">=","value":10000000000},
 {"maics_tag":"EVEBITDA","operator":"<=","value":15}]

c. Response

A companies array ranked by market capitalization, with total_matches giving the full count of companies meeting the criteria and returned_count giving the number of rows actually returned. Where the two differ, the screen was truncated by response_limit. Each company carries its identifiers, the fiscal year and period screened, a category_values block holding the ERICS group, ERICS code, and country, and a maics_values block holding the value of every measure used as a filter.

{
  "companies": [
    {
      "company_name": "Microsoft Corporation",
      "figi": "BBG000BPH459",
      "bloomberg_id": "MSFT US",
      "fiscal_year": 2025,
      "fiscal_period": "FY",
      "category_values": { "erics_group": "Office Productivity Software",
                           "erics_code": "95102010",
                           "country": "United States Of America" },
      "maics_values": { "MarketCap": 3715703750000 }
    }
  ],
  "total_matches": 1,
  "returned_count": 1
}

7. get_erics_info

a. Description

Returns the ERICS industry classification reference. It explains the four nested levels, how to choose the right level for a request, and lists every group with its numeric code, name, definition, alternate names, and business classification flags for ESG Exclusion, Non-Shariah, REIT, Holding Companies, and Pre-Commercial, including their default exclusion rules.

Match on the definitions rather than on group names alone. The reference does not change within a session, so retrieve it once and cache it.

b. Parameters

ParameterTypeRequiredDefaultDescription
levelstringnonullRestricts the table to one level, being E Economic Sector with 10 groups, R Research Group with 32, I Industry Group with 99, or C Comparison Group, the full 260-row table. Definitions, alternate names, and classification flags exist only at the Comparison Group level, so omit level, or pass C, when those are needed.

c. Response

The reference itself, being the guidance on choosing a level followed by the classification table. A request restricted by level returns each group with its code, its name, and the number of comparison groups beneath it. The unrestricted request, and a request for level C, return the full comparison-group table with definitions, alternate names, and classification flags. It is reference content for the caller to read and cache rather than a per-company data response.

8. get_savanet_excel_addin_guide

a. Description

Returns the reference guide for the SavaNet for Excel add-in, covering the syntax, arguments, and conventions of the SAVAFIN, SAVADATA, and SAVAINFO worksheet functions.

Retrieve it before generating any SAVA* formula, and whenever a task involves building a worksheet artifact such as a financial model, a comparable-companies sheet, or a multi-period forecast. The guide does not change within a session, so cache it. It is not needed for a simple data lookup that is answered in conversation.

The add-in itself is a native Excel add-in available on Microsoft AppSource. It requires a Microsoft work or school account and a version of Office that supports add-ins.

b. Parameters

None.

c. Response

The guide text, holding the function signatures, the argument value enumerations for period strings, scaling, and currency, the SAVAINFO TagName reference, common pitfalls, and guidance on when a worksheet formula serves better than a connector call.

9. get_diagnostics

a. Description

Returns diagnostic information about the connector and the current session. Use it to troubleshoot, to confirm which build a client is reaching, or to verify that the connector is authenticating as the expected user.

b. Parameters

None.

c. Response

Three blocks. server gives the product, version, build, and .NET runtime. session gives the authenticated user, the Entra tenant, and whether a token is present. savanet_user gives the resolved SavaNet profile, including the organization, the subscription, and entitled_orgs, being the list of organization names accepted by the source parameter of get_maics_data, get_maics_info, and screen_companies.