# SEC Report Chart & Table Analyzer (`ntriqpro/sec-visual-analysis-mcp`) Actor

Extract data from charts and tables in SEC documents. Convert visualizations to structured data.

- **URL**: https://apify.com/ntriqpro/sec-visual-analysis-mcp.md
- **Developed by:** [daehwan kim](https://apify.com/ntriqpro) (community)
- **Categories:** MCP servers, AI, Business
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event + usage

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## SEC Visual Analysis MCP Server

Real MCP (Model Context Protocol) server for analyzing charts, tables, and images in SEC EDGAR filings. Connect directly from Claude Desktop, Cursor, or any MCP client.

### Important Disclaimer

**IMPORTANT LEGAL NOTICES:**

This tool analyzes **VISUAL CONTENT ONLY** (charts, tables, images) from SEC filings. Key limitations:

- **Does NOT verify** the accuracy or validity of source documents
- **Does NOT interpret** management guidance, forward-looking statements, or narrative text
- **Does NOT provide** investment recommendations or financial advice
- **NOT suitable** for investment decisions without professional human review
- **NOT a substitute** for professional financial analysis or due diligence

**Before making any investment decisions based on analysis from this tool:**
1. Consult a licensed financial advisor or investment professional
2. Review the complete original SEC filing documents
3. Verify all data points with official sources
4. Conduct independent due diligence

**Data Source:** SEC EDGAR (public domain, 17 U.S.C. § 105)

---

### Connect from Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "sec-visual-analysis": {
      "url": "https://ntriqpro--sec-visual-analysis-mcp.apify.actor/mcp"
    }
  }
}
````

Restart Claude Desktop. The 5 tools will be available immediately.

### 5 Tools

| Tool | Description | Input | Price |
|------|-------------|-------|-------|
| `analyze_chart` | Interpret charts/graphs from SEC filings | Image URL + optional context | $0.20 |
| `extract_table` | Extract structured data from table images | Image URL | $0.20 |
| `filing_summary` | Analyze key visual elements of filing pages | Image URL + filing type | $0.25 |
| `compare_charts` | Compare two charts side-by-side | Two image URLs + optional metric | $0.30 |
| `risk_indicators` | Detect visual risk signals in financial charts | Image URL | $0.20 |

### How It Works

This is a **real MCP server** using:

- Apify Standby mode (always-on, no cold start)
- Streamable HTTP transport (`/mcp` endpoint)
- `@modelcontextprotocol/sdk` for protocol compliance

Unlike regular Apify actors that require API calls, this server speaks native MCP protocol — Claude Desktop connects directly.

### Supported SEC Filings

- **10-K** — Annual reports
- **10-Q** — Quarterly reports
- **8-K** — Current reports
- Other SEC EDGAR documents with visual content

### Example Use Cases

#### 1. Analyze Revenue Trends

```
User: "Analyze this revenue chart from AAPL's 10-K"
Tool: analyze_chart(imageUrl, "revenue chart from AAPL 10-K")
Result: Trend analysis, YoY changes, insights
```

#### 2. Extract Financial Table Data

```
User: "Extract this balance sheet data"
Tool: extract_table(imageUrl)
Result: Structured JSON with rows/columns
```

#### 3. Compare Quarterly Performance

```
User: "Compare Q2 vs Q3 earnings"
Tool: compare_charts(q2_imageUrl, q3_imageUrl, "quarterly earnings")
Result: Side-by-side comparison with trend analysis
```

#### 4. Identify Risk Signals

```
User: "Check this chart for warning signs"
Tool: risk_indicators(imageUrl)
Result: Risk assessment (LOW/MEDIUM/HIGH/CRITICAL), anomalies, recommendations
```

#### 5. Quick Page Summary

```
User: "What's on this filing page?"
Tool: filing_summary(imageUrl, "10-Q")
Result: Visual elements present, key metrics, summary
```

### Data Sources

All chart/image analysis powered by local AI vision model (ntriq vision server). No external AI APIs. Zero privacy concerns.

### Pricing

Pay per event. Only charged when a tool executes successfully. Platform usage (MCP protocol) is free.

#### Cost Breakdown

- `analyze_chart`: $0.20
- `extract_table`: $0.20
- `filing_summary`: $0.25
- `compare_charts`: $0.30
- `risk_indicators`: $0.20

### Technical Details

#### Vision API Integration

Calls `https://vision.ntriq.co.kr/analyze/image` with:

- Image URL
- Custom prompt (SEC/financial specialized)
- Timeout: 120-180 seconds
- Max tokens: 1500-3000 depending on tool

#### Tool Output Format

All tools return JSON with:

```json
{
  "status": "success|error",
  "analysis": "text or structured data",
  "processing_time_ms": 5000,
  "model": "vision-model-version"
}
```

### Limitations

1. **Image Quality** — Results depend on clarity/resolution of input images
2. **Partially Obscured Content** — Cannot analyze charts/tables that are cut off or unclear
3. **Text-Heavy Filings** — Best for documents with significant visual content (charts, graphs, tables)
4. **Non-English Filings** — Optimized for English-language SEC documents
5. **Complex Financial Instruments** — May not accurately analyze highly specialized derivatives/complex products

### Requirements

- Claude Desktop (latest version recommended)
- MCP client support
- Internet connection to vision.ntriq.co.kr
- Valid Apify API key for billing (if using on Apify Cloud)

### Performance

- Average response time: 5-15 seconds
- Timeout: 120 seconds per analysis
- Max concurrent requests: Limited by Apify container

### Legal & Disclaimers

- **Not Financial Advice** — This tool does not provide financial or investment advice
- **User Responsibility** — You are responsible for all decisions made based on this tool's output
- **Accuracy Not Guaranteed** — Visual analysis may contain errors or misinterpretations
- **No Liability** — The tool provider assumes no liability for decisions or losses based on analysis
- **SEC Data** — All analyzed data comes from SEC EDGAR, which is public domain

**Data Source:** Securities and Exchange Commission, EDGAR Database
**License:** Public domain (17 U.S.C. § 105)

***

### Support

For issues:

1. Verify image URL is publicly accessible
2. Check image clarity and completeness
3. Ensure filing type is correctly specified
4. Review error message for specific failures

***

*SEC Visual Analysis MCP Server v1.0*
*Built with Apify Standby Mode + Claude MCP SDK*

# Actor input Schema

## `standbyTimeout` (type: `integer`):

How long (in seconds) the MCP server stays active waiting for tool calls before shutting down. Default is 300 seconds (5 minutes). Increase for long-running sessions.

## `logLevel` (type: `string`):

Controls how much detail appears in the Actor log. Use 'info' for normal operation, 'debug' for troubleshooting, or 'error' for minimal output.

## Actor input object example

```json
{
  "standbyTimeout": 300,
  "logLevel": "info"
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "standbyTimeout": 300,
    "logLevel": "info"
};

// Run the Actor and wait for it to finish
const run = await client.actor("ntriqpro/sec-visual-analysis-mcp").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "standbyTimeout": 300,
    "logLevel": "info",
}

# Run the Actor and wait for it to finish
run = client.actor("ntriqpro/sec-visual-analysis-mcp").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "standbyTimeout": 300,
  "logLevel": "info"
}' |
apify call ntriqpro/sec-visual-analysis-mcp --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=ntriqpro/sec-visual-analysis-mcp",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SEC Report Chart & Table Analyzer",
        "description": "Extract data from charts and tables in SEC documents. Convert visualizations to structured data.",
        "version": "1.0",
        "x-build-id": "nMV4Ae8yyddtw6v3J"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ntriqpro~sec-visual-analysis-mcp/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ntriqpro-sec-visual-analysis-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/ntriqpro~sec-visual-analysis-mcp/runs": {
            "post": {
                "operationId": "runs-sync-ntriqpro-sec-visual-analysis-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/ntriqpro~sec-visual-analysis-mcp/run-sync": {
            "post": {
                "operationId": "run-sync-ntriqpro-sec-visual-analysis-mcp",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "standbyTimeout": {
                        "title": "Standby Timeout (seconds)",
                        "minimum": 60,
                        "maximum": 3600,
                        "type": "integer",
                        "description": "How long (in seconds) the MCP server stays active waiting for tool calls before shutting down. Default is 300 seconds (5 minutes). Increase for long-running sessions."
                    },
                    "logLevel": {
                        "title": "Log Level",
                        "enum": [
                            "info",
                            "debug",
                            "error"
                        ],
                        "type": "string",
                        "description": "Controls how much detail appears in the Actor log. Use 'info' for normal operation, 'debug' for troubleshooting, or 'error' for minimal output."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
