Lookup OTC Company
lookup_otc_tickerRetrieve comprehensive OTC company data by ticker: CIK, SIC, financials, short interest, shell risk, and filing recency from SEC EDGAR and FINRA.
Instructions
Look up a single OTC-traded company by ticker symbol. Returns full company details including CIK, SIC code, financials (revenue, assets, net income), short interest, shell risk score, and filing recency score. Source: SEC EDGAR + FINRA.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ticker | Yes | The ticker symbol (e.g. ACME) |
Implementation Reference
- src/tools/otc.ts:130-152 (handler)Handler function that looks up a single OTC company by ticker. Calls GET /api/v1/otc/{ticker}, handles 404 and other errors, returns company details as JSON.
async ({ ticker }) => { const res = await apiGet<{ dataset: string; data: Record<string, unknown> }>( `/api/v1/otc/${encodeURIComponent(ticker.toUpperCase())}`, ); if (!res.ok) { const msg = res.status === 404 ? `Ticker ${ticker.toUpperCase()} not found in the OTC dataset.` : `API error (${res.status}): ${JSON.stringify(res.data)}`; return { content: [{ type: "text" as const, text: msg }], isError: res.status !== 404, }; } return { content: [ { type: "text" as const, text: JSON.stringify(res.data.data, null, 2) }, ], }; }, ); - src/tools/otc.ts:123-128 (schema)Input schema using Zod: ticker is a required string of 1-10 letters.
inputSchema: { ticker: z .string() .regex(/^[A-Za-z]{1,10}$/, "Ticker must be 1-10 letters") .describe("The ticker symbol (e.g. ACME)"), }, - src/tools/otc.ts:115-152 (registration)Tool registration via server.registerTool with name 'lookup_otc_ticker', including title, description, and input schema.
server.registerTool( "lookup_otc_ticker", { title: "Lookup OTC Company", description: "Look up a single OTC-traded company by ticker symbol. Returns full company details " + "including CIK, SIC code, financials (revenue, assets, net income), short interest, " + "shell risk score, and filing recency score. Source: SEC EDGAR + FINRA.", inputSchema: { ticker: z .string() .regex(/^[A-Za-z]{1,10}$/, "Ticker must be 1-10 letters") .describe("The ticker symbol (e.g. ACME)"), }, }, async ({ ticker }) => { const res = await apiGet<{ dataset: string; data: Record<string, unknown> }>( `/api/v1/otc/${encodeURIComponent(ticker.toUpperCase())}`, ); if (!res.ok) { const msg = res.status === 404 ? `Ticker ${ticker.toUpperCase()} not found in the OTC dataset.` : `API error (${res.status}): ${JSON.stringify(res.data)}`; return { content: [{ type: "text" as const, text: msg }], isError: res.status !== 404, }; } return { content: [ { type: "text" as const, text: JSON.stringify(res.data.data, null, 2) }, ], }; }, );