jmfts-client
The thin half of JMFTS: the wire contracts, and an HTTP client generated from them.
Install this to call a JMFTS appliance. Install jmfts to run one.
pip install jmfts-client
Two dependencies — httpx and pydantic. A consumer that only makes requests does not
install sqlalchemy, psycopg2, pgvector, transformers or pymupdf to do it.
Use
from jmfts_client import RemoteJmftsClient
from jmfts_client.contracts import DocumentCreate, HybridSearchRequest
with RemoteJmftsClient("http://localhost:8100", token="...") as jmfts:
doc = jmfts.create_document(DocumentCreate(title="Ada", content="Ada Lovelace"))
hits = jmfts.hybrid_search(HybridSearchRequest(query="Ada", limit=10))
for hit in hits.results:
print(hit.document_id, hit.score)
Errors arrive as exceptions carrying the status: JmftsNotFound, JmftsBadRequest,
JmftsConflict, JmftsUnprocessable, JmftsServerError. All descend from JmftsError.
A request that never reached the server raises JmftsTransportError.
Where the methods come from
Nobody writes them. A JMFTS service method marked @expose becomes a REST route, an entry
in the OpenAPI document, a method on the in-process LocalJmftsClient, and a method here —
four views of one definition.
jmfts_client/_verbs.py is generated from the route table the server actually builds, not
from the decorator's declaration, because the decorator does not record which parameters
are body, query or path — FastAPI's inference decides that, and reading the built routes is
what keeps this client and the server agreeing about the wire. Regeneration lives in the
jmfts repository (python -m scripts.generate_client), and a test there fails if this
file falls behind the surface.
What this client does not offer
LocalJmftsClient.unit_of_work() groups several writes into one transaction. There is no
equivalent here, deliberately. Each HTTP request is its own transaction on the server, so a
unit_of_work over HTTP could group the calls but could not roll back the earlier ones when
a later one failed. If you need that guarantee, run in-process with jmfts installed.
Licence
MIT. Copyright (c) 2026 Fight Fire with Fire Robotics, LLC.
Metadata
Release files for jmfts-client 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jmfts_client-0.5.0.tar.gz | 64.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| jmfts_client-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 139.2 kB
Release files / jmfts_client-0.5.0.tar.gz
| Download URL | jmfts_client-0.5.0.tar.gz |
|---|---|
| Size | 64.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1d16e1165000be6a0c9cb3aa245468dffbbdc7b2eade011ee8f8ec6a5f45d722
|
|
BLAKE2b-256 checksum How to use checksums |
dc6487a98a8f7a86b91d520fba6339127f77bb85e4c4c19d6e1b9e0a667a053e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logRelease files / jmfts_client-0.5.0-py3-none-any.whl
| Download URL | jmfts_client-0.5.0-py3-none-any.whl |
|---|---|
| Size | 74.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5a81edf9e3a160c6b10e65a9c76a583d24f9dde61c11ded02531363736ec34f3
|
|
BLAKE2b-256 checksum How to use checksums |
2a3bc4d9eb32ac2b1c5b8a6cc51a5380c0bdbd48b39aed3e618bc55f46465cff
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency log