How to fix: Set the top-level tool.title to a short human-readable label (for example, "Search catalog"). Claude directory submission requires tool titles; annotations.title remains accepted only as a legacy fallback.
Add a human-readable title so users do not have to interpret the tool identifier.
Description92/100
List available CSE symbols with metadata. Optionally search by company name and/or sector. Returns CSV (symbol,name,sector,industry,is_active,last_updated).
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Optional search term to filter companies by name, e.g. "bank" or "trust".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sector
Optional search term to filter companies by sector, e.g. "bank" or "materials". Matches as a substring, not exact, since source sector names vary in formatting.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_symbols",
"description": "List available CSE symbols with metadata. Optionally search by company name and/or sector. Returns CSV (symbol,name,sector,industry,is_active,last_updated).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"query": {
"type": "string",
"description": "Optional search term to filter companies by name, e.g. \"bank\" or \"trust\"."
},
"sector": {
"type": "string",
"description": "Optional search term to filter companies by sector, e.g. \"bank\" or \"materials\". Matches as a substring, not exact, since source sector names vary in formatting."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Get OHLCV (open, high, low, close, volume) data for a CSE symbol. Prices are adjusted for splits by default (clean price action), but NOT for rights issues or dividends, unless requested. Defaults to the most recent 50 trading days; if more history is available the response says so and how to page further back with offset. Returns CSV (date,open,high,low,close,volume) preceded by a note if the symbol was resolved from a name/typo, if the company has other instruments, or if any corporate actions (splits/rights/dividends) fall within the requested range. If the input is ambiguous, returns JSON candidates instead.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
symbol
A CSE ticker (e.g. "SAMP" or "SAMP.N0000") or the company name (e.g. "Sampath Bank"). Typos are tolerated. A bare symbol or name defaults to the voting-shares instrument if the company has more than one listed instrument (voting/non-voting/rights/debentures/preferential) — the response notes the others if so. If the input is ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol.
Clear enough to supply this argument.
from
Start date in YYYY-MM-DD format
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
to
End date in YYYY-MM-DD format
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
interval
Data interval
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
adjust_splits
Adjust historical prices for stock splits and scrip/bonus share dividends. Default true.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
adjust_rights
Adjust historical prices for rights issues. Default false.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
adjust_dividends
Adjust historical prices for cash dividends, producing a total-return series. Default false — turn this on when the user is asking about total return / performance rather than raw price action.
Clear enough to supply this argument.
limit
Max trading days to return, most recent first (before reversing to chronological order). Default 50, max 500.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
offset
Skip this many of the most recent trading days before taking `limit` — use to page further back into history.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_ohlc_data",
"description": "Get OHLCV (open, high, low, close, volume) data for a CSE symbol. Prices are adjusted for splits by default (clean price action), but NOT for rights issues or dividends, unless requested. Defaults to the most recent 50 trading days; if more history is available the response says so and how to page further back with offset. Returns CSV (date,open,high,low,close,volume) preceded by a note if the symbol was resolved from a name/typo, if the company has other instruments, or if any corporate actions (splits/rights/dividends) fall within the requested range. If the input is ambiguous, returns JSON candidates instead.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbol"
],
"properties": {
"to": {
"type": "string",
"description": "End date in YYYY-MM-DD format"
},
"from": {
"type": "string",
"description": "Start date in YYYY-MM-DD format"
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 500,
"description": "Max trading days to return, most recent first (before reversing to chronological order). Default 50, max 500.",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Skip this many of the most recent trading days before taking `limit` — use to page further back into history."
},
"symbol": {
"type": "string",
"description": "A CSE ticker (e.g. \"SAMP\" or \"SAMP.N0000\") or the company name (e.g. \"Sampath Bank\"). Typos are tolerated. A bare symbol or name defaults to the voting-shares instrument if the company has more than one listed instrument (voting/non-voting/rights/debentures/preferential) — the response notes the others if so. If the input is ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol."
},
"interval": {
"enum": [
"daily",
"weekly",
"monthly"
],
"type": "string",
"default": "daily",
"description": "Data interval"
},
"adjust_rights": {
"type": "boolean",
"default": false,
"description": "Adjust historical prices for rights issues. Default false."
},
"adjust_splits": {
"type": "boolean",
"default": true,
"description": "Adjust historical prices for stock splits and scrip/bonus share dividends. Default true."
},
"adjust_dividends": {
"type": "boolean",
"default": false,
"description": "Adjust historical prices for cash dividends, producing a total-return series. Default false — turn this on when the user is asking about total return / performance rather than raw price action."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Get full line-item detail for one financial statement (income statement, balance sheet, or cash flow statement) for a CSE symbol — every quarter available, one row per line item. Cash-flow figures are cumulative (year-to-date) while income-statement figures are per-quarter — don't diff adjacent columns on the cash flow statement as if they were quarterly deltas. Returns CSV (label,canonical_key,<one column per fiscal period>), or JSON candidates if the input is ambiguous.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
symbol
A CSE ticker or the company name (e.g. "SAMP" or "Sampath Bank"). Typos are tolerated. Statements are entity-level, so any instrument suffix given is ignored. If the input is ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol.
Clear enough to supply this argument.
statement
Which statement to fetch.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
company_type
Most companies only publish a "group" (consolidated) statement. Omit this to try group first and automatically fall back to "company" (standalone) if group is unavailable — the response says which one was actually served. Pass explicitly to force one variant only, with no fallback.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_financial_statement",
"description": "Get full line-item detail for one financial statement (income statement, balance sheet, or cash flow statement) for a CSE symbol — every quarter available, one row per line item. Cash-flow figures are cumulative (year-to-date) while income-statement figures are per-quarter — don't diff adjacent columns on the cash flow statement as if they were quarterly deltas. Returns CSV (label,canonical_key,<one column per fiscal period>), or JSON candidates if the input is ambiguous.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbol",
"statement"
],
"properties": {
"symbol": {
"type": "string",
"description": "A CSE ticker or the company name (e.g. \"SAMP\" or \"Sampath Bank\"). Typos are tolerated. Statements are entity-level, so any instrument suffix given is ignored. If the input is ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol."
},
"statement": {
"enum": [
"income",
"balance",
"cashflow"
],
"type": "string",
"description": "Which statement to fetch."
},
"company_type": {
"enum": [
"group",
"company"
],
"type": "string",
"description": "Most companies only publish a \"group\" (consolidated) statement. Omit this to try group first and automatically fall back to \"company\" (standalone) if group is unavailable — the response says which one was actually served. Pass explicitly to force one variant only, with no fallback."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Get general CSE company disclosures for a symbol — board changes, AGM/EGM notices, listings, trading suspensions/resumptions, name changes, and other regulatory announcements. For dividends, rights issues, or share splits specifically, use get_corporate_actions instead — it has the parsed, structured detail (amounts, ratios, ex-dates) that this tool's raw announcement text does not. Returns CSV (date,type,description,pdf_url), or JSON candidates if the input is ambiguous.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
symbol
A CSE ticker or the company name (e.g. "SAMP" or "Sampath Bank"). Typos are tolerated. If the input is ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol.
Clear enough to supply this argument.
from
Start date in YYYY-MM-DD format. Defaults to 1 year before `to` or today.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
to
End date in YYYY-MM-DD format. Defaults to today when omitted.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_announcements",
"description": "Get general CSE company disclosures for a symbol — board changes, AGM/EGM notices, listings, trading suspensions/resumptions, name changes, and other regulatory announcements. For dividends, rights issues, or share splits specifically, use get_corporate_actions instead — it has the parsed, structured detail (amounts, ratios, ex-dates) that this tool's raw announcement text does not. Returns CSV (date,type,description,pdf_url), or JSON candidates if the input is ambiguous.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbol"
],
"properties": {
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date in YYYY-MM-DD format. Defaults to today when omitted."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date in YYYY-MM-DD format. Defaults to 1 year before `to` or today."
},
"symbol": {
"type": "string",
"description": "A CSE ticker or the company name (e.g. \"SAMP\" or \"Sampath Bank\"). Typos are tolerated. If the input is ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
Add a human-readable title so users do not have to interpret the tool identifier.
Description88/100
Get macroeconomic data for a specific series. Returns CSV (date,value), or JSON candidates if the input is ambiguous.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
series_id
The macro series identifier or its name (e.g. "inflation" or "CCPI_YOY"). Typos are tolerated. If the input is ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact series_id.
Clear enough to supply this argument.
from
Start date in YYYY-MM-DD format
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
to
End date in YYYY-MM-DD format
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_macro_data",
"description": "Get macroeconomic data for a specific series. Returns CSV (date,value), or JSON candidates if the input is ambiguous.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"series_id"
],
"properties": {
"to": {
"type": "string",
"description": "End date in YYYY-MM-DD format"
},
"from": {
"type": "string",
"description": "Start date in YYYY-MM-DD format"
},
"series_id": {
"type": "string",
"description": "The macro series identifier or its name (e.g. \"inflation\" or \"CCPI_YOY\"). Typos are tolerated. If the input is ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact series_id."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
Add a human-readable title so users do not have to interpret the tool identifier.
Description93/100
List CSE market/sector indices (ASPI, S&P SL20, and industry sub-indices). Optionally search by name. Returns CSV (symbol,name,index_code,index_name,is_main_index).
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
query
Optional search term to filter indices by name, e.g. "energy" or "banks".
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
Add a human-readable title so users do not have to interpret the tool identifier.
Description95/100
Get historical data for a CSE market/sector index. Returns CSV (date,open,high,low,close,change,change_pct,sector_turnover,sector_volume,sector_trades,price_index,per,pbv,dy,companies_traded,companies_listed), or JSON candidates if the input is ambiguous. Headline indices (ASPI, S&P SL20) populate open/high/low/close; industry sub-indices instead populate sector_turnover/sector_volume/sector_trades and leave high/low empty.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
index
The index symbol, name, or common abbreviation (e.g. "ASPI", "SNP20", "S&P SL20", "Energy", "Banks"). Typos are tolerated. If the input is ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol.
Clear enough to supply this argument.
from
Start date in YYYY-MM-DD format
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
to
End date in YYYY-MM-DD format
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_index_data",
"description": "Get historical data for a CSE market/sector index. Returns CSV (date,open,high,low,close,change,change_pct,sector_turnover,sector_volume,sector_trades,price_index,per,pbv,dy,companies_traded,companies_listed), or JSON candidates if the input is ambiguous. Headline indices (ASPI, S&P SL20) populate open/high/low/close; industry sub-indices instead populate sector_turnover/sector_volume/sector_trades and leave high/low empty.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"index"
],
"properties": {
"to": {
"type": "string",
"description": "End date in YYYY-MM-DD format"
},
"from": {
"type": "string",
"description": "Start date in YYYY-MM-DD format"
},
"index": {
"type": "string",
"description": "The index symbol, name, or common abbreviation (e.g. \"ASPI\", \"SNP20\", \"S&P SL20\", \"Energy\", \"Banks\"). Typos are tolerated. If the input is ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
Add a human-readable title so users do not have to interpret the tool identifier.
Description98/100
Screen CSE stocks by pre-computed technical criteria (moving-average position, relative-strength rating, 52-week range, unusual volume). Every filter is optional and AND-combined; omit a filter to not constrain on it. E.g. above_ema50=true & above_ema200=true & rs_rating_min=80 finds market-leading uptrends; is_52w_high=true finds stocks making new highs today; vol_vs_sma50_pct_min=100 finds unusual volume (trading at 2x+ its 50-day average). Returns CSV, one row per matching stock.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
above_sma10
Filter by price above/below its 10-day simple moving average.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
above_ema21
Filter by price above/below its 21-day exponential moving average.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
above_ema50
Filter by price above/below its 50-day exponential moving average.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
above_ema200
Filter by price above/below its 200-day exponential moving average (long-term trend filter).
Clear enough to supply this argument.
rs_rating_min
Minimum relative-strength rating (1-99 percentile rank vs. the whole market). E.g. 80+ for market leaders.
Clear enough to supply this argument.
rs_rating_max
Maximum relative-strength rating (1-99).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
change_pct_min
Minimum today's percent change.
Clear enough to supply this argument.
change_pct_max
Maximum today's percent change.
Clear enough to supply this argument.
date
YYYY-MM-DD. Defaults to the latest available trading date.
Clear enough to supply this argument.
sort
Column to sort by. Default rs_rating.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
order
Sort direction. Default desc.
Clear enough to supply this argument.
limit
Max results (default 20, max 100).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
is_52w_high
Filter to stocks at a 52-week high today.
Clear enough to supply this argument.
is_52w_low
Filter to stocks at a 52-week low today.
Clear enough to supply this argument.
is_hve
Filter to stocks with the highest volume ever recorded today.
Clear enough to supply this argument.
is_hv1
Filter to stocks with the highest volume in the past 252 trading days.
Clear enough to supply this argument.
is_hvytd
Filter to stocks with the highest volume year-to-date.
Clear enough to supply this argument.
vol_vs_sma50_pct_min
Minimum today's volume vs. its 50-day average volume, as a percent (e.g. 100 = 2x average).
Clear enough to supply this argument.
vol_vs_sma50_pct_max
Maximum volume-vs-50-day-average percent.
Clear enough to supply this argument.
sector
Optional substring filter against the company sector name, e.g. "bank" or "materials".
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Screen CSE sector/headline indices (ASPI, S&P SL20, and industry sub-indices) by the same pre-computed technical criteria as screen_stocks — moving-average position and relative-strength rating. There is no 52-week-range or volume filter here (those are not tracked for indices). Use this to find which sectors are in a sustained uptrend/downtrend, as distinct from get_indices/get_index_data which show a single day's performance. Returns CSV, one row per matching index.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
above_sma10
Filter by price above/below its 10-day simple moving average.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
above_ema21
Filter by price above/below its 21-day exponential moving average.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
above_ema50
Filter by price above/below its 50-day exponential moving average.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
above_ema200
Filter by price above/below its 200-day exponential moving average (long-term trend filter).
Clear enough to supply this argument.
rs_rating_min
Minimum relative-strength rating (1-99 percentile rank vs. the whole market). E.g. 80+ for market leaders.
Clear enough to supply this argument.
rs_rating_max
Maximum relative-strength rating (1-99).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
change_pct_min
Minimum today's percent change.
Clear enough to supply this argument.
change_pct_max
Maximum today's percent change.
Clear enough to supply this argument.
date
YYYY-MM-DD. Defaults to the latest available trading date.
Clear enough to supply this argument.
sort
Column to sort by. Default rs_rating.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
order
Sort direction. Default desc.
Clear enough to supply this argument.
limit
Max results (default 20, max 100).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
Add a human-readable title so users do not have to interpret the tool identifier.
Description97/100
Get pre-computed daily technicals (moving averages, relative-strength rating, 52-week range, volume anomalies) for a CSE stock OR a sector/headline index (ASPI, S&P SL20, industry sub-indices) — one tool for both. Returns CSV, one row per trading day, most recent last. Defaults to the most recent 50 trading days; if more history is available the response says so and how to page further back with offset. If the input is ambiguous, returns JSON candidates instead.
The description explains the capability, when to use it, and what to expect.
Inputs80/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
symbol
A CSE ticker, company name, index symbol/name/abbreviation (e.g. "SAMP", "Sampath Bank", "ASPI", "Energy"), or a typo of any. If the input is ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol.
Clear enough to supply this argument.
from
Start date in YYYY-MM-DD format
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
to
End date in YYYY-MM-DD format
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Max trading days to return, most recent first (before reversing to chronological order). Default 50, max 500.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
offset
Skip this many of the most recent trading days before taking `limit` — use to page further back into history.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_technicals",
"description": "Get pre-computed daily technicals (moving averages, relative-strength rating, 52-week range, volume anomalies) for a CSE stock OR a sector/headline index (ASPI, S&P SL20, industry sub-indices) — one tool for both. Returns CSV, one row per trading day, most recent last. Defaults to the most recent 50 trading days; if more history is available the response says so and how to page further back with offset. If the input is ambiguous, returns JSON candidates instead.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbol"
],
"properties": {
"to": {
"type": "string",
"description": "End date in YYYY-MM-DD format"
},
"from": {
"type": "string",
"description": "Start date in YYYY-MM-DD format"
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 500,
"description": "Max trading days to return, most recent first (before reversing to chronological order). Default 50, max 500.",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Skip this many of the most recent trading days before taking `limit` — use to page further back into history."
},
"symbol": {
"type": "string",
"description": "A CSE ticker, company name, index symbol/name/abbreviation (e.g. \"SAMP\", \"Sampath Bank\", \"ASPI\", \"Energy\"), or a typo of any. If the input is ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Get a daily/weekly/monthly market-wide overview: top gainers/losers, top by volume/turnover/crossings, ASI and S&P SL20 performance, and top/bottom performing sectors. A weekly or monthly summary requested mid-period covers what has happened so far (e.g. Monday through today for a weekly summary requested on a Wednesday), not a wait for the period to finish and not the prior complete period — the response's isPartialPeriod field says which case applies. Returns JSON (not CSV — this is a bundle of several small lists, not one table).
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
period
Summary window.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
date
Reference date in YYYY-MM-DD format, defaults to the latest trading date. For weekly/monthly, this is any date within the period you want — e.g. a date last month for last month's summary.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Max entries per list (gainers, losers, volume, turnover, crossings, top/bottom sectors). Default 5, max 20.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_market_summary",
"description": "Get a daily/weekly/monthly market-wide overview: top gainers/losers, top by volume/turnover/crossings, ASI and S&P SL20 performance, and top/bottom performing sectors. A weekly or monthly summary requested mid-period covers what has happened so far (e.g. Monday through today for a weekly summary requested on a Wednesday), not a wait for the period to finish and not the prior complete period — the response's isPartialPeriod field says which case applies. Returns JSON (not CSV — this is a bundle of several small lists, not one table).",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"date": {
"type": "string",
"description": "Reference date in YYYY-MM-DD format, defaults to the latest trading date. For weekly/monthly, this is any date within the period you want — e.g. a date last month for last month's summary."
},
"limit": {
"type": "integer",
"default": 5,
"maximum": 20,
"description": "Max entries per list (gainers, losers, volume, turnover, crossings, top/bottom sectors). Default 5, max 20.",
"exclusiveMinimum": 0
},
"period": {
"enum": [
"daily",
"weekly",
"monthly"
],
"type": "string",
"default": "daily",
"description": "Summary window."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Get a calendar of corporate actions (dividends, rights issues, share splits) — announcement details, not just a price-adjustment factor. This is the tool for dividends/rights/splits specifically; for other company disclosures (board changes, AGM/EGM notices, trading suspensions, etc.), use get_announcements instead. Omit all filters to browse every corporate action in the dataset, past and future, oldest first; pass from=<today> to jump straight to upcoming ones, which is the most common need. Optionally scope to one company (matches every one of its share classes, not just one) and/or one kind. Returns CSV, one row per action. If the symbol is ambiguous, returns JSON candidates instead.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
symbol
A CSE ticker or company name (e.g. "SAMP" or "Sampath Bank"), typo-tolerant. Matches every share class of that company. Omit for a market-wide calendar. If ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol.
Clear enough to supply this argument.
kind
Restrict to one kind of corporate action.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
from
Start date in YYYY-MM-DD format (by effective/ex-date). Omit for no lower bound.
Clear enough to supply this argument.
to
End date in YYYY-MM-DD format (by effective/ex-date). Omit for no upper bound.
Clear enough to supply this argument.
limit
Max entries to return, oldest first. Default 50, max 500.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
offset
Skip this many of the earliest matching entries before taking `limit` — use to page further in.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_corporate_actions",
"description": "Get a calendar of corporate actions (dividends, rights issues, share splits) — announcement details, not just a price-adjustment factor. This is the tool for dividends/rights/splits specifically; for other company disclosures (board changes, AGM/EGM notices, trading suspensions, etc.), use get_announcements instead. Omit all filters to browse every corporate action in the dataset, past and future, oldest first; pass from=<today> to jump straight to upcoming ones, which is the most common need. Optionally scope to one company (matches every one of its share classes, not just one) and/or one kind. Returns CSV, one row per action. If the symbol is ambiguous, returns JSON candidates instead.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"to": {
"type": "string",
"description": "End date in YYYY-MM-DD format (by effective/ex-date). Omit for no upper bound."
},
"from": {
"type": "string",
"description": "Start date in YYYY-MM-DD format (by effective/ex-date). Omit for no lower bound."
},
"kind": {
"enum": [
"split",
"rights",
"dividend"
],
"type": "string",
"description": "Restrict to one kind of corporate action."
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 500,
"description": "Max entries to return, oldest first. Default 50, max 500.",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Skip this many of the earliest matching entries before taking `limit` — use to page further in."
},
"symbol": {
"type": "string",
"description": "A CSE ticker or company name (e.g. \"SAMP\" or \"Sampath Bank\"), typo-tolerant. Matches every share class of that company. Omit for a market-wide calendar. If ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
Add a human-readable title so users do not have to interpret the tool identifier.
Description99/100
Get the daily foreign-shareholding percentage series for a CSE symbol — how much of the free float is held by foreign investors, tracked day by day. This is instrument-specific (a voting share and its non-voting counterpart can carry different foreign-holding levels), so an explicit instrument suffix (e.g. "SAMP.X0000") is honored rather than overridden with the voting-share default. Returns CSV, most recent `limit` days by default (page further back with `offset`); pass `from`/`to` to scope a range. A `pct` of null means the source data was internally inconsistent for that day (a known data-quality issue), not a true zero. If the symbol is ambiguous, returns JSON candidates instead.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
symbol
A CSE ticker or company name (e.g. "SAMP" or "Sampath Bank"), typo-tolerant. An explicit instrument suffix (e.g. "SAMP.X0000") is respected; otherwise defaults to the voting-share instrument. If ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol.
Clear enough to supply this argument.
from
Start date in YYYY-MM-DD format. Omit for no lower bound.
Clear enough to supply this argument.
to
End date in YYYY-MM-DD format. Omit for no upper bound.
Clear enough to supply this argument.
limit
Max days to return, most recent first internally but returned chronologically. Default 50, max 500.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
offset
Skip this many of the most recent matching days before taking `limit` — use to page further back in history.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_foreign_holdings",
"description": "Get the daily foreign-shareholding percentage series for a CSE symbol — how much of the free float is held by foreign investors, tracked day by day. This is instrument-specific (a voting share and its non-voting counterpart can carry different foreign-holding levels), so an explicit instrument suffix (e.g. \"SAMP.X0000\") is honored rather than overridden with the voting-share default. Returns CSV, most recent `limit` days by default (page further back with `offset`); pass `from`/`to` to scope a range. A `pct` of null means the source data was internally inconsistent for that day (a known data-quality issue), not a true zero. If the symbol is ambiguous, returns JSON candidates instead.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbol"
],
"properties": {
"to": {
"type": "string",
"description": "End date in YYYY-MM-DD format. Omit for no upper bound."
},
"from": {
"type": "string",
"description": "Start date in YYYY-MM-DD format. Omit for no lower bound."
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 500,
"description": "Max days to return, most recent first internally but returned chronologically. Default 50, max 500.",
"exclusiveMinimum": 0
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Skip this many of the most recent matching days before taking `limit` — use to page further back in history."
},
"symbol": {
"type": "string",
"description": "A CSE ticker or company name (e.g. \"SAMP\" or \"Sampath Bank\"), typo-tolerant. An explicit instrument suffix (e.g. \"SAMP.X0000\") is respected; otherwise defaults to the voting-share instrument. If ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
Add a human-readable title so users do not have to interpret the tool identifier.
Description98/100
Get the top-20 ranked shareholder list for a CSE company, as filed each quarter. Shareholders are entity-level (any instrument suffix given is ignored, same as get_financial_statement). Returns CSV (quarter,rank,name,shares,pct). By default only the latest quarter on record is returned — pass all=true to see every quarter (useful for spotting ownership changes over time), or `quarter` to see one specific historical snapshot. If the symbol is ambiguous, returns JSON candidates instead.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
symbol
A CSE ticker or the company name (e.g. "SAMP" or "Sampath Bank"). Typos are tolerated. Shareholder data is entity-level, so any instrument suffix given is ignored. If ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol.
Clear enough to supply this argument.
quarter
Restrict to one filed period, exactly as it appears in the response's meta.quarters list (e.g. "Mar 2025"). Takes precedence over `all`. Omit along with `all` to get just the latest quarter.
Clear enough to supply this argument.
all
Return every quarter on record, oldest first, instead of just the latest.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_top20_shareholders",
"description": "Get the top-20 ranked shareholder list for a CSE company, as filed each quarter. Shareholders are entity-level (any instrument suffix given is ignored, same as get_financial_statement). Returns CSV (quarter,rank,name,shares,pct). By default only the latest quarter on record is returned — pass all=true to see every quarter (useful for spotting ownership changes over time), or `quarter` to see one specific historical snapshot. If the symbol is ambiguous, returns JSON candidates instead.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbol"
],
"properties": {
"all": {
"type": "boolean",
"description": "Return every quarter on record, oldest first, instead of just the latest."
},
"symbol": {
"type": "string",
"description": "A CSE ticker or the company name (e.g. \"SAMP\" or \"Sampath Bank\"). Typos are tolerated. Shareholder data is entity-level, so any instrument suffix given is ignored. If ambiguous, the response returns candidates instead of data; ask the user to pick one and call again with the exact symbol."
},
"quarter": {
"type": "string",
"description": "Restrict to one filed period, exactly as it appears in the response's meta.quarters list (e.g. \"Mar 2025\"). Takes precedence over `all`. Omit along with `all` to get just the latest quarter."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Get a live price snapshot for CSE stocks -- price, change, and change% for one or more symbols, or every CSE stock at once. During market hours (09:30-14:30 IST) this reflects the latest intraday tick; outside market hours it falls back to the last session's closing price. Returns CSV, one row per symbol. Unlike a single-symbol lookup, one bad entry in a batch does not fail the whole call -- a symbol that didn't resolve just comes back with empty price fields in that row, and a trailing note after the table lists which symbols were not found or ambiguous (with candidates for the ambiguous ones) -- call again with the exact symbol for any of those.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
symbols
Comma-separated CSE tickers or company names (e.g. "SAMP,JKH.N0000"), typo-tolerant, up to 50. Omit and set `all=true` instead for every CSE stock. Exactly one of `symbols`/`all` is required.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
all
Return every CSE stock in one response. Mutually exclusive with `symbols`.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_quotes",
"description": "Get a live price snapshot for CSE stocks -- price, change, and change% for one or more symbols, or every CSE stock at once. During market hours (09:30-14:30 IST) this reflects the latest intraday tick; outside market hours it falls back to the last session's closing price. Returns CSV, one row per symbol. Unlike a single-symbol lookup, one bad entry in a batch does not fail the whole call -- a symbol that didn't resolve just comes back with empty price fields in that row, and a trailing note after the table lists which symbols were not found or ambiguous (with candidates for the ambiguous ones) -- call again with the exact symbol for any of those.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"all": {
"type": "boolean",
"description": "Return every CSE stock in one response. Mutually exclusive with `symbols`."
},
"symbols": {
"type": "string",
"description": "Comma-separated CSE tickers or company names (e.g. \"SAMP,JKH.N0000\"), typo-tolerant, up to 50. Omit and set `all=true` instead for every CSE stock. Exactly one of `symbols`/`all` is required."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Render a candlestick + volume chart image (PNG) for a CSE symbol -- hand this to the user directly instead of describing price action from raw OHLC rows. EOD data only for now (daily/weekly/monthly bars, most recent `bars` periods) -- doesn't yet reflect today's live intraday movement. If the symbol is ambiguous, returns JSON candidates instead of an image.
The description explains the capability, when to use it, and what to expect.
Inputs81/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
symbol
A CSE ticker or company name (e.g. "SAMP" or "Sampath Bank"), typo-tolerant. An explicit instrument suffix (e.g. "SAMP.X0000") is respected; otherwise defaults to the voting-share instrument. If ambiguous, the response returns candidates instead of an image; ask the user to pick one and call again with the exact symbol.
Clear enough to supply this argument.
interval
Bar interval. Default daily.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
bars
Number of most-recent bars to show. Default 90, max 250.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
theme
Chart color theme. Default light.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_chart",
"description": "Render a candlestick + volume chart image (PNG) for a CSE symbol -- hand this to the user directly instead of describing price action from raw OHLC rows. EOD data only for now (daily/weekly/monthly bars, most recent `bars` periods) -- doesn't yet reflect today's live intraday movement. If the symbol is ambiguous, returns JSON candidates instead of an image.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"symbol"
],
"properties": {
"bars": {
"type": "integer",
"default": 90,
"maximum": 250,
"description": "Number of most-recent bars to show. Default 90, max 250.",
"exclusiveMinimum": 0
},
"theme": {
"enum": [
"light",
"dark"
],
"type": "string",
"default": "light",
"description": "Chart color theme. Default light."
},
"symbol": {
"type": "string",
"description": "A CSE ticker or company name (e.g. \"SAMP\" or \"Sampath Bank\"), typo-tolerant. An explicit instrument suffix (e.g. \"SAMP.X0000\") is respected; otherwise defaults to the voting-share instrument. If ambiguous, the response returns candidates instead of an image; ask the user to pick one and call again with the exact symbol."
},
"interval": {
"enum": [
"daily",
"weekly",
"monthly"
],
"type": "string",
"default": "daily",
"description": "Bar interval. Default daily."
}
},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
Loading score analytics…
Put your MCP to the test
A few tasks worth trying with this server, chosen from its reviewed tools. These have not been run.
01Get ohlc dataGet OHLCV (open, high, low, close, volume) data for a CSE symbol.
02Get market summaryGet a daily/weekly/monthly market-wide overview: top gainers/losers, top by volume/turnover/crossings, ASI and S&P SL20 performance, and top/bottom performin…
05Get technicalsGet pre-computed daily technicals (moving averages, relative-strength rating, 52-week range, volume anomalies) for a CSE stock OR a sector/headline index (AS…
Want to run these tasks against your MCP server with us?
mcp.ceyloncharts.com setup, tools, quality score, publishing readiness, and alternatives.
How do I add mcp.ceyloncharts.com to Claude, ChatGPT, or Cursor?
Add mcp.ceyloncharts.com to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://mcp.ceyloncharts.com/mcp.
Is mcp.ceyloncharts.com MCP ready for ChatGPT and Claude?
As of October 14, 2026, mcp.ceyloncharts.com scores 94/100 on Manufact's MCP publishing checklist. The scan meets ChatGPT publishing checks and does not yet meet Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is mcp.ceyloncharts.com's MCP tool documentation?
As of October 14, 2026, mcp.ceyloncharts.com scores 68/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 17 of 17 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to mcp.ceyloncharts.com?
As of October 14, 2026, alternatives to mcp.ceyloncharts.com in financial-services on the Manufact MCP catalog include Contract-Factory — Sociétés & SIREN, Kavara Kirk, Ramp Data, Trade It, and Trioteca Hipotecas.
How can mcp.ceyloncharts.com improve its MCP documentation?
get_macro_series is the lowest-scoring reviewed tool at 64/100. No output schema is declared. Add one for structured results so clients can interpret returned fields. Open its review for feedback and a copyable fix prompt, then rerun the documentation review after updating your tool metadata.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.