{"$schema":"https://static.modelcontextprotocol.io/schemas/server-card.json","serverInfo":{"name":"shorted-au-market-data","title":"Shorted — Australian market and public-interest data","version":"1.0.0","description":"Read-only Model Context Protocol access to Australian market and public-interest data: ASIC short positions for ASX-listed stocks, prices, director trades, news and reports; house prices and suburb profiles; ABS/RBA economic series; and the federal register of politicians' interests.","websiteUrl":"https://shorted.com.au","documentationUrl":"https://shorted.com.au/docs/mcp.md"},"transport":{"type":"streamable-http","endpoint":"https://api.shorted.com.au/mcp"},"protocolVersion":"2026-07-28","authentication":{"required":false,"note":"Anonymous access. No token is required and every tool works without one — OAuth 2.1 identifies you, it is not a gate on first contact. This deployment does not currently apply per-caller quotas; the only limit in force is a tier-blind per-IP ceiling at the Cloudflare edge.","optional":"oauth2","protectedResourceMetadata":"https://api.shorted.com.au/.well-known/oauth-protected-resource/mcp","authorizationServerMetadata":"https://api.shorted.com.au/.well-known/oauth-authorization-server","scopes":["shorts:read","housing:read","economy:read","politics:read"],"rateLimits":{"unit":"tool call","enforced":false,"anonymous":"30 per minute, 500 per month","free":"60 per minute, 1000 per month","paid":"120 per minute, 10000 per month","upgradeUrl":"https://shorted.com.au/pricing","description":"NOT currently enforced by this deployment. These are the documented API tier entitlements, which apply once app-layer rate limiting is enabled. The ceiling actually in force is the tier-blind per-IP limit at the Cloudflare edge (60 per 10 seconds and 300 per minute for anonymous MCP callers, counted per HTTP request rather than per tool call)."}},"capabilities":{"tools":{"listChanged":false},"resources":{"listChanged":false},"prompts":{"listChanged":false}},"tools":[{"name":"list_top_shorts","title":"List most shorted ASX stocks","description":"List the most shorted ASX-listed stocks, ranked by latest reported short interest (percent of total product in issue held short, 0-100), highest first. Returns ticker, company name, industry and that percentage — no prices, volumes or market capitalisation. Default 20 stocks, hard maximum 100. Source is ASIC's daily short position report, published with a T+4 business-day delay, so these are the most recent REPORTED positions and can be up to a week old. This is short interest, not short-sale flow. Use this for 'what is most shorted' questions. Use screen_stocks instead when the question has CRITERIA to filter on (an industry, a short-percentage range, days-to-cover, market cap); this tool applies no filters and always returns the plain top-N. Use list_squeeze_candidates instead when the question is about squeeze RISK or momentum rather than raw short interest — a heavily shorted stock going nowhere ranks high here and low there.","domain":"market","inputSchema":{"additionalProperties":false,"properties":{"limit":{"description":"How many stocks to return, 1-100. Defaults to 20. Values above 100 are clamped, not rejected.","type":"integer"},"period":{"description":"Lookback window used to compute the ranking: 1D, 1W, 1M, 3M, 6M, 1Y, 2Y, 5Y, 10Y or MAX. Defaults to 1M.","type":"string"}},"type":"object"}},{"name":"get_industry_treemap","title":"ASX short interest by industry","description":"Break ASX short interest down by industry: returns the list of industries and, within each, its constituent stocks with their latest reported short position as a percentage of shares on issue (0-100). Answers 'which sectors are most shorted' and 'what is being shorted in mining/retail/energy'. Returns at most 150 stock rows in total and sets truncated=true when it had to drop some. Industry classification is Shorted's own company metadata, not GICS, and stocks with no classification are absent. Source is ASIC's daily short position report, published T+4 business days. Returns no prices, volumes or index weights — it is a short-interest breakdown, not a sector performance view.","domain":"market","inputSchema":{"additionalProperties":false,"properties":{"limit":{"description":"Maximum stocks to return per industry, 1-100. Defaults to 20.","type":"integer"},"period":{"description":"Lookback window: 1D, 1W, 1M, 3M, 6M, 1Y, 2Y, 5Y, 10Y or MAX. Defaults to 1M.","type":"string"}},"type":"object"}},{"name":"get_market_snapshot","title":"ASX short positions on a given date","description":"Get every reported ASX short position as at one specific trading date — a point-in-time snapshot rather than the latest figures. Pass date as YYYY-MM-DD (e.g. 2026-08-01). Returns the most shorted stocks on that date with percent of shares on issue held short, the raw share counts, and how many stocks were reported in total. Default 25 stocks, hard maximum 100. If the date is a weekend, a public holiday, before the data begins, or inside ASIC's T+4 reporting lag, the result contains NO stocks and returned=0 — it does not fall back to a nearby date. When that happens, previous_trading_date and next_trading_date name the nearest dates that DO have data, so retry with one of those rather than guessing. Use list_top_shorts instead when the question is about current positions; this tool exists for historical 'what did it look like on X' questions.","domain":"market","inputSchema":{"additionalProperties":false,"properties":{"date":{"description":"Trading date in YYYY-MM-DD format, e.g. 2026-08-01. Required. Must be an ASX trading day on which ASIC reported; weekends, public holidays and dates inside the T+4 reporting lag return no stocks.","type":"string"},"limit":{"description":"How many stocks to return, ranked most shorted first, 1-100. Defaults to 25.","type":"integer"}},"required":["date"],"type":"object"}},{"name":"list_squeeze_candidates","title":"Rank ASX stocks by squeeze risk","description":"Rank ASX stocks by short-squeeze risk or by bull-versus-bear divergence. view=\"squeeze\" (default) ranks by a composite 0-100 squeeze_score that blends short interest, the four-week change in short positions, price momentum and days-to-cover. view=\"divergence\" returns ONLY stocks whose price is rising while shorts are still building, ranked by divergence_score. Each row carries the inputs as well as the score: short percent, four-week change in percentage points, latest price and one-month price change in AUD/percent, days-to-cover, and market cap. Default 20 stocks, hard maximum 100. squeeze_score and divergence_score are SHORTED'S OWN derived metrics — not an official ASIC or exchange figure, not a broker rating, and not a prediction or investment recommendation. Short data is ASIC's, published T+4 business days; prices are end-of-day, not live. Differs from list_top_shorts, which is a plain ranking by short interest alone and ignores price entirely, and from screen_stocks, which filters on criteria you supply rather than ranking by a computed score.","domain":"market","inputSchema":{"additionalProperties":false,"properties":{"limit":{"description":"How many stocks to return, 1-100. Defaults to 20.","type":"integer"},"view":{"description":"Which ranking to return: \"squeeze\" (default) ranks by squeeze_score; \"divergence\" returns only stocks whose price is RISING while short positions are still BUILDING, ranked by divergence_score.","type":"string"}},"type":"object"}},{"name":"get_stock","title":"Get ASX stock short position","description":"Look up a single ASX-listed stock by ticker code and return its latest reported short position: percent of total product in issue held short (0-100), the raw number of shares shorted, total shares on issue, and the company name and industry. Source is ASIC's daily short position report, which is published with a T+4 business-day delay — the figure returned is the most recent REPORTED position, not today's, and can be up to a week old. This is short interest, not short-sale flow, and it is not a price quote: it returns no price, volume or market capitalisation.","domain":"stock","inputSchema":{"additionalProperties":false,"properties":{"code":{"description":"ASX ticker code, 3-4 alphanumeric characters, e.g. BHP, CBA, ZIP. Case-insensitive.","type":"string"}},"required":["code"],"type":"object"}},{"name":"get_stock_history","title":"Get a stock's short position over time","description":"Get the time series of a single ASX stock's reported short position over a lookback window (1D, 1W, 1M, 3M, 6M, 1Y, 2Y, 5Y, 10Y or MAX; default 1M). Each point is a date and the percent of total product in issue held short on that date (0-100). Use this for trend questions — is short interest rising, when did it peak, how does it compare to a year ago. Long windows are DOWNSAMPLED to at most 200 evenly-spaced points, always keeping the first and last observation; total_observations reports the true count and downsampled says whether thinning happened, so the series is right for trends but should not be treated as a complete daily record. This is short interest only — it contains no price, volume or return series. Source is ASIC's daily short position report, published with a T+4 business-day delay.","domain":"stock","inputSchema":{"additionalProperties":false,"properties":{"code":{"description":"ASX ticker code, 3-4 alphanumeric characters, e.g. BHP. Case-insensitive.","type":"string"},"period":{"description":"Lookback window: 1D, 1W, 1M, 3M, 6M, 1Y, 2Y, 5Y, 10Y or MAX. Defaults to 1M.","type":"string"}},"required":["code"],"type":"object"}},{"name":"get_stock_details","title":"Get an ASX company profile","description":"Get the company profile behind an ASX ticker: registered name, industry, website, address, a description of what the company does, background, stated competitive advantages, recent developments, risk factors and key people. Use this for 'who are they / what do they do' questions. Prose fields are AI-enriched from public company sources, are truncated to about 1200 characters each (marked when cut), and may be months out of date — they are NOT company statements, filings or advice. Lists are capped at 10 items. This tool returns NO short position, price, or financial-statement data: use get_stock for short interest, get_stock_history for its trend, and get_peer_comparison for valuation metrics alongside industry peers.","domain":"stock","inputSchema":{"additionalProperties":false,"properties":{"code":{"description":"ASX ticker code, 3-4 alphanumeric characters, e.g. BHP. Case-insensitive.","type":"string"}},"required":["code"],"type":"object"}},{"name":"get_director_trades","title":"List director trades for a stock","description":"List disclosed director (insider) trades for one ASX-listed company: date, director name, whether it was a buy, a sell or an option exercise, the number of shares, price per share and total value in AUD, plus a link to the source ASX announcement. Most recent first. Default 20 trades, hard maximum 100. Extracted from ASX Appendix 3Y announcements, so coverage depends on what was announced and successfully parsed — an empty result means nothing is RECORDED, not that no director traded. Price and value are 0 where the announcement did not disclose them. This is disclosed director dealing, unrelated to the ASIC short position data the other tools return.","domain":"stock","inputSchema":{"additionalProperties":false,"properties":{"code":{"description":"ASX ticker code, 3-4 alphanumeric characters, e.g. BHP. Case-insensitive.","type":"string"},"limit":{"description":"How many trades to return, most recent first, 1-100. Defaults to 20.","type":"integer"}},"required":["code"],"type":"object"}},{"name":"get_peer_comparison","title":"Compare a stock with its industry peers","description":"Compare one ASX stock against other companies in the same industry, on short interest (percent of shares on issue), market capitalisation in AUD, P/E ratio, trailing dividend yield and one-month price change. Returns the subject stock with the same metrics so the numbers can be read side by side. Default 5 peers, hard maximum 20. Peers are selected by Shorted's own industry classification, not GICS, and are the nearest neighbours by industry — not a curated or analyst-defined comparable set. Metrics are 0 where unknown, which is common for P/E and dividend yield on small caps; treat 0 as missing, not as a real value. Short data is ASIC's, published T+4 business days; prices are end-of-day, not live.","domain":"stock","inputSchema":{"additionalProperties":false,"properties":{"code":{"description":"ASX ticker code to compare, 3-4 alphanumeric characters, e.g. BHP. Case-insensitive.","type":"string"},"limit":{"description":"How many industry peers to return, 1-20. Defaults to 5.","type":"integer"}},"required":["code"],"type":"object"}},{"name":"search_stocks","title":"Find an ASX stock by name or code","description":"Find ASX-listed stocks by company name or ticker code when you do not already know the code. Free-text search over names and codes; returns ticker, company name, industry and the latest reported short position as a percentage of shares on issue. Default 10 matches, hard maximum 25. Use this FIRST whenever a question names a company rather than a ticker, then pass the code it returns to get_stock, get_stock_details, get_stock_news or get_director_trades. Ranking is by search relevance, NOT by short interest or size — it is a lookup, not a ranking; use list_top_shorts or screen_stocks for those. An empty result means nothing matched the query, not that the company is unlisted; try a shorter or differently spelled query.","domain":"discovery","inputSchema":{"additionalProperties":false,"properties":{"limit":{"description":"How many matches to return, 1-25. Defaults to 10. Values above 25 are clamped, not rejected.","type":"integer"},"query":{"description":"Free-text search over ASX ticker codes and company names, e.g. \"pilbara\", \"commonwealth bank\", \"BHP\". Required.","type":"string"}},"required":["query"],"type":"object"}},{"name":"screen_stocks","title":"Filter ASX stocks by criteria","description":"Filter ASX-listed stocks by CRITERIA and return the matches, sorted. This is the tool for any question with conditions in it — \"heavily shorted miners under $1bn\", \"stocks where shorts are building but the price is falling\", \"high days-to-cover with recent director buying\". Filterable: short interest percent, four-week change in short interest (percentage points), days-to-cover, market cap in AUD, one-month price change percent, P/E, dividend yield, industry, and whether directors have recently bought. Sortable by any of short_pct, short_pct_change, market_cap, price_change_1m, pe_ratio, dividend_yield, net_director_buy, news_sentiment or days_to_cover, ascending or descending. Every bound is optional and omitting one means no bound — it does NOT mean zero. Default 20 stocks, hard maximum 50; total_count reports how many actually matched, so a full result means there are more. Use list_top_shorts instead for a plain \"what is most shorted\" ranking with no criteria, and list_squeeze_candidates instead when the question is about squeeze RISK, which is a composite score this tool cannot filter on. Industry names must match Shorted's own classification (not GICS) exactly. Short data is ASIC's, published T+4 business days; prices are end-of-day, not live. Coverage is the screener dataset (~3,300 listed stocks), so a stock with no price or fundamentals data can be absent from a screen that its short position would otherwise satisfy.","domain":"discovery","inputSchema":{"additionalProperties":false,"properties":{"has_director_buys":{"description":"Only stocks with recent disclosed director purchases.","type":"boolean"},"industries":{"description":"Must match Shorted's own classification exactly, e.g. \"Metals & Mining\" — the values get_industry_treemap and get_stock return.","items":{"type":"string"},"type":["null","array"]},"limit":{"description":"1-50, default 20. Higher values are clamped, not rejected.","type":"integer"},"max_days_to_cover":{"type":["null","number"]},"max_market_cap":{"description":"AUD.","type":["null","number"]},"max_pe_ratio":{"type":["null","number"]},"max_price_change_1m":{"description":"Percent.","type":["null","number"]},"max_short_pct":{"description":"Percent of shares on issue, 0-100.","type":["null","number"]},"max_short_pct_change_4w":{"description":"Percentage points. Negative finds shorts covering.","type":["null","number"]},"min_days_to_cover":{"description":"Short position divided by 20-day average volume.","type":["null","number"]},"min_dividend_yield":{"description":"Trailing, percent.","type":["null","number"]},"min_market_cap":{"description":"AUD, e.g. 1000000000 for one billion.","type":["null","number"]},"min_pe_ratio":{"type":["null","number"]},"min_price_change_1m":{"description":"Percent.","type":["null","number"]},"min_short_pct":{"description":"Percent of shares on issue, 0-100.","type":["null","number"]},"min_short_pct_change_4w":{"description":"Percentage points. Positive finds shorts building.","type":["null","number"]},"sort_by":{"description":"short_pct (default), short_pct_change, market_cap, price_change_1m, pe_ratio, dividend_yield, net_director_buy, news_sentiment or days_to_cover.","type":"string"},"sort_direction":{"description":"desc (default, highest first) or asc.","type":"string"}},"type":"object"}},{"name":"get_stock_news","title":"List recent news for a stock","description":"List recent news and ASX announcements matched to one ASX-listed company: headline, publisher, publication date, a link to the original article, a short summary where one exists, and whether the ASX flagged the announcement price-sensitive. Most recent first. Default 10 articles, hard maximum 30. Optionally filter by sentiment or by publisher. SENTIMENT IS ASSIGNED BY A LANGUAGE MODEL from the headline and summary. It is a classification, not the publisher's position, an analyst view, or a measured market reaction — report it as such, and prefer the article itself. Articles are aggregated from public RSS feeds and ASX announcements and are retained for 90 days, so this is not a complete archive and an empty result means nothing was CAPTURED, not that nothing was published. Link to the publisher's URL when citing. This returns coverage only — no short position, price or valuation data.","domain":"news","inputSchema":{"additionalProperties":false,"properties":{"code":{"description":"ASX ticker code, 3-4 alphanumeric characters, e.g. BHP. Case-insensitive.","type":"string"},"limit":{"description":"How many articles to return, most recent first, 1-30. Defaults to 10.","type":"integer"},"sentiment":{"description":"Optional filter: \"positive\", \"negative\" or \"neutral\". Omit for all.","type":"string"},"source":{"description":"Optional filter by publisher, e.g. \"asx\", \"stockhead\", \"livewire\", \"afr\". Omit for all.","type":"string"}},"required":["code"],"type":"object"}},{"name":"list_reports","title":"List published short-selling reports","description":"List published Shorted short-selling reports, most recent first, with each one's slug, headline, standfirst, period end date and headline statistics (the most shorted stock and its percentage, how many stocks were shorted, the top five tickers). This is the DISCOVERY path for reports: pass a slug from here to get_report to read one. Never guess a slug. Reports come in three periods and the SLUG SHAPE says which: \"2026-W23\" is ISO week 23 of 2026, \"2026-05\" is May 2026, \"2025\" is the 2025 calendar year. Filter with report_type if you want only one kind. Default 12 reports, hard maximum 50. Headlines and summaries are GENERATED by a language model from the underlying ASIC data — they are Shorted's own commentary, not journalism, analyst research or investment advice. The statistics are computed from ASIC's short position report, published T+4 business days.","domain":"reports","inputSchema":{"additionalProperties":false,"properties":{"limit":{"description":"How many reports to return, most recent first, 1-50. Defaults to 12.","type":"integer"},"report_type":{"description":"Filter to \"weekly\", \"monthly\" or \"yearly\". Omit or pass \"all\" for every type.","type":"string"}},"type":"object"}},{"name":"get_report","title":"Read a short-selling report","description":"Read one published Shorted short-selling report: its narrative sections, market-wide statistics, the period's most shorted stocks, the biggest risers and fallers in short interest, a breakdown by industry, and the sources the narrative cites. The slug identifies both the report and its period BY SHAPE: \"2026-W23\" is ISO week 23 of 2026, \"2026-05\" is May 2026, \"2025\" is the 2025 calendar year. Use list_reports to find a valid slug — do not construct one, because a period with no published report returns nothing at all. THE NARRATIVE IS GENERATED BY A LANGUAGE MODEL from the underlying data. It is Shorted's own editorial commentary — not journalism, not analyst research, not investment advice — and should be attributed that way rather than cited as a primary source. The STATISTICS are computed from ASIC's short position report (published T+4 business days) and are not generated; prefer them, and the citations, for factual claims. Sections are capped: narrative prose is truncated to about 800 characters each, top_shorted to 10 stocks, risers and fallers to 5 each, industries and citations to 10. The published report at shorted.com.au/reports carries the full text, plus FAQs and per-stock trend detail this tool omits.","domain":"reports","inputSchema":{"additionalProperties":false,"properties":{"slug":{"description":"From list_reports. The shape sets the period: 2026-W23 = ISO week, 2026-05 = month, 2025 = year. Do not construct one.","type":"string"}},"required":["slug"],"type":"object"}},{"name":"get_housing_overview","title":"Australian house-price headline metrics","description":"Latest Australian house-price headline metrics: mean and median dwelling price (AUD), a price index, and household debt-to-income, for the nation, each state and territory, and the greater capital cities, with quarter-on-quarter and year-on-year change. Sources are ABS quarterly releases and RBA statistical tables, CC-BY 4.0. ABS data is published about two months after the quarter ends, so the latest figure is normally one quarter behind — much slower than the ASIC short data other tools return. A price_index sourced 'abs_derived' is a rebase of ABS mean prices, NOT the ABS hedonic RPPI (frozen upstream at 2021-Q4). No suburb geography here: use get_suburb_profile for a suburb, or get_house_price_series for the history behind any row.","domain":"housing","inputSchema":{"additionalProperties":false,"properties":{"region_type":{"description":"Restrict to one geography: national, state or gccsa (greater capital city). Omit for all three.","type":"string"}},"type":"object"}},{"name":"get_house_price_series","title":"House-price time series","description":"One Australian house-price time series for a region and measure — the history behind a get_housing_overview row, oldest first, with its source and licence. Most series are QUARTERLY (ABS, published about two months after the quarter ends); RBA measures such as debt-to-income are monthly. Downsampled to at most 160 evenly-spaced points, always keeping the first and the latest. Call get_housing_overview first for valid region_code and measure values: guessing returns an empty series, not a correction. Official CC-BY data only — a licence-restricted series is refused rather than returned.","domain":"housing","inputSchema":{"additionalProperties":false,"properties":{"dwelling_type":{"description":"all, established_house or attached. Defaults to all.","type":"string"},"measure":{"description":"Measure to chart, e.g. mean_price, median_price, price_index, debt_to_income. Required.","type":"string"},"region_code":{"description":"Region code from get_housing_overview, e.g. AUS, NSW, 1GSYD. Required.","type":"string"}},"required":["region_code","measure"],"type":"object"}},{"name":"get_suburb_profile","title":"Australian suburb profile","description":"Profile of one Australian suburb by ABS SAL code: Valuer-General median house price, ABS Census 2021 demographics, SEIFA decile, federal and state representation, council, state and national median comparisons, and crime percentiles. Vintages differ and matter. Demographics are Census 2021. Median prices are quarterly state Valuer-General releases and can be over a year old; only NSW, VIC and SA publish them, so QLD, WA, TAS, NT and ACT suburbs have none. Crime percentiles are two-year pooled financial years, NSW only, ranked WITHIN the suburb's own state and never across states. Also returns counts and medians derived from current for-sale portal listings: asking prices, not sales, not comparable with a Valuer-General median, and suppressed where fewer than three listings stand behind them. No addresses, listing links or individual properties are returned by any tool here. Use get_housing_overview for state and national aggregates.","domain":"housing","inputSchema":{"additionalProperties":false,"properties":{"sal_code":{"description":"ABS Suburb and Locality (SAL) code, e.g. SAL21234. Required.","type":"string"}},"required":["sal_code"],"type":"object"}},{"name":"list_suburb_price_drops","title":"Suburbs with the most asking-price cuts","description":"Australian suburbs ranked by recent asking-price reductions on residential for-sale listings. Per-suburb AGGREGATES only: how many listings cut their price, what share of the suburb's captured listings that is, and the mean and median reduction as percentages. These are ASKING prices on live listings — not settled sales, and not comparable with Valuer-General or ABS medians. Coverage is a rotating crawl catalogue of a few hundred suburbs, so an absent suburb means uncrawled, not unchanged, and freshness ranges from days to a few weeks. The underlying listings are licence-restricted and never published: no addresses, links, agents, agencies or individual prices, no largest-single-reduction figure, and any suburb with fewer than three price cuts is withheld entirely. Default 20 suburbs, maximum 50. Use get_suburb_profile for one suburb, or get_housing_overview for official price levels.","domain":"housing","inputSchema":{"additionalProperties":false,"properties":{"limit":{"description":"How many suburbs to return, 1-50. Defaults to 20. Higher values are clamped, not rejected.","type":"integer"},"sort":{"description":"Ranking: count (most suburbs with cuts, default), avg (deepest average cut) or asking (highest asking prices).","type":"string"},"state":{"description":"State or territory code to restrict to, e.g. NSW. Omit for national.","type":"string"}},"type":"object"}},{"name":"list_economic_series","title":"Australian economic series catalogue","description":"Catalogue of the Australian economic series held here — the discovery step for get_economic_series, which needs an exact series_key that cannot be guessed. Filter by topic, metric or region. No VALUES are returned: pass the keys to get_economic_series. ABS releases and RBA statistical tables (CC-BY 4.0), plus a few series derived from our own market data. Released monthly to annually, weeks to months after the period they describe, and revised afterwards — not the T+4 vintage the ASIC short-position tools return. Default 25 series, maximum 40.","domain":"economy","inputSchema":{"additionalProperties":false,"properties":{"limit":{"description":"1-40, default 25. Higher values are clamped, not rejected.","type":"integer"},"metric":{"type":"string"},"region_code":{"description":"aus, nsw, vic, qld, sa, wa, tas, nt or act.","type":"string"},"region_type":{"description":"national, state, industry or refinery.","type":"string"},"topic":{"description":"cpi, labour, rates, trade, gdp, retail, approvals, population, petroleum, govfin or markets.","type":"string"}},"type":"object"}},{"name":"get_economic_series","title":"Australian economic time series","description":"Observations for up to 3 named Australian economic series, oldest first, in the publisher's own units — no rebasing, indexing or cross-series comparison is done, and series whose `adjustment` differs are not comparable with each other. Keys come from list_economic_series; a key that does not exist comes back in `missing` rather than being dropped. ABS and RBA data, CC-BY 4.0, released monthly to annually and revised after first publication — much slower and less final than the T+4 ASIC short data. At most 80 evenly-spaced observations per series, first and latest always kept.","domain":"economy","inputSchema":{"additionalProperties":false,"properties":{"series_keys":{"description":"1-3 exact keys from list_economic_series. Required.","items":{"type":"string"},"type":["null","array"]}},"required":["series_keys"],"type":"object"}},{"name":"get_state_company_aggregates","title":"Listed-company exposure by state","description":"ASX-listed company activity by Australian state and territory: how many listed companies have material operations in each, their exposure-weighted market capitalisation in AUD, and their exposure-weighted short interest as a percent of shares on issue. The weights are OUR OWN operations-weighted estimate of where the ~300 largest listed companies operate — not an official statistic, and not an ABS or RBA measure of state output, employment or gross state product; use list_economic_series for those. Companies with only international exposure are excluded. Short interest is the ASIC short position report, published T+4 business days. Takes no arguments.","domain":"economy","inputSchema":{"additionalProperties":false,"type":"object"}},{"name":"search_politicians","title":"Find a federal parliamentarian","description":"Find Australian federal parliamentarians in the Registers of Members' and Senators' Interests, by name substring, chamber, state or party. Returns each member's slug (for get_politician), name, chamber, division, state, party, and COUNTS of the listed companies and properties they declare. The registers record what is declared, never how much: there is no amount, value, share count or portfolio size in this data and none can be derived from it. A name search returns EVERY match and never picks one — two members can share a surname, so disambiguate on division, state and party before calling get_politician. Covers 319 members across parliaments 44-48. Default 20, maximum 50.","domain":"politicians","inputSchema":{"additionalProperties":false,"properties":{"chamber":{"description":"house or senate.","type":"string"},"limit":{"description":"1-50, default 20. Higher values are clamped.","type":"integer"},"party":{"description":"AEC abbreviation, e.g. ALP, LP, GRN.","type":"string"},"query":{"description":"Name substring. Every match is returned; none is picked for you.","type":"string"},"state":{"description":"NSW, VIC, QLD, SA, WA, TAS, NT or ACT.","type":"string"}},"type":"object"}},{"name":"get_politician","title":"A parliamentarian's declared interests","description":"One Australian federal parliamentarian's declared interests, from the APH Registers of Members' and Senators' Interests: each declaration's register item, whose interest it is (member, spouse or partner, or dependent children), the member's own words VERBATIM, any ASX code or ABS suburb it resolved to, whether it is still declared, and the aph.gov.au source document. Takes a slug from search_politicians. WHAT IS DECLARED, NEVER HOW MUCH: the registers record no quantity, value, purchase price, income or portfolio size, so no such figure exists here or can be derived. An empty list does NOT mean the member declared nothing — check parliaments_read, parliaments_partial and parliaments_pending, because parliaments 44 and 45 and the Senate volumes are largely unread. A declared company with no stock_code was withheld rather than guessed. At most 20 declarations; the remainder is counted, and no declaration's text is ever shortened or reworded.","domain":"politicians","inputSchema":{"additionalProperties":false,"properties":{"slug":{"description":"From search_politicians. Required; a name is not accepted, being ambiguous.","type":"string"}},"required":["slug"],"type":"object"}},{"name":"list_stock_politicians","title":"Parliamentarians declaring one ASX company","description":"Which Australian federal parliamentarians declare an interest in one ASX-listed company, from the APH Registers of Members' and Senators' Interests: who they are, whose interest it is (member, spouse or partner, or dependent children), their own words VERBATIM, whether it is still declared, and the aph.gov.au source document, plus a count of distinct declaring members by party. WHAT IS DECLARED, NEVER HOW MUCH. The registers record no quantity, value, purchase price or gain, so this says nothing about the size of anyone's holding and cannot be combined with a share price to imply one. A member is matched to a company only where the match was unambiguous; ambiguous ones are withheld, so an absent member is not evidence they declared nothing. At most 20 declarations. Use get_politician for one member's full register entry.","domain":"politicians","inputSchema":{"additionalProperties":false,"properties":{"code":{"description":"ASX ticker, e.g. BHP. Required.","type":"string"},"current_only":{"description":"Only interests declared as current. Default false: all history.","type":"boolean"}},"required":["code"],"type":"object"}}],"resources":[{"uri":"shorted://guide/reading-the-data","name":"reading-the-data","title":"Reading Shorted's data","description":"How to interpret short-interest figures from this server: net vs gross, the T+4 publication delay, the 0.01% reporting threshold, days to cover, and the readings that are routinely misread. Read this before drawing a conclusion from a percentage.","mimeType":"text/markdown"},{"uri":"shorted://catalog/coverage","name":"coverage","title":"Coverage and exclusions","description":"What each domain (market, housing, economy, politicians) actually contains, how fresh it is, and the licence-driven exclusions that will never be filled — no individual property listings, no declared-interest amounts, no rewritten parliamentary prose.","mimeType":"text/markdown"},{"uri":"shorted://guide/access","name":"access","title":"Access, limits and further reading","description":"This endpoint is anonymous and unmetered, but sits behind a per-IP abuse ceiling. Covers back-off behaviour, the HTTP API alternative, and the canonical URL shapes for linking a result back to a human-readable page.","mimeType":"text/markdown"}],"prompts":[{"name":"short_interest_briefing","title":"Short interest briefing for one ASX stock","description":"Produce a briefing on one ASX-listed company's short interest: where it stands now, how it has moved, how it compares with peers, and what news and director trading sit alongside it.","arguments":[{"name":"ticker","description":"ASX ticker code, e.g. BHP or LOT.","required":true},{"name":"period","description":"History window: 1D, 1W, 1M, 3M, 6M, 1Y, 2Y, 5Y, 10Y, MAX. Defaults to 1Y.","required":false}]},{"name":"suburb_housing_brief","title":"Housing brief for one Australian suburb","description":"Produce a brief on one Australian suburb: prices and how they have moved, the demographic and socio-economic profile, and current discounting activity — from official sources and derived aggregates only.","arguments":[{"name":"state","description":"State or territory code: ACT, NSW, NT, QLD, SA, TAS, VIC, WA.","required":true},{"name":"suburb","description":"Suburb name, e.g. Marrickville.","required":true}]},{"name":"market_wrap","title":"ASX short-selling market wrap","description":"Produce a market-wide wrap of ASX short selling: what is most shorted, which sectors are carrying the positioning, and where squeeze risk is concentrated.","arguments":[{"name":"period","description":"Window used for rankings and sector change: 1D, 1W, 1M, 3M, 6M, 1Y, 2Y, 5Y, 10Y, MAX. Defaults to 1Y.","required":false}]}],"contact":"support@shorted.com.au"}