Explorium AgentSource MCP Server

from pydantic import BaseModel, Field from typing import Literal, Optional from enum import Enum from ._shared import BasePaginatedResponse # Fetch Businesses Filters class CompanySize(str, Enum): """All available company size ranges. Possible values: SIZE_1_10: 1-10 employees SIZE_11_50: 11-50 employees SIZE_51_200: 51-200 employees SIZE_201_500: 201-500 employees SIZE_501_1000: 501-1000 employees SIZE_1001_5000: 1001-5000 employees SIZE_5001_10000: 5001-10000 employees SIZE_10001_PLUS: 10001+ employees """ SIZE_1_10 = "1-10" SIZE_11_50 = "11-50" SIZE_51_200 = "51-200" SIZE_201_500 = "201-500" SIZE_501_1000 = "501-1000" SIZE_1001_5000 = "1001-5000" SIZE_5001_10000 = "5001-10000" SIZE_10001_PLUS = "10001+" class CompanyRevenue(str, Enum): """ All available revenue ranges in annual $: REV_0_500K: $0-500K yearly revenue REV_500K_1M: $500k-1M yearly revenue REV_1M_5M: $1M-5M yearly revenue REV_5M_10M: $5M-10M yearly revenue REV_10M_25M: $10M-25M yearly revenue REV_25M_75M: $25M-75M yearly revenue REV_75M_200M: $75M-200M yearly revenue REV_200M_500M: $200M-500M yearly revenue REV_500M_1B: $500M-1B yearly revenue REV_1B_10B: $1B-10B yearly revenue REV_10B_100B: $10B-100B yearly revenue REV_100B_1T: $100B-1T yearly revenue REV_1T_10T: $1T-10T yearly revenue REV_10T_PLUS: $10T+ yearly revenue """ REV_0_500K = "0-500K" REV_500K_1M = "500k-1M" REV_1M_5M = "1M-5M" REV_5M_10M = "5M-10M" REV_10M_25M = "10M-25M" REV_25M_75M = "25M-75M" REV_75M_200M = "75M-200M" REV_200M_500M = "200M-500M" REV_500M_1B = "500M-1B" REV_1B_10B = "1B-10B" REV_10B_100B = "10B-100B" REV_100B_1T = "100B-1T" REV_1T_10T = "1T-10T" REV_10T_PLUS = "10T+" class CompanyAge(str, Enum): """All available company age ranges in years: AGE_0_3: 0-3 years AGE_4_10: 4-10 years AGE_11_20: 11-20 years AGE_20_PLUS: 20+ years """ AGE_0_3 = "0-3" AGE_4_10 = "4-10" AGE_11_20 = "11-20" AGE_20_PLUS = "20+" class FetchBusinessesFilters(BaseModel): """ Business search filters. Before calling a tool that uses this filter, call the autocomplete tool to get the list of available values, especially when using linkedin_category, google_category, naics_category, and region_country_code. Only one category can be present at a time (google_category, naics_category, or linkedin_category). """ country_code: None | list[str] = Field( default=None, description="A list of lowercase two-letter ISO country codes.", ) region_country_code: None | list[str] = Field( default=None, description="A list of lowercase region-country codes in the format 'REGION-CC' where CC is the two-letter ISO country code.", ) company_size: None | list[CompanySize] = Field( default=None, description="Filters accounts based on the number of employees." ) company_revenue: None | list[CompanyRevenue] = Field( default=None, description="Filters accounts based on the annual revenue." ) company_age: None | list[CompanyAge] = Field( default=None, description="Filters accounts by the age of the company in years." ) google_category: None | list[str] = Field( default=None, description="Filters accounts by categories as classified in Google.", ) naics_category: None | list[str] = Field( default=None, description='Filters accounts by the North American Industry Classification System categories. Example: ["23", "5611"]', ) linkedin_category: None | list[str] = Field( default=None, description="Filters accounts by categories as used in LinkedIn.", ) class Business(BaseModel): business_id: str name: str domain: str | None logo: str | None country_name: str number_of_employees_range: str yearly_revenue_range: str website: str | None business_description: str | None region: str | None naics: int | None naics_description: str | None sic_code: str | None sic_code_description: str | None class FetchBusinessesResponse(BasePaginatedResponse): data: list[Business] class MatchBusinessInput(BaseModel): """Input for matching businesses. Use multiple identifiers for higher match accuracy.""" name: Optional[str] domain: Optional[str] class BusinessEventType(str, Enum): """ Valid event types for the Explorium Business Events API. IPO_ANNOUNCEMENT: Company announces plans to go public through an initial public offering - link: str - Link to article - ipo_date: datetime - Date of IPO - event_id: str - News event ID - company_name: str - Company name - offer_amount: float - Company valuation - number_of_shares: int - Number of issued shares - stock_exchange: str - IPO stock exchange - event_time: datetime - News event timestamp - price_per_share: float - Price per share - ticker: str - Ticker NEW_FUNDING_ROUND: Company secures a new round of investment funding - founding_date: datetime - Date of funding round - amount_raised: float - Amount raised in funding - link: str - Link to article - founding_stage: str - Funding round stage - event_id: str - News event ID - event_time: datetime - News event timestamp - investors: str - Investors in funding round - lead_investor: str - Lead investor NEW_INVESTMENT: Company makes an investment in another business or venture - investment_date: datetime - News event timestamp - investment_type: str - Type of investment - event_time: datetime - News report publishing date - event_id: str - News event ID - investment_target: str - Target of investment - link: str - Link to article - investment_amount: float - Amount of investment NEW_PRODUCT: Company launches a new product or service - event_time: datetime - News event timestamp - event_id: str - News event ID - link: str - Link to article - product_name: str - Name of new product - product_description: str - Description of new product - product_category: str - Category of new product - product_launch_date: datetime - Launch date of new product NEW_OFFICE: Company opens a new office location - purpose_of_new_office: str - Purpose of new office - link: str - Link to article - opening_date: datetime - Date of office opening - event_id: str - News event ID - office_location: str - Location of new office - event_time: datetime - News report publishing date - number_of_employees: int - Number of employees at new office CLOSING_OFFICE: Company closes an existing office location - reason_for_closure: str - Reason for office closing - event_time: datetime - News report publishing date - office_location: str - Location of closing office - closure_date: datetime - Date of office closing - event_id: str - News event ID - number_of_employees_affected: int - Number of employees impacted - link: str - Link to article NEW_PARTNERSHIP: Company forms a strategic partnership with another organization - link: str - Link to article - partner_company: str - Name of partnering company - partnership_date: datetime - Date of partnership - event_time: datetime - News report publishing date - purpose_of_partnership: str - Partnership purpose - event_id: str - News event ID DEPARTMENT_INCREASE_*: Company announces an increase in a specific department DEPARTMENT_DECREASE_*: Company announces a decrease in a specific department Possible input departments: ENGINEERING, SALES, MARKETING, OPERATIONS, CUSTOMER_SERVICE, ALL - department_change: float - Quarterly change in department headcount - event_time: datetime - Department event timestamp - event_id: str - Department event ID - quarter_partition: str - Quarter when change occurred - insertion_time: str - Event collection timestamp - department: str - Name of department - change_type: str - Type of department change DEPARTMENT_HIRING_*: Company announces a hiring initiative in a specific department Possible input departments: CREATIVE, EDUCATION, ENGINEERING, FINANCE, HEALTH, HR, LEGAL, MARKETING, OPERATIONS, PROFESSIONAL, SALES, SUPPORT, TRADE, UNKNOWN - location: str - Location of hiring initiative - event_id: str - Company hiring event ID - event_time: datetime - When role was published - job_count: int - Number of open positions - job_titles: str - Job titles being hired for - department: str - Department hiring is occurring in EMPLOYEE_JOINED: Employee is hired by an organization - job_department: str - Employee's current job department - full_name: str - Employee's full name - job_role_title: str - Employee's current job title - event_id: str - Employee's event ID - linkedin_url: str - Employee's LinkedIn URL """ IPO_ANNOUNCEMENT = "ipo_announcement" NEW_FUNDING_ROUND = "new_funding_round" NEW_INVESTMENT = "new_investment" NEW_PRODUCT = "new_product" NEW_OFFICE = "new_office" CLOSING_OFFICE = "closing_office" NEW_PARTNERSHIP = "new_partnership" # Department increases DEPARTMENT_INCREASE_ENGINEERING = "increase_in_engineering_department" DEPARTMENT_INCREASE_SALES = "increase_in_sales_department" DEPARTMENT_INCREASE_MARKETING = "increase_in_marketing_department" DEPARTMENT_INCREASE_OPERATIONS = "increase_in_operations_department" DEPARTMENT_INCREASE_CUSTOMER_SERVICE = "increase_in_customer_service_department" DEPARTMENT_INCREASE_ALL = "increase_in_all_departments" # Department decreases DEPARTMENT_DECREASE_ENGINEERING = "decrease_in_engineering_department" DEPARTMENT_DECREASE_SALES = "decrease_in_sales_department" DEPARTMENT_DECREASE_MARKETING = "decrease_in_marketing_department" DEPARTMENT_DECREASE_OPERATIONS = "decrease_in_operations_department" DEPARTMENT_DECREASE_CUSTOMER_SERVICE = "decrease_in_customer_service_department" DEPARTMENT_DECREASE_ALL = "decrease_in_all_departments" # Hiring events EMPLOYEE_JOINED = "employee_joined_company" DEPARTMENT_HIRING_CREATIVE = "hiring_in_creative_department" DEPARTMENT_HIRING_EDUCATION = "hiring_in_education_department" DEPARTMENT_HIRING_ENGINEERING = "hiring_in_engineering_department" DEPARTMENT_HIRING_FINANCE = "hiring_in_finance_department" DEPARTMENT_HIRING_HEALTH = "hiring_in_health_department" DEPARTMENT_HIRING_HR = "hiring_in_human_resources_department" DEPARTMENT_HIRING_LEGAL = "hiring_in_legal_department" DEPARTMENT_HIRING_MARKETING = "hiring_in_marketing_department" DEPARTMENT_HIRING_OPERATIONS = "hiring_in_operations_department" DEPARTMENT_HIRING_PROFESSIONAL = "hiring_in_professional_service_department" DEPARTMENT_HIRING_SALES = "hiring_in_sales_department" DEPARTMENT_HIRING_SUPPORT = "hiring_in_support_department" DEPARTMENT_HIRING_TRADE = "hiring_in_trade_department" DEPARTMENT_HIRING_UNKNOWN = "hiring_in_unknown_department"