Skip to main content

abstract_toolserver

The abstract_* ecosystem exposed as an API-callable AI toolset — every tool is a plain Python function turned into a self-describing HTTP endpoint by abstract_flask. A portable tool layer any model (Claude, hugpy, …) can drive over HTTP instead of being bound to one runtime's tool harness.

Run it

pip install abstract_toolserver          # + the extras you want to expose
python -m abstract_toolserver            # HOST/PORT/DEBUG from TOOLSERVER_* env
from abstract_toolserver import get_toolserver_app
app = get_toolserver_app()               # a normal Flask/WSGI app

Self-describing surface

The app auto-mounts introspection endpoints (from abstract_flask):

Endpoint What it gives an LLM
GET /prefixes the tool categories (/fs, /db, /ui, …)
GET /endpoints every tool as {endpoint, url, methods}
GET /<cat>/<tool>?help=true that tool's signature/help

Call a tool with JSON; unknown keys are pruned to the function signature, and the reply is {"result": ...} (or {"error": ...}). Discover-and-dispatch from a client is already provided by abstract_apis.make_endpoint_call.

curl -s localhost:5000/fs/count_tokens -d '{"text":"hello world"}'
# {"result": 2}
curl -s localhost:5000/db/schema           # {"result": {table: [cols...]}}
curl -s 'localhost:5000/db/query?help=true'

Tool categories

Prefix Tools Backend
/fs search, read_span, extract, read_file, write_file, read_json, find_keys, find_paths, glob, imports, find_content abstract_search, abstract_utilities, abstract_paths
/text count_tokens, chunk, detect_language abstract_utilities
/web text, links, attributes abstract_webtools
/media ocr_image, pdf_text, summarize, keywords, transcribe abstract_ocr, abstract_pandas, media_intelligence
/ai query abstract_ai
/db tables, schema, columns, fetch, query abstract_database
/sys run_cmd stdlib (gated)
/ui capture, monitors, ocr, windows, click_verify abstract_clicks, abstract_windows

Safety gates

Backends load lazily, so the server boots on a headless box and a missing backend errors only when its tool is called. Beyond that:

  • /db/query — read-only gate: rejects anything that isn't a single SELECT/WITH, blocks stacked statements and data-modifying keywords. Use /db/fetch (identifier-composed, params-not-SQL) as the default read path.
  • /sys/run_cmd — disabled unless TOOLSERVER_CMD_ALLOWLIST=ls,grep,… is set; only allowlisted binaries run.
  • /fs/read_file · /fs/write_file — local-only; the underlying SSH/remote kwargs are never exposed at the boundary.
  • /ui/click_verify — the click→observe→verify loop: locate (text or image template) → click → re-capture → report whether the screen (or a region) changed. The half most tool APIs lack.

Configuration

Env var Purpose
TOOLSERVER_HOST / TOOLSERVER_PORT / TOOLSERVER_DEBUG bind + debug
TOOLSERVER_CMD_ALLOWLIST comma-separated binaries /sys/run_cmd may run
SOLCATCHER_POSTGRESQL_* DB connection (via abstract_database)

Metadata

Release files for abstract-toolserver 0.0.12

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for abstract-toolserver 0.0.12
File Size Uploaded
abstract_toolserver-0.0.12.tar.gz 20.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for abstract-toolserver 0.0.12
File Interpreter ABI Platform
abstract_toolserver-0.0.12-py3-none-any.whl Python 3 none any Details

Total release size: 42.4 kB

Release files / abstract_toolserver-0.0.12.tar.gz

Download URL abstract_toolserver-0.0.12.tar.gz
Size 20.5 kB
Tags Source
SHA-256 checksum
How to use checksums
470102340386982fd3d21688969c6cf9d8458d4979b4b2c6c0f73b67c7dcb35b
BLAKE2b-256 checksum
How to use checksums
9bb7ffb1558a1025fc17b2a36552a9e1786a533a5212e8a85f22578fe6137db6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release files / abstract_toolserver-0.0.12-py3-none-any.whl

Download URL abstract_toolserver-0.0.12-py3-none-any.whl
Size 21.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c59ef723398aa4c1b96d5b8f0c2085d749ae282b943f7a163e43c794d78caea0
BLAKE2b-256 checksum
How to use checksums
d7f51f0a06020ce65e9c7202f64dcf921bc830642022704bb86741e04800632e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.12

Release history Release notifications | RSS feed

0.0.55

1 release file

0.0.54

1 release file

0.0.53

1 release file

0.0.52

1 release file

0.0.51

1 release file

0.0.50

1 release file

0.0.49

1 release file

0.0.48

1 release file

0.0.47

1 release file

0.0.46

1 release file

0.0.45

1 release file

0.0.44

1 release file

0.0.43

1 release file

0.0.31

2 release files

0.0.30

2 release files

0.0.29

2 release files

0.0.28

1 release file

0.0.17

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

This release

0.0.12 This release

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page