# API Usage Guide Complete guide for using the SEC Financial Report MCP Server API. ## Base URL After deployment: `https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space` ## Interactive Documentation - **Swagger UI**: `{BASE_URL}/docs` - **ReDoc**: `{BASE_URL}/redoc` ## Quick Start ### Python Example ```python import requests BASE_URL = "https://YOUR_SPACE_URL.hf.space" # 1. Search company response = requests.post( f"{BASE_URL}/api/search_company", json={"company_name": "NVIDIA"} ) company = response.json() print(f"Found: {company['name']} (CIK: {company['cik']})") # 2. Get financial data response = requests.post( f"{BASE_URL}/api/get_financial_data", json={"cik": company['cik'], "period": "2024"} ) data = response.json() print(f"Revenue: ${data['total_revenue']:,.0f}") print(f"Net Income: ${data['net_income']:,.0f}") print(f"EPS: ${data['earnings_per_share']:.2f}") ``` ## Base URL ``` https://your-space-name.hf.space ``` ## API Endpoints ### 1. Search Company by Name **Endpoint:** `POST /api/search_company` **Request:** ```json { "company_name": "NVIDIA" } ``` **Response:** ```json { "cik": "0001045810", "name": "NVIDIA CORP", "ticker": "NVDA", "error": null } ``` **cURL Example:** ```bash curl -X POST "https://your-space-name.hf.space/api/search_company" \ -H "Content-Type: application/json" \ -d '{"company_name": "NVIDIA"}' ``` **Python Example:** ```python import requests url = "https://your-space-name.hf.space/api/search_company" payload = {"company_name": "NVIDIA"} response = requests.post(url, json=payload) print(response.json()) ``` --- ### 2. Get Company Information **Endpoint:** `POST /api/get_company_info` **Request:** ```json { "cik": "0001045810" } ``` **Response:** ```json { "cik": "0001045810", "name": "NVIDIA CORP", "tickers": ["NVDA"], "sic": "3674", "sic_description": "Semiconductors & Related Devices", "error": null } ``` **cURL Example:** ```bash curl -X POST "https://your-space-name.hf.space/api/get_company_info" \ -H "Content-Type: application/json" \ -d '{"cik": "0001045810"}' ``` **Python Example:** ```python import requests url = "https://your-space-name.hf.space/api/get_company_info" payload = {"cik": "0001045810"} response = requests.post(url, json=payload) print(response.json()) ``` --- ### 3. Get Company Filings **Endpoint:** `POST /api/get_company_filings` **Request (All form types):** ```json { "cik": "0001045810", "form_types": null } ``` **Request (Specific form types):** ```json { "cik": "0001045810", "form_types": ["10-K", "10-Q"] } ``` **Response:** ```json { "filings": [ { "form_type": "10-K", "filing_date": "2024-02-21", "accession_number": "0001045810-24-000029", "primary_document": "nvda-20240128.htm" }, { "form_type": "10-Q", "filing_date": "2024-05-22", "accession_number": "0001045810-24-000067", "primary_document": "nvda-20240428.htm" } ], "error": null } ``` **cURL Example:** ```bash curl -X POST "https://your-space-name.hf.space/api/get_company_filings" \ -H "Content-Type: application/json" \ -d '{"cik": "0001045810", "form_types": ["10-K", "10-Q"]}' ``` **Python Example:** ```python import requests url = "https://your-space-name.hf.space/api/get_company_filings" payload = { "cik": "0001045810", "form_types": ["10-K", "10-Q"] } response = requests.post(url, json=payload) print(response.json()) ``` --- ### 4. Get Company Facts **Endpoint:** `POST /api/get_company_facts` **Request:** ```json { "cik": "0001045810" } ``` **Response:** ```json { "facts": { "dei": { "EntityCommonStockSharesOutstanding": {...}, "EntityPublicFloat": {...} }, "us-gaap": { "Revenues": {...}, "NetIncomeLoss": {...}, "EarningsPerShareBasic": {...} } }, "error": null } ``` **cURL Example:** ```bash curl -X POST "https://your-space-name.hf.space/api/get_company_facts" \ -H "Content-Type: application/json" \ -d '{"cik": "0001045810"}' ``` **Python Example:** ```python import requests url = "https://your-space-name.hf.space/api/get_company_facts" payload = {"cik": "0001045810"} response = requests.post(url, json=payload) print(response.json()) ``` --- ### 5. Get Financial Data for Period **Endpoint:** `POST /api/get_financial_data` **Request (Annual Data):** ```json { "cik": "0001045810", "period": "2024" } ``` **Request (Quarterly Data):** ```json { "cik": "0001045810", "period": "2024Q3" } ``` **Response:** ```json { "period": "2024", "total_revenue": 60922000000, "net_income": 29760000000, "earnings_per_share": 12.04, "operating_expenses": 11822000000, "operating_cash_flow": 28091000000, "source_url": "https://www.sec.gov/Archives/edgar/data/1045810/000104581024000029", "source_form": "10-K", "data_source": "us-gaap", "additional_details": { "total_revenue_details": { "tag": "Revenues", "form": "10-K", "fy": 2024, "fp": "FY", "val": 60922000000, "start": "2023-01-30", "end": "2024-01-28", "accn": "0001045810-24-000029", "filed": "2024-02-21", "frame": "CY2023", "data_source": "us-gaap" } }, "error": null } ``` **cURL Example:** ```bash curl -X POST "https://your-space-name.hf.space/api/get_financial_data" \ -H "Content-Type: application/json" \ -d '{"cik": "0001045810", "period": "2024"}' ``` **Python Example:** ```python import requests url = "https://your-space-name.hf.space/api/get_financial_data" payload = { "cik": "0001045810", "period": "2024" } response = requests.post(url, json=payload) data = response.json() print(f"Total Revenue: ${data['total_revenue']:,.0f}") print(f"Net Income: ${data['net_income']:,.0f}") print(f"EPS: ${data['earnings_per_share']:.2f}") ``` --- ## Complete Python Client Example ```python import requests import json class SECMCPClient: """Client for SEC Financial Report MCP Server""" def __init__(self, base_url): self.base_url = base_url.rstrip('/') def search_company(self, company_name): """Search company by name""" url = f"{self.base_url}/api/search_company" response = requests.post(url, json={"company_name": company_name}) return response.json() def get_company_info(self, cik): """Get company information""" url = f"{self.base_url}/api/get_company_info" response = requests.post(url, json={"cik": cik}) return response.json() def get_company_filings(self, cik, form_types=None): """Get company filings""" url = f"{self.base_url}/api/get_company_filings" payload = {"cik": cik, "form_types": form_types} response = requests.post(url, json=payload) return response.json() def get_company_facts(self, cik): """Get company facts""" url = f"{self.base_url}/api/get_company_facts" response = requests.post(url, json={"cik": cik}) return response.json() def get_financial_data(self, cik, period): """Get financial data for period""" url = f"{self.base_url}/api/get_financial_data" payload = {"cik": cik, "period": period} response = requests.post(url, json=payload) return response.json() # Usage example if __name__ == "__main__": # Initialize client client = SECMCPClient("https://your-space-name.hf.space") # Search for a company company = client.search_company("NVIDIA") print(f"Found: {company['name']} (CIK: {company['cik']})") # Get company information info = client.get_company_info(company['cik']) print(f"Industry: {info['sic_description']}") # Get recent filings filings = client.get_company_filings(company['cik'], ["10-K"]) print(f"Recent 10-K filings: {len(filings['filings'])}") # Get financial data for 2024 financial_data = client.get_financial_data(company['cik'], "2024") print(f"FY2024 Revenue: ${financial_data['total_revenue']:,.0f}") print(f"FY2024 Net Income: ${financial_data['net_income']:,.0f}") print(f"FY2024 EPS: ${financial_data['earnings_per_share']:.2f}") ``` --- ## Complete JavaScript/Node.js Client Example ```javascript const axios = require('axios'); class SECMCPClient { constructor(baseUrl) { this.baseUrl = baseUrl.replace(/\/$/, ''); } async searchCompany(companyName) { const response = await axios.post( `${this.baseUrl}/api/search_company`, { company_name: companyName } ); return response.data; } async getCompanyInfo(cik) { const response = await axios.post( `${this.baseUrl}/api/get_company_info`, { cik: cik } ); return response.data; } async getCompanyFilings(cik, formTypes = null) { const response = await axios.post( `${this.baseUrl}/api/get_company_filings`, { cik: cik, form_types: formTypes } ); return response.data; } async getCompanyFacts(cik) { const response = await axios.post( `${this.baseUrl}/api/get_company_facts`, { cik: cik } ); return response.data; } async getFinancialData(cik, period) { const response = await axios.post( `${this.baseUrl}/api/get_financial_data`, { cik: cik, period: period } ); return response.data; } } // Usage example (async () => { const client = new SECMCPClient('https://your-space-name.hf.space'); // Search for a company const company = await client.searchCompany('NVIDIA'); console.log(`Found: ${company.name} (CIK: ${company.cik})`); // Get financial data const financialData = await client.getFinancialData(company.cik, '2024'); console.log(`FY2024 Revenue: $${financialData.total_revenue.toLocaleString()}`); console.log(`FY2024 Net Income: $${financialData.net_income.toLocaleString()}`); console.log(`FY2024 EPS: $${financialData.earnings_per_share.toFixed(2)}`); })(); ``` --- ## Error Handling All endpoints return standard HTTP status codes: - **200 OK**: Successful request - **422 Unprocessable Entity**: Invalid request parameters - **500 Internal Server Error**: Server error Error response format: ```json { "detail": "Error message description" } ``` Or for API-specific errors: ```json { "error": "No company found matching 'INVALID_NAME'" } ``` --- ## Notes - All monetary values are in USD (original values, not converted to millions) - The `earnings_per_share` value is per share - Data source: US SEC EDGAR system - Supports US-GAAP and IFRS standards - User-Agent: Juntao Peng (jtyxabc@gmail.com) - Rate limiting follows SEC EDGAR API guidelines (10 requests per second) --- ## Interactive API Documentation Once deployed, you can access interactive API documentation at: - Swagger UI: `https://your-space-name.hf.space/docs` - ReDoc: `https://your-space-name.hf.space/redoc`