agentgraph-server 0.5.0__py3-none-any.whl
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.
- agentgraph/__init__.py +1 -0
- agentgraph/auth/__init__.py +0 -0
- agentgraph/auth/credentials.py +224 -0
- agentgraph/backends/__init__.py +50 -0
- agentgraph/backends/sqlite/__init__.py +1 -0
- agentgraph/backends/sqlite/backend.py +1471 -0
- agentgraph/backends/sqlite/vector.py +142 -0
- agentgraph/cli.py +721 -0
- agentgraph/cli_query.py +519 -0
- agentgraph/config.py +90 -0
- agentgraph/connectors/__init__.py +0 -0
- agentgraph/connectors/base.py +455 -0
- agentgraph/connectors/registry.py +78 -0
- agentgraph/connectors/status.py +244 -0
- agentgraph/core/__init__.py +0 -0
- agentgraph/core/context.py +26 -0
- agentgraph/core/runtime.py +36 -0
- agentgraph/core/storage.py +240 -0
- agentgraph/graph/__init__.py +1 -0
- agentgraph/graph/bookmark.py +87 -0
- agentgraph/graph/delete.py +17 -0
- agentgraph/graph/download.py +35 -0
- agentgraph/graph/embeddings.py +58 -0
- agentgraph/graph/fetch.py +53 -0
- agentgraph/graph/gc.py +26 -0
- agentgraph/graph/link.py +63 -0
- agentgraph/graph/person.py +40 -0
- agentgraph/graph/query.py +244 -0
- agentgraph/graph/upsert.py +49 -0
- agentgraph/logging.py +78 -0
- agentgraph/mcp/__init__.py +0 -0
- agentgraph/mcp/server.py +811 -0
- agentgraph/perf.py +43 -0
- agentgraph/server/__init__.py +0 -0
- agentgraph/server/app.py +133 -0
- agentgraph/server/cli_api.py +708 -0
- agentgraph/server/dwell.py +79 -0
- agentgraph/server/graph_api.py +46 -0
- agentgraph/server/router.py +47 -0
- agentgraph/server/sync.py +247 -0
- agentgraph/skills.py +93 -0
- agentgraph_server-0.5.0.data/data/.agents/skills/graph/SKILL.md +159 -0
- agentgraph_server-0.5.0.data/data/.agents/skills/slack-auth/SKILL.md +92 -0
- agentgraph_server-0.5.0.dist-info/METADATA +286 -0
- agentgraph_server-0.5.0.dist-info/RECORD +49 -0
- agentgraph_server-0.5.0.dist-info/WHEEL +5 -0
- agentgraph_server-0.5.0.dist-info/entry_points.txt +2 -0
- agentgraph_server-0.5.0.dist-info/licenses/LICENSE +21 -0
- agentgraph_server-0.5.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: slack-auth
|
|
3
|
+
description: Authenticate AgentGraph to Slack with user OAuth PKCE by default, or explicitly use browser-session credentials as a fallback.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /slack-auth - Slack Authentication
|
|
7
|
+
|
|
8
|
+
Use Slack user OAuth with PKCE unless the user explicitly requests the browser-session fallback.
|
|
9
|
+
|
|
10
|
+
## OAuth (default)
|
|
11
|
+
|
|
12
|
+
1. Check status without exposing credentials:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
agentgraph auth status --json | jq '.[] | select(.provider == "slack")'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
2. Start the interactive chooser and select Slack user OAuth with PKCE:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
agentgraph auth slack
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
AgentGraph reuses a Client ID stored with the selected account or reads
|
|
25
|
+
`AGENTGRAPH_SLACK_CLIENT_ID`. Otherwise it asks whether the user has admin
|
|
26
|
+
permission in the target workspace.
|
|
27
|
+
|
|
28
|
+
Admins create AgentGraph at `https://api.slack.com/apps` with **Create New App →
|
|
29
|
+
From an app manifest**, select the target workspace, paste the manifest printed by
|
|
30
|
+
AgentGraph into Slack's **JSON** tab, approve it, and enter its Client ID. The
|
|
31
|
+
manifest includes the only
|
|
32
|
+
supported callback, `http://localhost:8766/slack/oauth/callback`.
|
|
33
|
+
|
|
34
|
+
Non-admins choose either **Enter a Client ID provided by a Slack admin** or **Set up
|
|
35
|
+
the AgentGraph Slack App**. The setup path checks whether the target workspace
|
|
36
|
+
appears under **Pick a workspace**. If it does, create the app from the printed
|
|
37
|
+
manifest and enter its Client ID. If it does not, send the printed example request
|
|
38
|
+
and manifest to a Workspace Owner or app manager, then rerun with the supplied Client
|
|
39
|
+
ID:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
agentgraph auth slack --add --client-id '<client-id>'
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
During authorization, click **Allow** when available. If Slack shows **Request
|
|
46
|
+
approval**, use AgentGraph's copyable **Message for your Slack Admin**, submit it,
|
|
47
|
+
and rerun with the same Client ID after Slackbot confirms approval. If installation
|
|
48
|
+
is blocked without a request action, contact a Workspace Owner or app manager.
|
|
49
|
+
|
|
50
|
+
For explicit OAuth selection, use `agentgraph auth slack --method oauth`.
|
|
51
|
+
|
|
52
|
+
Use `--add` for another identity or `--account slack:<team>:<user>` to replace that identity's current method. Verify `auth_method` afterward:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
agentgraph auth status --verify --json | jq '.[] | select(.provider == "slack") | .accounts'
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
If the user declines optional `users:read.email`, authentication still succeeds without email enrichment.
|
|
59
|
+
|
|
60
|
+
## Browser fallback
|
|
61
|
+
|
|
62
|
+
Only use this flow when OAuth cannot be approved or the user explicitly selects it. Load the `agent-browser` skill, connect to a logged-in `app.slack.com` session, and derive the team-specific token:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
TEAM_ID=$(agent-browser get url | sed -n 's#.*app\.slack\.com/client/\(T[A-Z0-9]*\).*#\1#p')
|
|
66
|
+
TOKEN=$(agent-browser eval "(() => { const cfg = JSON.parse(localStorage.getItem('localConfig_v2')); return cfg.teams['$TEAM_ID'].token; })()" | jq -r .)
|
|
67
|
+
COOKIE=$(agent-browser --json cookies get | jq -r '.data.cookies[] | select(.name == "d" and (.domain | contains("slack"))) | .value' | head -n 1)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Validate without printing either secret, then save them through the explicit method:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
if [ -z "$TOKEN" ] || [ "$TOKEN" = "null" ]; then echo "missing token" >&2; exit 1; fi
|
|
74
|
+
if [ -z "$COOKIE" ] || [ "$COOKIE" = "null" ]; then echo "missing d cookie" >&2; exit 1; fi
|
|
75
|
+
case "$TOKEN" in xoxc-*) ;; *) echo "token did not use xoxc prefix" >&2; exit 1;; esac
|
|
76
|
+
agentgraph auth slack --method browser --xoxc-token "$TOKEN" --d-cookie "$COOKIE"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Supplying `--client-id` without `--method` infers OAuth. Supplying `--xoxc-token` or
|
|
80
|
+
`--d-cookie` without `--method` infers browser mode for compatibility. Never combine
|
|
81
|
+
OAuth and browser credential options.
|
|
82
|
+
|
|
83
|
+
## Revocation
|
|
84
|
+
|
|
85
|
+
Remove one identity or all Slack credentials locally:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
agentgraph auth remove slack --account 'slack:<team>:<user>'
|
|
89
|
+
agentgraph auth remove slack
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Local removal does not revoke Slack's grant. For OAuth, also revoke the app from Slack's connected-app settings or ask the workspace admin to remove the internal app.
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agentgraph-server
|
|
3
|
+
Version: 0.5.0
|
|
4
|
+
Summary: AgentGraph builds a local, queryable graph of your digital world across tools like Slack, Discord, Gmail, Google Docs, Sheets, Drive, and RSS feeds, so your AI agents can search, fetch, and reason over the same connected context you work from.
|
|
5
|
+
Requires-Python: >=3.12
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Dist: aiosqlite>=0.20.0
|
|
9
|
+
Requires-Dist: agentgraph-connector-web<0.6,>=0.5.0
|
|
10
|
+
Requires-Dist: apscheduler>=3.11.2
|
|
11
|
+
Requires-Dist: click<8.4
|
|
12
|
+
Requires-Dist: fastapi>=0.135.2
|
|
13
|
+
Requires-Dist: fastembed>=0.8.0
|
|
14
|
+
Requires-Dist: httpx>=0.28.1
|
|
15
|
+
Requires-Dist: mcp>=1.26.0
|
|
16
|
+
Requires-Dist: numpy>=2.4.6
|
|
17
|
+
Requires-Dist: pydantic>=2.12.5
|
|
18
|
+
Requires-Dist: pydantic-settings>=2.13.1
|
|
19
|
+
Requires-Dist: rich>=14.3.3
|
|
20
|
+
Requires-Dist: sqlite-vec>=0.1.9
|
|
21
|
+
Requires-Dist: typer>=0.24.1
|
|
22
|
+
Requires-Dist: uvicorn>=0.42.0
|
|
23
|
+
Provides-Extra: google
|
|
24
|
+
Requires-Dist: agentgraph-connector-google<0.6,>=0.5.0; extra == "google"
|
|
25
|
+
Provides-Extra: slack
|
|
26
|
+
Requires-Dist: agentgraph-connector-slack<0.6,>=0.5.0; extra == "slack"
|
|
27
|
+
Provides-Extra: discord
|
|
28
|
+
Requires-Dist: agentgraph-connector-discord<0.6,>=0.5.0; extra == "discord"
|
|
29
|
+
Provides-Extra: rss
|
|
30
|
+
Requires-Dist: agentgraph-connector-rss<0.6,>=0.5.0; extra == "rss"
|
|
31
|
+
Provides-Extra: web
|
|
32
|
+
Requires-Dist: agentgraph-connector-web<0.6,>=0.5.0; extra == "web"
|
|
33
|
+
Provides-Extra: all
|
|
34
|
+
Requires-Dist: agentgraph-connector-web<0.6,>=0.5.0; extra == "all"
|
|
35
|
+
Requires-Dist: agentgraph-connector-google<0.6,>=0.5.0; extra == "all"
|
|
36
|
+
Requires-Dist: agentgraph-connector-slack<0.6,>=0.5.0; extra == "all"
|
|
37
|
+
Requires-Dist: agentgraph-connector-discord<0.6,>=0.5.0; extra == "all"
|
|
38
|
+
Requires-Dist: agentgraph-connector-rss<0.6,>=0.5.0; extra == "all"
|
|
39
|
+
Dynamic: license-file
|
|
40
|
+
|
|
41
|
+
# AgentGraph
|
|
42
|
+
|
|
43
|
+
AgentGraph is a local knowledge graph for AI agents. It indexes content from Slack, Discord, Gmail, Google Docs, Google Sheets, Google Drive, and RSS/Atom feeds into a queryable graph of entities, people, and relationships that you can use from the CLI, web viewer, browser extension, or MCP.
|
|
44
|
+
|
|
45
|
+
## Docs
|
|
46
|
+
|
|
47
|
+
- [Install](docs-src/install.md)
|
|
48
|
+
- [Quickstart](docs-src/quickstart.md)
|
|
49
|
+
- [Configuration](docs-src/configuration.md)
|
|
50
|
+
- [Performance testing](docs-src/performance.md)
|
|
51
|
+
- [Extending](docs-src/extending.md)
|
|
52
|
+
- [Commands](docs-src/commands/index.md)
|
|
53
|
+
- [MCP tools](docs-src/mcp/index.md)
|
|
54
|
+
- [Privacy](docs-src/privacy.md)
|
|
55
|
+
|
|
56
|
+
## Installation
|
|
57
|
+
|
|
58
|
+
### Prerequisites
|
|
59
|
+
|
|
60
|
+
- Python 3.12+
|
|
61
|
+
- [uv](https://docs.astral.sh/uv/)
|
|
62
|
+
- Chrome for the browser extension
|
|
63
|
+
|
|
64
|
+
Install `uv` if needed:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Clone and sync
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
git clone https://github.com/simonexmachina/agent-graph
|
|
74
|
+
cd agent-graph
|
|
75
|
+
uv sync --extra all
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Or install only the connectors you need:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
uv sync --extra google
|
|
82
|
+
uv sync --extra slack
|
|
83
|
+
uv sync --extra discord
|
|
84
|
+
uv sync --extra rss
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Credentials and local state live in `~/.agentgraph/` by default, or under `AGENTGRAPH_CONFIG_DIR` if you set a custom config directory.
|
|
88
|
+
|
|
89
|
+
## Quick Start
|
|
90
|
+
|
|
91
|
+
### 1. Authenticate connectors
|
|
92
|
+
|
|
93
|
+
Run the guided onboarding flow:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
agentgraph onboard
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Or authenticate a single source directly:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
agentgraph auth <source>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 2. Start AgentGraph
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
agentgraph serve
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
The default server URL is `http://127.0.0.1:8765`.
|
|
112
|
+
|
|
113
|
+
### 3. Install the browser extension
|
|
114
|
+
|
|
115
|
+
Install the [AgentGraph Chrome Extension](https://chromewebstore.google.com/detail/agentgraph-extension/iilkfclglabllelhjacijldknapbhidi?authuser=0&hl=en-AU) from the Chrome Web Store.
|
|
116
|
+
|
|
117
|
+
To build it locally instead:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
cd extension
|
|
121
|
+
npm install
|
|
122
|
+
npm run build
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Then open `chrome://extensions`, enable Developer Mode, click **Load unpacked**, and select `extension/dist/`.
|
|
126
|
+
|
|
127
|
+
### 4. Browse something supported
|
|
128
|
+
|
|
129
|
+
Open a Slack channel, Discord thread, Google Doc, Google Sheet, Gmail thread, or Drive folder and keep the tab focused long enough for the dwell threshold to trigger a fetch.
|
|
130
|
+
|
|
131
|
+
### 5. Verify entities landed
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
agentgraph connectors --json
|
|
135
|
+
agentgraph search "slack" --limit 5
|
|
136
|
+
agentgraph query --type Document --limit 5
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### 6. Connect an assistant
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
agentgraph mcp-config
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Use the printed stdio config with Claude Desktop or Claude Code. For ChatGPT developer mode, run AgentGraph with streamable HTTP and expose the local `/mcp` endpoint through HTTPS before creating the app/connector.
|
|
146
|
+
|
|
147
|
+
## How It Works
|
|
148
|
+
|
|
149
|
+
The browser extension watches supported URLs and sends dwell events to your local AgentGraph server. When you stay on a page long enough, the matching connector fetches the resource and turns it into graph entities, people, and edges. After that first fetch, supported connectors keep known resources fresh with background polling.
|
|
150
|
+
|
|
151
|
+
```text
|
|
152
|
+
Browser extension -> local server -> connector -> local graph
|
|
153
|
+
|
|
|
154
|
+
+-> CLI / viewer / MCP
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
AgentGraph is local-first. Indexed content is stored in a local SQLite database. The project does not run a hosted service for your graph data.
|
|
158
|
+
|
|
159
|
+
## Surfaces
|
|
160
|
+
|
|
161
|
+
| Surface | Use it for | Entry point |
|
|
162
|
+
| --- | --- | --- |
|
|
163
|
+
| CLI | Search, fetch, ingest, debugging, and operations | `agentgraph search`, `agentgraph fetch`, `agentgraph serve` |
|
|
164
|
+
| MCP | Claude Desktop, Claude Code, ChatGPT developer mode, and other MCP clients | `agentgraph mcp-config`, `agentgraph mcp-serve` |
|
|
165
|
+
| Browser extension | Passive indexing from supported browser tabs | [Chrome Web Store](https://chromewebstore.google.com/detail/agentgraph-extension/iilkfclglabllelhjacijldknapbhidi?authuser=0&hl=en-AU) |
|
|
166
|
+
| Viewer | Visual graph inspection and manual exploration | `http://127.0.0.1:8765/viewer` |
|
|
167
|
+
|
|
168
|
+
## Commands
|
|
169
|
+
|
|
170
|
+
### Query
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
agentgraph search "project kickoff notes"
|
|
174
|
+
agentgraph query --type Message --filter platform=slack --since 12h
|
|
175
|
+
agentgraph get <entity-id>
|
|
176
|
+
agentgraph edges <entity-id>
|
|
177
|
+
agentgraph traverse <entity-id> --depth 2
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Fetch and files
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
agentgraph fetch gdocs <document-id>
|
|
184
|
+
agentgraph fetch-entity <entity-id>
|
|
185
|
+
agentgraph download <entity-id>
|
|
186
|
+
agentgraph bookmark <entity-id> --remove
|
|
187
|
+
agentgraph delete <entity-id>
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Gmail attachments are indexed as `Document` stub entities referenced by the
|
|
191
|
+
owning `Thread`. Re-fetch the thread, traverse one hop to find the attachment
|
|
192
|
+
document, then pass that document ID to `agentgraph download`.
|
|
193
|
+
|
|
194
|
+
### Sync and connectors
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
agentgraph connectors
|
|
198
|
+
agentgraph poll
|
|
199
|
+
agentgraph ingest gmail
|
|
200
|
+
agentgraph connector rss add https://example.com/feed.xml
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### MCP
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
agentgraph mcp-serve
|
|
207
|
+
agentgraph mcp-serve --transport sse --port 8808
|
|
208
|
+
agentgraph mcp-serve --transport streamable-http --host 0.0.0.0 --port 8808
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
ChatGPT uses the streamable HTTP endpoint, such as `https://your-tunnel.example/mcp`, not the stdio JSON config.
|
|
212
|
+
|
|
213
|
+
See the full [command reference](docs-src/commands/index.md) and [MCP tool reference](docs-src/mcp/index.md).
|
|
214
|
+
|
|
215
|
+
## Connectors
|
|
216
|
+
|
|
217
|
+
Included connectors:
|
|
218
|
+
|
|
219
|
+
| Source | Entities | Auth | Refresh model |
|
|
220
|
+
| --- | --- | --- | --- |
|
|
221
|
+
| Slack | Channel, Message | User OAuth PKCE; browser-session fallback | Browser dwell plus 5 minute polling |
|
|
222
|
+
| Discord | Channel, Message | Bot token | Browser dwell plus 5 minute polling |
|
|
223
|
+
| Google Docs | Document | Google OAuth | Browser dwell plus Drive-backed refresh |
|
|
224
|
+
| Google Sheets | Spreadsheet | Google OAuth | Browser dwell plus Drive-backed refresh |
|
|
225
|
+
| Google Drive | Folder, Document | Google OAuth | Browser dwell for folders and files, plus Drive changes polling |
|
|
226
|
+
| Gmail | Thread, Document stubs for attachments | Google OAuth | Browser dwell plus background poll and ingest |
|
|
227
|
+
| RSS | Folder, Document | Feed URLs | Background poll and ingest; `add` validates feeds and queues a poll |
|
|
228
|
+
|
|
229
|
+
AgentGraph is designed to be extended. Custom connectors live in separate packages, register through the connector entry point, and implement the shared `BaseConnector` interface. See [Extending](docs-src/extending.md).
|
|
230
|
+
|
|
231
|
+
## Configuration
|
|
232
|
+
|
|
233
|
+
Settings are read from environment variables and from a `.env` file in the config directory.
|
|
234
|
+
|
|
235
|
+
| Variable | Default | Description |
|
|
236
|
+
| --- | --- | --- |
|
|
237
|
+
| `AGENTGRAPH_CONFIG_DIR` | `~/.agentgraph` | Directory for config, credentials, and the default SQLite database |
|
|
238
|
+
| `AGENTGRAPH_BACKEND` | `sqlite` | Persistence backend. The built-in backend is `sqlite` |
|
|
239
|
+
| `AGENTGRAPH_BACKEND_SQLITE_PATH` | `$AGENTGRAPH_CONFIG_DIR/agentgraph.db` | SQLite database path |
|
|
240
|
+
| `AGENTGRAPH_SERVER_HOST` | `127.0.0.1` | Server bind address |
|
|
241
|
+
| `AGENTGRAPH_SERVER_PORT` | `8765` | Server port |
|
|
242
|
+
| `AGENTGRAPH_DWELL_THRESHOLD_SECONDS` | `3` | Seconds of focus before a fetch is triggered |
|
|
243
|
+
| `AGENTGRAPH_RETENTION_DAYS` | `90` | Days before an unvisited entity is garbage collected |
|
|
244
|
+
| `AGENTGRAPH_EMBEDDING_MODEL` | `BAAI/bge-small-en-v1.5` | FastEmbed model used for embeddings |
|
|
245
|
+
| `AGENTGRAPH_SLACK_CLIENT_ID` | prompt/stored account | Optional Client ID override for the admin-created internal Slack OAuth app |
|
|
246
|
+
| `AGENTGRAPH_SLACK_REDIRECT_URI` | `http://localhost:8766/slack/oauth/callback` | Exact Slack OAuth callback registered on the app |
|
|
247
|
+
|
|
248
|
+
See [Configuration](docs-src/configuration.md) for the full setup.
|
|
249
|
+
|
|
250
|
+
## MCP Tools
|
|
251
|
+
|
|
252
|
+
`agentgraph mcp-serve` exposes these tool families to MCP clients:
|
|
253
|
+
|
|
254
|
+
- `list_connectors_tool`
|
|
255
|
+
- `list_auth_providers_tool`
|
|
256
|
+
- `authenticate_provider_tool`
|
|
257
|
+
- `run_connector_command_tool`
|
|
258
|
+
- `search_entities_tool`
|
|
259
|
+
- `get_entity_tool`
|
|
260
|
+
- `get_edges_tool`
|
|
261
|
+
- `traverse_graph_tool`
|
|
262
|
+
- `query_by_filter_tool`
|
|
263
|
+
- `fetch_entity_tool`
|
|
264
|
+
- `fetch_entity_by_id_tool`
|
|
265
|
+
- `download_entity_tool`
|
|
266
|
+
- `poll_connectors_tool`
|
|
267
|
+
- `ingest_connector_tool`
|
|
268
|
+
- `bookmark_entity_tool`
|
|
269
|
+
- `delete_entity_tool`
|
|
270
|
+
- `unify_persons_tool`
|
|
271
|
+
|
|
272
|
+
## Contributing
|
|
273
|
+
|
|
274
|
+
See [AGENTS.md](AGENTS.md) for repo-specific development rules.
|
|
275
|
+
|
|
276
|
+
Before opening a change, run:
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
uv run pytest tests/ -m "not integration" -q
|
|
280
|
+
uv run pyright
|
|
281
|
+
uv run ruff check agentgraph/
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
## License
|
|
285
|
+
|
|
286
|
+
See [LICENSE](LICENSE).
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
agentgraph/__init__.py,sha256=KoTN1n1VOK5mI-8js2JT9Iz32BgdDBa3Hb9rkB4ElJM,58
|
|
2
|
+
agentgraph/cli.py,sha256=pdOY_ijsAsUQztElCB3JOhGsj8FXr42OWRD-RR_-DQE,25020
|
|
3
|
+
agentgraph/cli_query.py,sha256=OS3BkpyvygmtwBtO-nTqzOQJzKkIr7qoJ_W81mlz64k,16814
|
|
4
|
+
agentgraph/config.py,sha256=L_6c5XR75SxCDvEzgGBeVI6tvWEUy4RfmIR8SQ50_p4,2748
|
|
5
|
+
agentgraph/logging.py,sha256=5um7XPMaiz4X9Stj4RAACK7poyDDOYmRICWpNTIW-XI,2572
|
|
6
|
+
agentgraph/perf.py,sha256=sXUC2AQ_UHb07ow47jXDE4IubLgNO2OEA34dmI6yHA8,1405
|
|
7
|
+
agentgraph/skills.py,sha256=E8iFFRpgNwmqgDXfzxfDn6-OYTpFcRz0gCSfM5kbv6g,2681
|
|
8
|
+
agentgraph/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
agentgraph/auth/credentials.py,sha256=MAR31OfcF9TShwY6Pu_gpWT2zn-GZJTQRgoYvNMo-30,7646
|
|
10
|
+
agentgraph/backends/__init__.py,sha256=7tqRKjGb2669nB1_zv8mRjcg56IGGScX5FKC729I0eo,1337
|
|
11
|
+
agentgraph/backends/sqlite/__init__.py,sha256=HtAJesMOTxvp34Q86fdSHx9ltxjqCKFi9VP2Oujacs4,33
|
|
12
|
+
agentgraph/backends/sqlite/backend.py,sha256=aCywmcS343Y1MltgVvTA6n0tUJFkbUjIriyynyT0F_g,59921
|
|
13
|
+
agentgraph/backends/sqlite/vector.py,sha256=VyNmxetlEFF_tb9KPfvaJhvBN5AzWbjb3C617V4tl_g,4921
|
|
14
|
+
agentgraph/connectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
agentgraph/connectors/base.py,sha256=zTN6O3_fRtQxG6Bt9Xhjq7ioBZeKnS8bxqT2PIUFCcg,16780
|
|
16
|
+
agentgraph/connectors/registry.py,sha256=dXyxKj-al3z45211GdRrNJKFZ0ehjBB9BJ1FBA7et9U,2464
|
|
17
|
+
agentgraph/connectors/status.py,sha256=tnndQJ9SDaYD7gpzQcNO_6blCxVxd8p_As7P8QW67tc,9045
|
|
18
|
+
agentgraph/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
|
+
agentgraph/core/context.py,sha256=LwF7mkN5b69NqvZVVxZ0hKsQJvbQpTcOsuR3jAYWIzY,571
|
|
20
|
+
agentgraph/core/runtime.py,sha256=4eaIbiW_mY6ZqazJCKuskxgA50J-hM70_Wtl108-XAA,1157
|
|
21
|
+
agentgraph/core/storage.py,sha256=D0cy1rovWpotLOTxKX1TSAegHoUPKpQ55gfPd8GiCTo,6643
|
|
22
|
+
agentgraph/graph/__init__.py,sha256=A-lF-_f1HK0mpfZtdYexfsQFfn8IFwf5rfS5QB_ZBeM,67
|
|
23
|
+
agentgraph/graph/bookmark.py,sha256=4Py__jef4DV9tb4ANcSXNe7AYMKCPQ4SGKiFI3XlJPY,3106
|
|
24
|
+
agentgraph/graph/delete.py,sha256=RGlriPwzFFdIVb33nzdzcguxdiJt3vhiyyzivYDsCAg,541
|
|
25
|
+
agentgraph/graph/download.py,sha256=XdQs7_TErCIGsd_PoIp9q3gU4eIxnqG6ZzWxBOmKeFI,1201
|
|
26
|
+
agentgraph/graph/embeddings.py,sha256=V6mG8ITJh3VyRZ7JdQhljCs8O3Ys3PuIdCnmLCdnVl4,1824
|
|
27
|
+
agentgraph/graph/fetch.py,sha256=w5-Yd7UWJmHAQ3gB1pNbrqOAQr_oZ-Hl71Y66n0Skdc,2087
|
|
28
|
+
agentgraph/graph/gc.py,sha256=dbPJsZb0wDsu5nPP1bsHzQ7WLnsGtCJY7DBCkLIAA4Q,715
|
|
29
|
+
agentgraph/graph/link.py,sha256=WtXe_N7NxGcvUx6ZbozSB2qlhi3LMdj5hYsGapu2IK0,1943
|
|
30
|
+
agentgraph/graph/person.py,sha256=fxD6UnHsMmRhJYRsSYz0Fly_VvddA7cLU7nW9R-vzv0,1250
|
|
31
|
+
agentgraph/graph/query.py,sha256=h5fczvHAgg8M2UjEhbm2reiIdYN6Im6mxtSP5jBklTw,8287
|
|
32
|
+
agentgraph/graph/upsert.py,sha256=OX-AeEXjrrewTcoIyexIlRqIm14AxLG2IVP4OrM9Lnw,1934
|
|
33
|
+
agentgraph/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
|
+
agentgraph/mcp/server.py,sha256=lmo7ThlGfIXEdOOkFqVD21PZIr4dQJDTYyXwDsSF02Y,30485
|
|
35
|
+
agentgraph/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
+
agentgraph/server/app.py,sha256=ek4Caywk1n29-ggJHuWXuO0v372uL4MmY-wFgyImTeo,4212
|
|
37
|
+
agentgraph/server/cli_api.py,sha256=RBvK787BkelxhBW076VMwXxM-bArGAKRrRTCdrRaask,24090
|
|
38
|
+
agentgraph/server/dwell.py,sha256=mvLd9gAwc_MwLNcTZmL1crsF9axjdyeWFk6GYjIgCE8,3047
|
|
39
|
+
agentgraph/server/graph_api.py,sha256=3xpEbopClsdGR8ZatG-anUCRNMKuCbVQxHyi4QhHdZc,1301
|
|
40
|
+
agentgraph/server/router.py,sha256=M4rq9DRlboAt8U7Pi9QxrZdj47LHb2C9it5NvKdUT7g,1577
|
|
41
|
+
agentgraph/server/sync.py,sha256=Nc453gvy81hw4tagw5BPvCjMKwanzWAFSHq7fZXRnC8,9273
|
|
42
|
+
agentgraph_server-0.5.0.data/data/.agents/skills/graph/SKILL.md,sha256=uUU1FpSnPILaMjcN1r7TzGFrHIM_vj3St_QjHu3mxEs,10617
|
|
43
|
+
agentgraph_server-0.5.0.data/data/.agents/skills/slack-auth/SKILL.md,sha256=squ7vjUu90NWEaQZ8g3jZgRnCXdApuh7VSBSLnf0Hoo,3953
|
|
44
|
+
agentgraph_server-0.5.0.dist-info/licenses/LICENSE,sha256=WiWEQVYAGcojEI4r16dgrXGLQzw2g7MC73PrYrG-W8A,1067
|
|
45
|
+
agentgraph_server-0.5.0.dist-info/METADATA,sha256=blR2JvR2a4nrlYvrPPgUd1RLbWUVeK9-1NfFCoialUk,9895
|
|
46
|
+
agentgraph_server-0.5.0.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
47
|
+
agentgraph_server-0.5.0.dist-info/entry_points.txt,sha256=KxOv_sBtQRNm2ZbW4hRUu4AwR9_2cCXJUWzsDb5Wly4,50
|
|
48
|
+
agentgraph_server-0.5.0.dist-info/top_level.txt,sha256=LW523k-AhJgOotxvhf1rpv279bF0inB2fEufdeY2oMQ,11
|
|
49
|
+
agentgraph_server-0.5.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Simon Wade
|
|
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.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
agentgraph
|