Koskamo

PtData MCP

PtData MCP provides point-in-time US equity fundamentals, index constituents, SEC filings, and earnings events for AI agents and quants. It mirrors the four main API endpoints as tools, supporting free and paid tiers with rate limits.

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.

PtData MCP logo, by PtData S.A.Vendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by PtData S.A.
You need:Free tier is open over HTTPS — no API key.Pro: same URL + Bearer in the client config.
MCP endpoint (Streamable HTTP)
https://api.ptdata.io/mcp
Vendor documentation

What you can do with it

  • Retrieve point-in-time financial fundamentals like revenue and shares outstanding
  • Get survivorship-free index constituents for SP500, DJIA, etc.
  • Access SEC filings available on a specific date
  • Fetch earnings event data including acceptance time and price reaction

Source and maintenance

Vendor evidenceRegistry 3.3.2

Protocol and capabilities

Server
ptdata 3.3.2
MCP protocol
2025-06-18
Tools
4 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "logging": {},
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "subscribe": false,
    "listChanged": true
  },
  "extensions": {
    "io.modelcontextprotocol/ui": {}
  },
  "experimental": {}
}

Server-provided instructions

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

PtData is a point-in-time US equity database: fundamentals, index constituents, SEC filing metadata, and earnings events. get_fundamentals, get_index_constituents, and get_filing_metadata take as_of_date (YYYY-MM-DD) and return only what was public on that date. get_earnings_event takes ticker, fiscal_year, and fiscal_period (FY or Q1..Q4) and does not take as_of_date. A requested fundamental with no value is returned under unavailable with a reason, not omitted.

Tools

4 advertised

get_index_constituents — Get index constituents
Advertised by the server during the last successful anonymous check.
Advertised read-only

S&P 500 (or other index) constituents as understood on `as_of_date` (YYYY-MM-DD), survivorship-free. Point-in-time, with lineage.

get_index_constituents input schema
{
  "type": "object",
  "required": [
    "index",
    "as_of_date"
  ],
  "properties": {
    "index": {
      "type": "string"
    },
    "as_of_date": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_index_constituents output schema
{
  "type": "object",
  "additionalProperties": true
}
get_index_constituents annotations
{
  "title": "Get index constituents",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_fundamentals — Get point-in-time fundamentals
Advertised by the server during the last successful anonymous check.
Advertised read-only

Point-in-time fundamentals for `ticker` as known on `as_of_date` (YYYY-MM-DD). Returns each available metric's value for the fiscal period with source + knowledge time + lineage under `metrics`. Any requested metric with no value appears under `unavailable` with `{reason, available_alternatives, docs_url}` instead of being silently dropped — e.g. asking a bank/broker/insurer for `revenue` explains that financials report an as-reported revenue FAMILY and lists the populated members (net_interest_income, noninterest_income, total_net_revenue, premiums_earned, net_investment_income, total_revenue). Check `unavailable` before concluding a figure does not exist.

get_fundamentals input schema
{
  "type": "object",
  "required": [
    "ticker",
    "as_of_date",
    "metrics"
  ],
  "properties": {
    "ticker": {
      "type": "string"
    },
    "metrics": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "as_of_date": {
      "type": "string"
    },
    "fiscal_year": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "fiscal_period": {
      "type": "string",
      "default": "FY"
    }
  },
  "additionalProperties": false
}
get_fundamentals output schema
{
  "type": "object",
  "additionalProperties": true
}
get_fundamentals annotations
{
  "title": "Get point-in-time fundamentals",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_filing_metadata — Get filing metadata
Advertised by the server during the last successful anonymous check.
Advertised read-only

SEC filings for `ticker` available on `as_of_date`, newest first, with amendment linkage.

get_filing_metadata input schema
{
  "type": "object",
  "required": [
    "ticker",
    "as_of_date"
  ],
  "properties": {
    "ticker": {
      "type": "string"
    },
    "form_type": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "as_of_date": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_filing_metadata output schema
{
  "type": "object",
  "additionalProperties": true
}
get_filing_metadata annotations
{
  "title": "Get filing metadata",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_earnings_event — Get earnings event
Advertised by the server during the last successful anonymous check.
Advertised read-only

Earnings event: 8-K acceptance timestamp, as-reported figures, and the derived realized price reaction. `fiscal_period` is FY or Q1..Q4.

get_earnings_event input schema
{
  "type": "object",
  "required": [
    "ticker",
    "fiscal_year",
    "fiscal_period"
  ],
  "properties": {
    "ticker": {
      "type": "string"
    },
    "fiscal_year": {
      "type": "integer"
    },
    "fiscal_period": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_earnings_event output schema
{
  "type": "object",
  "additionalProperties": true
}
get_earnings_event annotations
{
  "title": "Get earnings event",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

0 advertised

No prompt definitions available.

Resources

0 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
471 ms
95th percentile latency
471 ms

Maintenance history

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

  • · probe · passed · 471 ms · metadata changed · 4 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(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 ptdata-mcp https://api.ptdata.io/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 ptdata-mcp --url https://api.ptdata.io/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start ptdata-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "ptdata-mcp": {
      "type": "http",
      "url": "https://api.ptdata.io/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 ptdata-mcp https://api.ptdata.io/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": {
    "ptdata-mcp": {
      "url": "https://api.ptdata.io/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": {
    "ptdata-mcp": {
      "serverUrl": "https://api.ptdata.io/mcp"
    }
  }
}

Let your agent find its tools

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

Do you run PtData MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing