Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
c7ad71f
Senamtic Search on action in Python AI SDK
shashi-stackone Feb 18, 2026
0210c1f
Filter tools based on the SDK auth config and connector
shashi-stackone Feb 18, 2026
b1105fa
Use the local benchmark from the ai-generations
shashi-stackone Feb 18, 2026
d49f52b
Add Semantinc search bench mark with local benchmarks
shashi-stackone Feb 18, 2026
680fa8e
Fix CI lint errors
shashi-stackone Feb 18, 2026
1ee842b
Fix the lint in the benchmark file
shashi-stackone Feb 18, 2026
d6fba69
Formalise the docs and code
shashi-stackone Feb 18, 2026
3eb0641
Keep semantic search minimal in the README
shashi-stackone Feb 18, 2026
fd37d93
Remove the old benchmark data
shashi-stackone Feb 18, 2026
f5ef955
implement PR feedback suggestions from cubic
shashi-stackone Feb 18, 2026
b7b522f
fix nullable in the semantic tool schema
shashi-stackone Feb 18, 2026
e9c6b86
limit override
shashi-stackone Feb 18, 2026
34e1ca6
handle per connector calls to avoid the guesswork
shashi-stackone Feb 18, 2026
82082cb
simplify utility_tools API by inferring semantic search from client p…
shashi-stackone Feb 18, 2026
8a74517
Benchmark update and PR suggestions
shashi-stackone Feb 18, 2026
85b0395
update the README gst
shashi-stackone Feb 18, 2026
79c762a
Note on the fetch tools for actions that user expect to discover
shashi-stackone Feb 18, 2026
6ee1adf
Update examples and improve the semantic seach
shashi-stackone Feb 18, 2026
7a65367
Fix ruff issues
shashi-stackone Feb 18, 2026
64a0a60
Document the semantic search feature in the python files and example
shashi-stackone Feb 18, 2026
4083642
Respect the backend results unless top_k specified explicitly, add py…
shashi-stackone Feb 18, 2026
b926db1
move the crewAI tools conversation back in the example
shashi-stackone Feb 18, 2026
d2dd2f5
CI Trigger
shashi-stackone Feb 18, 2026
719b391
Fix unit tests with updated top_k behavior
shashi-stackone Feb 18, 2026
b360b00
Update PR with correct approach mentioned in the PR comments
shashi-stackone Feb 18, 2026
7b77f33
Update example and remove unwated crewai examples
shashi-stackone Feb 18, 2026
bab931b
Remove the crewai reference from the README
shashi-stackone Feb 19, 2026
d62943d
fix(semantic-search): scope tool_search to user's linked connectors
shashi-stackone Feb 19, 2026
5eaa3c5
Fix the Ruff CI issue
shashi-stackone Feb 19, 2026
173121d
Add back creai intefration and test integration
shashi-stackone Feb 19, 2026
1e4cc9a
Remove the sematic search example from the tools
shashi-stackone Feb 19, 2026
f1db9f2
Merge branch 'main' into semantic_search
shashi-stackone Feb 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ StackOne AI provides a unified interface for accessing various SaaS tools throug
- Glob pattern filtering with patterns like `"hris_*"` and exclusions `"!hris_delete_*"`
- Provider and action filtering
- Multi-account support
- **Semantic Search**: AI-powered tool discovery using natural language queries
- **Utility Tools** (Beta): Dynamic tool discovery and execution based on natural language queries
- Integration with popular AI frameworks:
- OpenAI Functions
Expand Down Expand Up @@ -325,6 +326,57 @@ execute_tool = utility_tools.get_tool("tool_execute")
result = execute_tool.call(toolName="hris_list_employees", params={"limit": 10})
```

## Semantic Search

Semantic search enables tool discovery using natural language instead of exact keyword matching. It understands intent and synonyms, so queries like "onboard new hire" or "check my to-do list" resolve to the right StackOne actions.

**How it works:** Your query is matched against all StackOne actions using semantic vector search. Results are automatically filtered to only the connectors available in your linked accounts, so you only get tools you can actually use.

### `search_tools()` — Recommended

High-level method that returns a `Tools` collection ready for any framework:

```python
from stackone_ai import StackOneToolSet

toolset = StackOneToolSet()

# Natural language search — no need to know exact tool names
tools = toolset.search_tools("manage employee records", top_k=5)

# Use with any framework
langchain_tools = tools.to_langchain()

# Filter by connector
tools = toolset.search_tools("create time off request", connector="bamboohr", top_k=3)
```

### `search_action_names()` — Lightweight

Returns action names and similarity scores without fetching full tool definitions. Useful for inspecting results before committing:

```python
results = toolset.search_action_names("time off requests", top_k=5)
for r in results:
print(f"{r.action_name} ({r.connector_key}): {r.similarity_score:.2f}")
```

### Utility Tools with Semantic Search

For agent loops using `tool_search` / `tool_execute`, pass `semantic_client` to upgrade from local keyword matching to semantic search:

```python
tools = toolset.fetch_tools()
utility = tools.utility_tools(semantic_client=toolset.semantic_client)

search_tool = utility.get_tool("tool_search")
results = search_tool.call(query="onboard a new team member", limit=5)
```

> `tool_search` is scoped to the connectors in your fetched tools, so only tools you can execute are returned.

See [Semantic Search Example](examples/semantic_search_example.py) for complete patterns including OpenAI and LangChain integration.

## Examples

For more examples, check out the [examples/](examples/) directory:
Expand All @@ -335,6 +387,7 @@ For more examples, check out the [examples/](examples/) directory:
- [LangChain Integration](examples/langchain_integration.py)
- [CrewAI Integration](examples/crewai_integration.py)
- [Utility Tools](examples/utility_tools_example.py)
- [Semantic Search](examples/semantic_search_example.py)

## Development

Expand Down
Loading