alion 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
alion-0.1.0/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ node_modules/
2
+ dist/
3
+ *.tgz
4
+ .env
5
+ __pycache__/
6
+ *.egg-info/
7
+ .venv/
8
+ build/
alion-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Alion
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
alion-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,163 @@
1
+ Metadata-Version: 2.5
2
+ Name: alion
3
+ Version: 0.1.0
4
+ Summary: Official Alion client: companies, startups, investors, job postings, hiring and pay statistics and people open to offers, as typed calls for code and AI agents. Free without a key for compact searches.
5
+ Project-URL: Homepage, https://alion.io/developers
6
+ Project-URL: Documentation, https://alion.io/developers
7
+ Project-URL: Source, https://github.com/alion-io/alion-sdk
8
+ Project-URL: Issues, https://github.com/alion-io/alion-sdk/issues
9
+ Author-email: Alion <info@alion.io>
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: ai agents,alion,company data,company enrichment,funding rounds,investors,job postings,jobs api,labor market,llm tools,lookalike companies,mcp,model context protocol,salary data,sales prospecting,startups,tech stack,venture capital
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
+ Classifier: Topic :: Internet :: WWW/HTTP
25
+ Classifier: Topic :: Office/Business
26
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
27
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
28
+ Classifier: Typing :: Typed
29
+ Requires-Python: >=3.9
30
+ Requires-Dist: typing-extensions>=4.7; python_version < '3.11'
31
+ Provides-Extra: dev
32
+ Requires-Dist: mypy>=1.10; extra == 'dev'
33
+ Requires-Dist: pytest>=7; extra == 'dev'
34
+ Description-Content-Type: text/markdown
35
+
36
+ # alion
37
+
38
+ The official Python client for [Alion](https://alion.io/developers): a live graph of companies worldwide (what each one does, where it operates, its tech stack, funding rounds and investors, how fast it hires), startup investors, verified job postings with hiring and pay statistics, and people open to offers.
39
+
40
+ Every tool of the [Alion MCP server](https://alion.io/developers/agents) is a typed method, sync or async. Python 3.9+. It uses only the standard library (plus `typing_extensions` before 3.11).
41
+
42
+ ```bash
43
+ pip install alion
44
+ ```
45
+
46
+ ## Free without a key
47
+
48
+ ```python
49
+ from alion import Alion
50
+
51
+ alion = Alion() # no key: the open address, free within a daily allowance
52
+
53
+ companies = alion.search_companies(industry="Fintech", country="DE", startup=True, funding_stage="early", limit=10)
54
+ for c in companies["items"]:
55
+ print(c["name"], c["domain"])
56
+
57
+ match = alion.resolve_company(domain="stripe.com")["match"]
58
+ jobs = alion.search_jobs(query="data engineer", country="PL", work_mode="remote")
59
+ ```
60
+
61
+ Without a key you get compact company, investor and job searches, lookalike companies, full job postings, the people tools and the agent tools. The allowance is 300 calls a day per network, 30 a minute, and up to 20 rows per list.
62
+
63
+ ## Everything with a key
64
+
65
+ Create a key at [alion.io/developers/keys](https://alion.io/developers/keys) and pass it, or set `ALION_API_KEY`:
66
+
67
+ ```python
68
+ alion = Alion(api_key="...")
69
+
70
+ stripe = alion.get_company(domain="stripe.com") # funding, hiring, stack, offices, visa
71
+ pay = alion.market_stats(role="Backend Developer", country="US")
72
+ fund = alion.get_investor(domain="sequoiacap.com")
73
+ ```
74
+
75
+ Calls with a key are paid from your account's credits. Prices are at [alion.io/developers](https://alion.io/developers).
76
+
77
+ ## Async
78
+
79
+ ```python
80
+ from alion import AsyncAlion
81
+
82
+ async with AsyncAlion() as alion:
83
+ jobs = await alion.search_jobs(query="rust", country="DE")
84
+ ```
85
+
86
+ ## Paging
87
+
88
+ ```python
89
+ for company in alion.paginate("search_companies", technology="Snowflake", hiring=True, max_items=50):
90
+ print(company["name"])
91
+ ```
92
+
93
+ The server stops a search at row 100. Narrow the filters to reach further.
94
+
95
+ ## Errors
96
+
97
+ Every failure is an `AlionError` with a machine-readable `code`:
98
+
99
+ ```python
100
+ from alion import AlionError
101
+
102
+ try:
103
+ alion.get_company(domain="stripe.com")
104
+ except AlionError as e:
105
+ e.code # "account_required", "invalid_params", "rate_limited", "unauthorized", "timeout", ...
106
+ e.needs_account # True when the tool needs a key or a payment
107
+ e.data # the server's full answer: hints, free_tools, examples
108
+ ```
109
+
110
+ Rate limits (429), network errors and server errors on read-only tools are retried twice with backoff by default.
111
+
112
+ ## Options
113
+
114
+ ```python
115
+ Alion(
116
+ api_key="...", # default: ALION_API_KEY; "" forces the open address
117
+ app_name="my-agent/1.0", # added to the User-Agent so Alion can tell your agent apart
118
+ timeout=60.0,
119
+ max_retries=2,
120
+ headers={...}, # extra headers on every call
121
+ transport=my_transport, # (url, headers, body, timeout) -> (status, headers, text), e.g. over httpx or requests
122
+ )
123
+ ```
124
+
125
+ Any tool can also be called by name, including tools added to the server after this release:
126
+
127
+ ```python
128
+ alion.call("check_counterparty", {"target": "acme.com"})
129
+ alion.list_tools() # names, descriptions, input and output schemas
130
+ ```
131
+
132
+ ## Tools
133
+
134
+ | Method | What it does |
135
+ |---|---|
136
+ | `search_companies` | Companies by industry, country, size, founding year, startup, funding stage, investor, technology, ATS, hiring and growth level |
137
+ | `similar_companies` | Lookalikes of a company |
138
+ | `get_company` | One company in depth: funding, hiring, stack, offices, visa sponsorship |
139
+ | `resolve_company` | Which company a name or a domain means |
140
+ | `search_investors`, `get_investor` | Funds, accelerators and angels: what they back, at which stage, how active now |
141
+ | `search_jobs`, `get_job` | Verified job postings |
142
+ | `market_stats` | Demand, pay percentiles, top employers and technologies of a role in a country |
143
+ | `search_people`, `match_people`, `similar_people`, `get_person`, `check_fit` | People open to offers |
144
+ | `send_message`, `get_conversation`, `list_conversations` | Write to people in Alion messages |
145
+ | `watch_search`, `check_watch`, `list_watches`, `delete_watch`, `set_webhook` | Follow a search for new results |
146
+ | `check_counterparty`, `check_employer`, `contact_company` | Check a company or an agent, write to a company |
147
+ | `register_agent`, `get_agent`, `agent_status`, `report_problem` | Your agent on Alion |
148
+
149
+ Every argument is typed (`alion.types`), so your editor completes them and mypy or pyright check them.
150
+
151
+ ## For AI agents
152
+
153
+ To give a model these tools directly, connect the MCP server instead of wrapping methods yourself:
154
+
155
+ - remote clients (Claude, ChatGPT, Cursor, VS Code, the OpenAI Agents SDK, LangChain's `langchain-mcp-adapters`): `https://alion.io/mcp/open` without an account, `https://alion.io/mcp` with one;
156
+ - clients that start a local command: `npx -y @alion-io/mcp`.
157
+
158
+ ## Links
159
+
160
+ - Docs: https://alion.io/developers
161
+ - JavaScript and TypeScript: [`@alion-io/sdk`](https://www.npmjs.com/package/@alion-io/sdk)
162
+ - Source and issues: https://github.com/alion-io/alion-sdk
163
+ - MIT license
alion-0.1.0/README.md ADDED
@@ -0,0 +1,128 @@
1
+ # alion
2
+
3
+ The official Python client for [Alion](https://alion.io/developers): a live graph of companies worldwide (what each one does, where it operates, its tech stack, funding rounds and investors, how fast it hires), startup investors, verified job postings with hiring and pay statistics, and people open to offers.
4
+
5
+ Every tool of the [Alion MCP server](https://alion.io/developers/agents) is a typed method, sync or async. Python 3.9+. It uses only the standard library (plus `typing_extensions` before 3.11).
6
+
7
+ ```bash
8
+ pip install alion
9
+ ```
10
+
11
+ ## Free without a key
12
+
13
+ ```python
14
+ from alion import Alion
15
+
16
+ alion = Alion() # no key: the open address, free within a daily allowance
17
+
18
+ companies = alion.search_companies(industry="Fintech", country="DE", startup=True, funding_stage="early", limit=10)
19
+ for c in companies["items"]:
20
+ print(c["name"], c["domain"])
21
+
22
+ match = alion.resolve_company(domain="stripe.com")["match"]
23
+ jobs = alion.search_jobs(query="data engineer", country="PL", work_mode="remote")
24
+ ```
25
+
26
+ Without a key you get compact company, investor and job searches, lookalike companies, full job postings, the people tools and the agent tools. The allowance is 300 calls a day per network, 30 a minute, and up to 20 rows per list.
27
+
28
+ ## Everything with a key
29
+
30
+ Create a key at [alion.io/developers/keys](https://alion.io/developers/keys) and pass it, or set `ALION_API_KEY`:
31
+
32
+ ```python
33
+ alion = Alion(api_key="...")
34
+
35
+ stripe = alion.get_company(domain="stripe.com") # funding, hiring, stack, offices, visa
36
+ pay = alion.market_stats(role="Backend Developer", country="US")
37
+ fund = alion.get_investor(domain="sequoiacap.com")
38
+ ```
39
+
40
+ Calls with a key are paid from your account's credits. Prices are at [alion.io/developers](https://alion.io/developers).
41
+
42
+ ## Async
43
+
44
+ ```python
45
+ from alion import AsyncAlion
46
+
47
+ async with AsyncAlion() as alion:
48
+ jobs = await alion.search_jobs(query="rust", country="DE")
49
+ ```
50
+
51
+ ## Paging
52
+
53
+ ```python
54
+ for company in alion.paginate("search_companies", technology="Snowflake", hiring=True, max_items=50):
55
+ print(company["name"])
56
+ ```
57
+
58
+ The server stops a search at row 100. Narrow the filters to reach further.
59
+
60
+ ## Errors
61
+
62
+ Every failure is an `AlionError` with a machine-readable `code`:
63
+
64
+ ```python
65
+ from alion import AlionError
66
+
67
+ try:
68
+ alion.get_company(domain="stripe.com")
69
+ except AlionError as e:
70
+ e.code # "account_required", "invalid_params", "rate_limited", "unauthorized", "timeout", ...
71
+ e.needs_account # True when the tool needs a key or a payment
72
+ e.data # the server's full answer: hints, free_tools, examples
73
+ ```
74
+
75
+ Rate limits (429), network errors and server errors on read-only tools are retried twice with backoff by default.
76
+
77
+ ## Options
78
+
79
+ ```python
80
+ Alion(
81
+ api_key="...", # default: ALION_API_KEY; "" forces the open address
82
+ app_name="my-agent/1.0", # added to the User-Agent so Alion can tell your agent apart
83
+ timeout=60.0,
84
+ max_retries=2,
85
+ headers={...}, # extra headers on every call
86
+ transport=my_transport, # (url, headers, body, timeout) -> (status, headers, text), e.g. over httpx or requests
87
+ )
88
+ ```
89
+
90
+ Any tool can also be called by name, including tools added to the server after this release:
91
+
92
+ ```python
93
+ alion.call("check_counterparty", {"target": "acme.com"})
94
+ alion.list_tools() # names, descriptions, input and output schemas
95
+ ```
96
+
97
+ ## Tools
98
+
99
+ | Method | What it does |
100
+ |---|---|
101
+ | `search_companies` | Companies by industry, country, size, founding year, startup, funding stage, investor, technology, ATS, hiring and growth level |
102
+ | `similar_companies` | Lookalikes of a company |
103
+ | `get_company` | One company in depth: funding, hiring, stack, offices, visa sponsorship |
104
+ | `resolve_company` | Which company a name or a domain means |
105
+ | `search_investors`, `get_investor` | Funds, accelerators and angels: what they back, at which stage, how active now |
106
+ | `search_jobs`, `get_job` | Verified job postings |
107
+ | `market_stats` | Demand, pay percentiles, top employers and technologies of a role in a country |
108
+ | `search_people`, `match_people`, `similar_people`, `get_person`, `check_fit` | People open to offers |
109
+ | `send_message`, `get_conversation`, `list_conversations` | Write to people in Alion messages |
110
+ | `watch_search`, `check_watch`, `list_watches`, `delete_watch`, `set_webhook` | Follow a search for new results |
111
+ | `check_counterparty`, `check_employer`, `contact_company` | Check a company or an agent, write to a company |
112
+ | `register_agent`, `get_agent`, `agent_status`, `report_problem` | Your agent on Alion |
113
+
114
+ Every argument is typed (`alion.types`), so your editor completes them and mypy or pyright check them.
115
+
116
+ ## For AI agents
117
+
118
+ To give a model these tools directly, connect the MCP server instead of wrapping methods yourself:
119
+
120
+ - remote clients (Claude, ChatGPT, Cursor, VS Code, the OpenAI Agents SDK, LangChain's `langchain-mcp-adapters`): `https://alion.io/mcp/open` without an account, `https://alion.io/mcp` with one;
121
+ - clients that start a local command: `npx -y @alion-io/mcp`.
122
+
123
+ ## Links
124
+
125
+ - Docs: https://alion.io/developers
126
+ - JavaScript and TypeScript: [`@alion-io/sdk`](https://www.npmjs.com/package/@alion-io/sdk)
127
+ - Source and issues: https://github.com/alion-io/alion-sdk
128
+ - MIT license
@@ -0,0 +1,64 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.24"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "alion"
7
+ dynamic = ["version"]
8
+ description = "Official Alion client: companies, startups, investors, job postings, hiring and pay statistics and people open to offers, as typed calls for code and AI agents. Free without a key for compact searches."
9
+ readme = "README.md"
10
+ license = "MIT"
11
+ license-files = ["LICENSE"]
12
+ requires-python = ">=3.9"
13
+ authors = [{ name = "Alion", email = "info@alion.io" }]
14
+ keywords = [
15
+ "alion", "company data", "company enrichment", "startups", "investors", "venture capital",
16
+ "funding rounds", "job postings", "jobs api", "labor market", "salary data", "tech stack",
17
+ "lookalike companies", "sales prospecting", "mcp", "model context protocol", "ai agents", "llm tools",
18
+ ]
19
+ classifiers = [
20
+ "Development Status :: 4 - Beta",
21
+ "Intended Audience :: Developers",
22
+ "Operating System :: OS Independent",
23
+ "Programming Language :: Python :: 3",
24
+ "Programming Language :: Python :: 3 :: Only",
25
+ "Programming Language :: Python :: 3.9",
26
+ "Programming Language :: Python :: 3.10",
27
+ "Programming Language :: Python :: 3.11",
28
+ "Programming Language :: Python :: 3.12",
29
+ "Programming Language :: Python :: 3.13",
30
+ "Programming Language :: Python :: 3.14",
31
+ "Topic :: Internet :: WWW/HTTP",
32
+ "Topic :: Office/Business",
33
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
34
+ "Topic :: Software Development :: Libraries :: Python Modules",
35
+ "Typing :: Typed",
36
+ ]
37
+ dependencies = ['typing_extensions>=4.7; python_version < "3.11"']
38
+
39
+ [project.optional-dependencies]
40
+ dev = ["pytest>=7", "mypy>=1.10"]
41
+
42
+ [project.urls]
43
+ Homepage = "https://alion.io/developers"
44
+ Documentation = "https://alion.io/developers"
45
+ Source = "https://github.com/alion-io/alion-sdk"
46
+ Issues = "https://github.com/alion-io/alion-sdk/issues"
47
+
48
+ [tool.hatch.version]
49
+ path = "src/alion/_version.py"
50
+
51
+ [tool.hatch.build.targets.wheel]
52
+ packages = ["src/alion"]
53
+
54
+ [tool.hatch.build.targets.sdist]
55
+ include = ["src/alion", "tests", "README.md", "LICENSE", "pyproject.toml"]
56
+
57
+ [tool.pytest.ini_options]
58
+ testpaths = ["tests"]
59
+ markers = ["live: calls https://alion.io (run with -m live)"]
60
+ addopts = "-m 'not live'"
61
+
62
+ [tool.mypy]
63
+ python_version = "3.9"
64
+ strict = true
@@ -0,0 +1,29 @@
1
+ """Official Python client for Alion: companies, startups, investors, job postings, hiring and pay
2
+ statistics, and people open to offers, for code and AI agents. https://alion.io/developers
3
+
4
+ >>> from alion import Alion
5
+ >>> alion = Alion() # free without a key
6
+ >>> alion.search_companies(industry="Fintech", country="DE", startup=True, limit=10)["items"]
7
+ """
8
+
9
+ from . import _types as types
10
+ from ._client import DEFAULT_BASE_URL, PROTOCOL_VERSION, Alion, AsyncAlion, Response, Transport, urllib_transport
11
+ from ._errors import AlionError
12
+ from ._types import PAGED_TOOLS, READ_ONLY_TOOLS, TOOL_NAMES
13
+ from ._version import __version__
14
+
15
+ __all__ = [
16
+ "Alion",
17
+ "AsyncAlion",
18
+ "AlionError",
19
+ "types",
20
+ "PAGED_TOOLS",
21
+ "READ_ONLY_TOOLS",
22
+ "TOOL_NAMES",
23
+ "PROTOCOL_VERSION",
24
+ "DEFAULT_BASE_URL",
25
+ "Response",
26
+ "Transport",
27
+ "urllib_transport",
28
+ "__version__",
29
+ ]