Koskamo

IoMarkets.tech MCP

Remote MCP server providing tools to validate ISO 20022 messages, verify execution reports, check tokenized asset contracts, and retrieve corporate actions data for AI agents.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

IoMarkets.tech MCP logo, by IoMarkets.techCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by IoMarkets.tech
MCP endpoint (Streamable HTTP)
https://iomarkets.tech/mcp
Vendor documentation

What you can do with it

  • Validate ISO 20022 messages against schema and business rules
  • Verify execution report signatures and payment proofs
  • Check if a token contract is the official tokenized fund
  • Retrieve corporate actions like dividends and splits

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
iomarkets-tech 1.0.0
MCP protocol
2025-06-18
Tools
23 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Tools for IoMarkets.tech, open tools for capital-markets plumbing. list_corporate_actions and holdings_calendar give dividends, splits and mergers of US-listed companies from their SEC filings; get_corporate_action adds the seev.031 message. check_token_contract says whether a token contract is the issuer’s real tokenized fund or security (the Tokenized Asset Map). validate_message checks an ISO 20022 message (pacs.008, pacs.009, pain.001, camt.053, seev.031) against the official schema and business rules; explain_issue says how to fix each problem; list_samples and get_sample give valid and broken messages. The Data API tools list routes and prices, check status and verify signed proofs; explain_execution_request says exactly how to call the paid execution-quality audit, and verify_execution_report checks what it returned (signature, payment, row hash, each row re-scored against the trade and the arrival mid, and the summary recomputed from the rows: the same checks as the /execution-check page). Guides give exact button names. Nothing here pays, sends or stores anything: to buy data, an agent pays the Data API itself over x402.

Tools

23 advertised

get_overview — What IoMarkets.tech is
Advertised by the server during the last successful anonymous check.
Advertised read-only

What IoMarkets.tech is and what is built: the ISO 20022 Test Bench, the Data API (market data for AI agents, paid per request over x402), the main pages, and what comes next.

get_overview input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
get_overview annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_guide — How to do something on the site
Advertised by the server during the last successful anonymous check.
Advertised read-only

Step-by-step instructions, with the exact button names, for one task on iomarkets.tech (checking a message, CI, verifying a proof, calling the Data API…). Without a task, lists the tasks.

get_guide input schema
{
  "type": "object",
  "properties": {
    "task": {
      "enum": [
        "look-around",
        "check-message",
        "try-samples",
        "bench-ci",
        "check-token",
        "holdings-week",
        "token-events",
        "verify-proof",
        "check-execution-report",
        "data-api",
        "console",
        "own-assistant"
      ],
      "type": "string",
      "description": "Which task. Leave out to list them all."
    }
  },
  "additionalProperties": false
}
get_guide annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
explain_term — Explain a word or an ISO 20022 tag
Advertised by the server during the last successful anonymous check.
Advertised read-only

A plain-English meaning of a word used on the site (ISO 20022, schema, IBAN, BIC, LEI, ISIN, UETR, CBPR+, x402, signed proof, MCP…) or of an ISO 20022 XML tag abbreviation such as GrpHdr, CdtrAcct or IntrBkSttlmAmt. Without a term, lists the words.

explain_term input schema
{
  "type": "object",
  "properties": {
    "term": {
      "type": "string",
      "description": "The word or tag to explain."
    }
  },
  "additionalProperties": false
}
explain_term annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
list_messages — Messages the Test Bench checks
Advertised by the server during the last successful anonymous check.
Advertised read-only

The ISO 20022 message types and versions the Test Bench checks, with what each is for.

list_messages input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_messages annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
validate_message — Check an ISO 20022 message
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check one ISO 20022 XML message (pacs.008.001.08, pacs.009.001.08, pacs.002.001.10, pacs.004.001.09, pain.001.001.09, camt.053.001.08, camt.054.001.08 or seev.031.001.14) against the official base schema, then business rules (check digits, totals, cross-element rules, market practice). Returns valid or not, and every problem with its line, element path, stable code and a plain reason. The message type is read from the namespace. The message is checked and not stored. Same code as https://iomarkets.tech/test-bench.

validate_message input schema
{
  "type": "object",
  "required": [
    "xml"
  ],
  "properties": {
    "xml": {
      "type": "string",
      "description": "The whole message, as XML text. A <Document> inside an envelope with an AppHdr is fine."
    },
    "message": {
      "enum": [
        "pacs.008.001.08",
        "pacs.009.001.08",
        "pacs.002.001.10",
        "pacs.004.001.09",
        "pain.001.001.09",
        "camt.053.001.08",
        "camt.054.001.08",
        "seev.031.001.14"
      ],
      "type": "string",
      "description": "Check as this message type instead of the one its namespace names (optional)."
    },
    "schema_only": {
      "type": "boolean",
      "description": "Skip business rules (optional, default false)."
    }
  },
  "additionalProperties": false
}
validate_message annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
explain_issue — Explain a Test Bench issue code
Advertised by the server during the last successful anonymous check.
Advertised read-only

What a Test Bench issue code (such as IBAN_CHECKSUM, BALANCE_MISMATCH or OUT_OF_ORDER) means and how to fix it. Without a code, lists every code.

explain_issue input schema
{
  "type": "object",
  "properties": {
    "code": {
      "type": "string",
      "description": "The issue code from a report."
    }
  },
  "additionalProperties": false
}
explain_issue annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
list_samples — Sample messages
Advertised by the server during the last successful anonymous check.
Advertised read-only

The Test Bench sample library: a valid message of each type and broken ones, each with the issue code it raises. Use get_sample for the XML.

list_samples input schema
{
  "type": "object",
  "properties": {
    "message": {
      "enum": [
        "pacs.008.001.08",
        "pacs.009.001.08",
        "pacs.002.001.10",
        "pacs.004.001.09",
        "pain.001.001.09",
        "camt.053.001.08",
        "camt.054.001.08",
        "seev.031.001.14"
      ],
      "type": "string",
      "description": "Only samples of this message type (optional)."
    }
  },
  "additionalProperties": false
}
list_samples annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_sample — One sample message
Advertised by the server during the last successful anonymous check.
Advertised read-only

The XML of one sample message from list_samples, to use as a starting point or in tests. Every party and account in it is made up.

get_sample input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "enum": [
        "pacs.008-valid",
        "pacs.009-valid",
        "pacs.002-valid",
        "pacs.004-valid",
        "pain.001-valid",
        "camt.053-valid",
        "camt.054-valid",
        "seev.031-valid",
        "pacs.008-in-envelope",
        "pacs.008-missing-charge-bearer",
        "pacs.008-msgid-too-long",
        "pacs.008-lowercase-currency",
        "pacs.008-out-of-order",
        "pacs.008-impossible-date",
        "pacs.008-unknown-element",
        "pacs.008-bad-uetr",
        "pacs.008-unclosed-tag",
        "pacs.008-iban-checksum",
        "pacs.008-bic-country",
        "pacs.008-lei-checksum",
        "pacs.008-count-mismatch",
        "pacs.008-no-settlement-date",
        "pacs.008-yen-decimals",
        "pacs.008-fx-without-rate",
        "pacs.009-total-mismatch",
        "pacs.009-cover-without-reimbursement",
        "pain.001-control-sum",
        "pain.001-cheque-with-account",
        "camt.053-balance-mismatch",
        "camt.053-entry-count",
        "seev.031-isin-check-digit",
        "seev.031-paid-before-record-date",
        "seev.031-two-statuses",
        "seev.031-dividend-without-cash",
        "pacs.002-status-too-long",
        "pacs.002-accepted-but-rejected",
        "pacs.002-narrative-without-text",
        "pacs.002-original-group-twice",
        "pacs.004-missing-returned-amount",
        "pacs.004-total-mismatch",
        "pacs.004-charges-without-instructed-amount",
        "pacs.004-group-return-with-transactions",
        "pacs.004-fx-without-rate",
        "camt.054-credit-spelled-out",
        "camt.054-entry-sum",
        "camt.054-two-paginations",
        "camt.054-empty-bank-code",
        "pacs.008-unsupported-version"
      ],
      "type": "string",
      "description": "The sample id, from list_samples."
    }
  },
  "additionalProperties": false
}
get_sample annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
list_data_endpoints — Data API routes and prices
Advertised by the server during the last successful anonymous check.
Advertised read-only

The Data API routes at https://api.iomarkets.tech, what each returns and its price per call in USDC, with how an AI agent pays (x402 on Algorand mainnet, no account).

list_data_endpoints input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_data_endpoints annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_api_status — Is the Data API up?
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Whether the Data API at https://api.iomarkets.tech is answering right now, from its /health check.

get_api_status input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
get_api_status annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
estimate_data_api_cost — Estimate Data API spend
Advertised by the server during the last successful anonymous check.
Advertised read-only

What a monthly volume of Data API calls costs at the per-call x402 prices, against the indicative subscription plans. Give calls per month for each route; routes left out count as zero.

estimate_data_api_cost input schema
{
  "type": "object",
  "properties": {
    "candles": {
      "type": "number",
      "description": "Calls a month to /v1/candles (Candles)."
    },
    "proof_price": {
      "type": "number",
      "description": "Calls a month to /v1/proof/price (Price proof)."
    },
    "signal_vwap": {
      "type": "number",
      "description": "Calls a month to /v1/signal/vwap (VWAP signal)."
    },
    "proof_execution": {
      "type": "number",
      "description": "Calls a month to /v1/proof/execution (Execution proof)."
    },
    "signal_imbalance": {
      "type": "number",
      "description": "Calls a month to /v1/signal/imbalance (Order imbalance)."
    }
  },
  "additionalProperties": false
}
estimate_data_api_cost annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
verify_proof — Check a Data API proof
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Check a signed proof (the { payload, signature } JSON a Data API proof route returns): that the ed25519 signature matches the published IoMarkets key, and that its USDC payment is confirmed on Algorand mainnet (looked up on a public indexer IoMarkets does not run).

verify_proof input schema
{
  "type": "object",
  "required": [
    "proof"
  ],
  "properties": {
    "proof": {
      "type": "string",
      "description": "The proof as JSON text: { \"payload\": {…}, \"signature\": \"…\" }."
    }
  },
  "additionalProperties": false
}
verify_proof annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
explain_execution_request — How to call the execution-quality audit
Advertised by the server during the last successful anonymous check.
Advertised read-only

Exactly how to call POST https://api.iomarkets.tech/v1/proof/execution, the paid best-execution audit: the body (pair, one of BTC-USDC, ETH-USDC, SOL-USDC, and fills: ts, fill_price, qty, side), the limits (fills per call, how old a fill may be, how close the market trade must be), the price, what comes back, and the answers that are not charged (400 for a bad body or an unsupported pair, 422 when no fill matches a trade). Give a draft body to check it with the API's own validation first. Read from the API's code; this tool calls nothing and pays nothing.

explain_execution_request input schema
{
  "type": "object",
  "properties": {
    "body": {
      "type": "string",
      "description": "A draft request body as JSON text, { \"pair\": \"BTC-USDC\", \"fills\": [...] }, to check before paying (optional)."
    }
  },
  "additionalProperties": false
}
explain_execution_request annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
verify_execution_report — Check an execution-quality report
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Check the whole JSON that POST https://api.iomarkets.tech/v1/proof/execution returned ({ audit, summary, attestation }): that the ed25519 signature matches the published IoMarkets key, that its USDC payment is confirmed on Algorand mainnet (a public indexer IoMarkets does not run), that the rows hash to the signed audit_sha256, and that every row and the summary recompute with the API's own scoring, against the last trade and against the arrival mid (side-aware cost, qty-weighted averages, spread, matched and unmatched fills). The same checks as the page at https://iomarkets.tech/execution-check. Returns each check, and the recomputed summary as structured data.

verify_execution_report input schema
{
  "type": "object",
  "required": [
    "report"
  ],
  "properties": {
    "report": {
      "type": "string",
      "description": "The response body as JSON text, exactly as received: { \"audit\": [...], \"summary\": {...}, \"attestation\": { \"payload\": {...}, \"signature\": \"…\" } }."
    }
  },
  "additionalProperties": false
}
verify_execution_report annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
check_token_contract — Is this the real tokenized security?
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check a token contract against the Tokenized Asset Map: is it the issuer's own contract for a tokenized fund or security on that chain? Verdicts: official, other-chain (the address is listed, but on another chain), impostor (a listed symbol on this chain, a different contract), unknown (not in the map, which says nothing either way).

check_token_contract input schema
{
  "type": "object",
  "required": [
    "chain",
    "address"
  ],
  "properties": {
    "chain": {
      "enum": [
        "ethereum",
        "polygon",
        "arbitrum",
        "avalanche",
        "base",
        "bnb",
        "mantle",
        "plume",
        "sei",
        "tempo",
        "optimism",
        "ink",
        "monad",
        "hyperevm",
        "xlayer",
        "etherlink",
        "arc",
        "robinhood",
        "solana",
        "stellar",
        "aptos",
        "sui",
        "xrpl",
        "noble",
        "ton",
        "tron",
        "starknet"
      ],
      "type": "string",
      "description": "The chain the contract is on."
    },
    "symbol": {
      "type": "string",
      "description": "The symbol the token shows (optional), to catch impostors."
    },
    "address": {
      "type": "string",
      "description": "The contract: 0x address, Solana mint, Stellar CODE:ISSUER, Aptos/Sui type tag, …"
    }
  },
  "additionalProperties": false
}
check_token_contract annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
list_tokenized_assets — Tokenized securities in the map
Advertised by the server during the last successful anonymous check.
Advertised read-only

The securities in the Tokenized Asset Map with their identifiers (FIGI, ISIN where the issuer gives it) and the chains they are tokenized on. Optionally filter by issuer, name, symbol, ticker, ISIN or FIGI.

list_tokenized_assets input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Filter text (optional)."
    }
  },
  "additionalProperties": false
}
list_tokenized_assets annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_tokenized_asset — One tokenized security
Advertised by the server during the last successful anonymous check.
Advertised read-only

One Asset Map entry in full: the security, every token contract chain by chain, the issuer sources each comes from, and whether its IoMarkets signature verifies.

get_tokenized_asset input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "enum": [
        "franklin-fobxx",
        "franklin-onchain-lux-ib",
        "franklin-onchain-lux-ab-ddis",
        "franklin-onchain-sg-usd-st",
        "ondo-ousg",
        "ondo-usdy",
        "superstate-ustb",
        "superstate-uscc",
        "superstate-cushy",
        "superstate-vbdc",
        "superstate-fwdi",
        "circle-usyc",
        "spiko-ustbl",
        "spiko-eutbl",
        "spiko-uktbl",
        "spiko-spkcc",
        "spiko-eurspkcc",
        "spiko-safo",
        "spiko-eursafo",
        "spiko-gbpsafo",
        "spiko-chfsafo",
        "xstocks-strcx",
        "xstocks-mstrx",
        "xstocks-crclx",
        "xstocks-tslax",
        "xstocks-spcxx",
        "xstocks-spyx",
        "xstocks-googlx",
        "xstocks-qqqx",
        "xstocks-nvdax",
        "xstocks-sndkx",
        "xstocks-mux",
        "xstocks-coinx",
        "xstocks-aaplx",
        "xstocks-skhyx",
        "xstocks-gldx",
        "xstocks-intcx",
        "xstocks-metax",
        "xstocks-soxlx",
        "xstocks-hoodx",
        "xstocks-amznx",
        "xstocks-msftx",
        "xstocks-avgox",
        "xstocks-mrvlx",
        "xstocks-amdx",
        "xstocks-tsmx",
        "xstocks-orclx",
        "xstocks-ewyx",
        "xstocks-jaaax",
        "xstocks-tqqqx",
        "xstocks-bmnrx",
        "ondo-stocks-aaplon",
        "ondo-stocks-amdon",
        "ondo-stocks-amznon",
        "ondo-stocks-avgoon",
        "ondo-stocks-bmnron",
        "ondo-stocks-coinon",
        "ondo-stocks-crclon",
        "ondo-stocks-ewyon",
        "ondo-stocks-gldon",
        "ondo-stocks-googlon",
        "ondo-stocks-hoodon",
        "ondo-stocks-intcon",
        "ondo-stocks-jaaaon",
        "ondo-stocks-metaon",
        "ondo-stocks-mrvlon",
        "ondo-stocks-msfton",
        "ondo-stocks-mstron",
        "ondo-stocks-muon",
        "ondo-stocks-nvdaon",
        "ondo-stocks-orclon",
        "ondo-stocks-qqqon",
        "ondo-stocks-skhyon",
        "ondo-stocks-sndkon",
        "ondo-stocks-spyon",
        "ondo-stocks-strcon",
        "ondo-stocks-tqqqon",
        "ondo-stocks-tslaon",
        "ondo-stocks-tsmon",
        "ondo-stocks-soxlon",
        "ondo-stocks-spcxon"
      ],
      "type": "string",
      "description": "The entry id, from list_tokenized_assets."
    }
  },
  "additionalProperties": false
}
get_tokenized_asset annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
verify_asset_with_issuer — Check an entry against the issuer, live
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Fetch the issuer's own sources for one Asset Map entry now (its contracts page, its public API, or its stellar.toml) and confirm every listed contract is still there, so trust needn't rest on IoMarkets.

verify_asset_with_issuer input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "enum": [
        "franklin-fobxx",
        "franklin-onchain-lux-ib",
        "franklin-onchain-lux-ab-ddis",
        "franklin-onchain-sg-usd-st",
        "ondo-ousg",
        "ondo-usdy",
        "superstate-ustb",
        "superstate-uscc",
        "superstate-cushy",
        "superstate-vbdc",
        "superstate-fwdi",
        "circle-usyc",
        "spiko-ustbl",
        "spiko-eutbl",
        "spiko-uktbl",
        "spiko-spkcc",
        "spiko-eurspkcc",
        "spiko-safo",
        "spiko-eursafo",
        "spiko-gbpsafo",
        "spiko-chfsafo",
        "xstocks-strcx",
        "xstocks-mstrx",
        "xstocks-crclx",
        "xstocks-tslax",
        "xstocks-spcxx",
        "xstocks-spyx",
        "xstocks-googlx",
        "xstocks-qqqx",
        "xstocks-nvdax",
        "xstocks-sndkx",
        "xstocks-mux",
        "xstocks-coinx",
        "xstocks-aaplx",
        "xstocks-skhyx",
        "xstocks-gldx",
        "xstocks-intcx",
        "xstocks-metax",
        "xstocks-soxlx",
        "xstocks-hoodx",
        "xstocks-amznx",
        "xstocks-msftx",
        "xstocks-avgox",
        "xstocks-mrvlx",
        "xstocks-amdx",
        "xstocks-tsmx",
        "xstocks-orclx",
        "xstocks-ewyx",
        "xstocks-jaaax",
        "xstocks-tqqqx",
        "xstocks-bmnrx",
        "ondo-stocks-aaplon",
        "ondo-stocks-amdon",
        "ondo-stocks-amznon",
        "ondo-stocks-avgoon",
        "ondo-stocks-bmnron",
        "ondo-stocks-coinon",
        "ondo-stocks-crclon",
        "ondo-stocks-ewyon",
        "ondo-stocks-gldon",
        "ondo-stocks-googlon",
        "ondo-stocks-hoodon",
        "ondo-stocks-intcon",
        "ondo-stocks-jaaaon",
        "ondo-stocks-metaon",
        "ondo-stocks-mrvlon",
        "ondo-stocks-msfton",
        "ondo-stocks-mstron",
        "ondo-stocks-muon",
        "ondo-stocks-nvdaon",
        "ondo-stocks-orclon",
        "ondo-stocks-qqqon",
        "ondo-stocks-skhyon",
        "ondo-stocks-sndkon",
        "ondo-stocks-spyon",
        "ondo-stocks-strcon",
        "ondo-stocks-tqqqon",
        "ondo-stocks-tslaon",
        "ondo-stocks-tsmon",
        "ondo-stocks-soxlon",
        "ondo-stocks-spcxon"
      ],
      "type": "string",
      "description": "The entry id."
    }
  },
  "additionalProperties": false
}
verify_asset_with_issuer annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
list_corporate_actions — Dividends, splits and mergers
Advertised by the server during the last successful anonymous check.
Advertised read-only

Corporate actions of US-listed companies from their own SEC EDGAR filings (8-Ks of US companies, 6-Ks of foreign private issuers): cash dividends (amount in the stated currency, per share or per ADS, ex, record and payment dates), stock splits, reverse splits and completed mergers (cash or shares per share). Filter by holdings (tickers, CIKs or FIGIs), by days (any of an event's dates between from and to) and by type. Each event links its filing and the sentence or table row it was read from. Also gives the iCalendar subscription URL for the same holdings and types (calendarUrl in structuredContent).

list_corporate_actions input schema
{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "description": "Last day, YYYY-MM-DD (optional)."
    },
    "from": {
      "type": "string",
      "description": "First day, YYYY-MM-DD (optional)."
    },
    "types": {
      "type": "array",
      "items": {
        "enum": [
          "dividend",
          "split",
          "reverse-split",
          "merger"
        ],
        "type": "string"
      },
      "description": "Kinds of event (optional)."
    },
    "holdings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Tickers, SEC CIKs or FIGIs (optional; none means every company)."
    }
  },
  "additionalProperties": false
}
list_corporate_actions annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
holdings_calendar — What affects my holdings this week
Advertised by the server during the last successful anonymous check.
Advertised read-only

For a list of holdings (tickers, CIKs or FIGIs), every ex-date, record date, payment date and effective date in one week, day by day. The week holding `day`, Monday to Sunday; this week by default. Ends with an iCalendar (webcal) subscription URL for those holdings, to give the user for their calendar app.

holdings_calendar input schema
{
  "type": "object",
  "required": [
    "holdings"
  ],
  "properties": {
    "day": {
      "type": "string",
      "description": "Any day in the week, YYYY-MM-DD (optional; today by default)."
    },
    "holdings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Tickers, SEC CIKs or FIGIs."
    }
  },
  "additionalProperties": false
}
holdings_calendar annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_corporate_action — One corporate action, with its seev.031 message
Advertised by the server during the last successful anonymous check.
Advertised read-only

One event in full: every date and term, the filing and the sentence or table row it came from, tokenized versions in the Asset Map, and the event as an ISO 20022 seev.031.001.14 notification (checked by the Test Bench).

get_corporate_action input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The event id, from list_corporate_actions or holdings_calendar."
    }
  },
  "additionalProperties": false
}
get_corporate_action annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
token_corporate_actions — What is coming for the stock behind this token
Advertised by the server during the last successful anonymous check.
Advertised read-only

For a token contract that the Asset Map lists as a tokenized stock or ETF (such as an xStock): the security it tracks, and that security's dividends, splits and mergers from the corporate actions feed, each with what it does to the token. Answers 'I hold this token; what is coming?' in one call.

token_corporate_actions input schema
{
  "type": "object",
  "required": [
    "chain",
    "address"
  ],
  "properties": {
    "chain": {
      "enum": [
        "ethereum",
        "polygon",
        "arbitrum",
        "avalanche",
        "base",
        "bnb",
        "mantle",
        "plume",
        "sei",
        "tempo",
        "optimism",
        "ink",
        "monad",
        "hyperevm",
        "xlayer",
        "etherlink",
        "arc",
        "robinhood",
        "solana",
        "stellar",
        "aptos",
        "sui",
        "xrpl",
        "noble",
        "ton",
        "tron",
        "starknet"
      ],
      "type": "string",
      "description": "The chain the token is on."
    },
    "address": {
      "type": "string",
      "description": "The token contract."
    }
  },
  "additionalProperties": false
}
token_corporate_actions annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}
get_roadmap — What is built and what is next
Advertised by the server during the last successful anonymous check.
Advertised read-only

What IoMarkets.tech has built and is building next, in the same words as iomarkets.org/roadmap.

get_roadmap input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
get_roadmap annotations
{
  "readOnlyHint": true,
  "openWorldHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
500 ms
95th percentile latency
500 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 500 ms · metadata changed · 23 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http iomarkets-tech-mcp https://iomarkets.tech/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add iomarkets-tech-mcp --url https://iomarkets.tech/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable iomarkets-tech-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "iomarkets-tech-mcp": {
      "url": "https://iomarkets.tech/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "iomarkets-tech-mcp": {
      "type": "streamableHttp",
      "url": "https://iomarkets.tech/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start iomarkets-tech-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "iomarkets-tech-mcp": {
      "type": "http",
      "url": "https://iomarkets.tech/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http iomarkets-tech-mcp https://iomarkets.tech/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "iomarkets-tech-mcp": {
      "url": "https://iomarkets.tech/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "iomarkets-tech-mcp": {
      "serverUrl": "https://iomarkets.tech/mcp"
    }
  }
}

Let your agent find its tools

Find servers like IoMarkets.tech MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.