Skip to main content

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.6.0

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

Source distribution (sdist)

Source distribution for jmfts-client 0.6.0
File Size Uploaded
jmfts_client-0.6.0.tar.gz 77.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jmfts-client 0.6.0
File Interpreter ABI Platform
jmfts_client-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 167.6 kB

Release files / jmfts_client-0.6.0.tar.gz

Download URL jmfts_client-0.6.0.tar.gz
Size 77.8 kB
Tags Source
SHA-256 checksum
How to use checksums
748bb4e3b79605594e0b244c600574450008ba6794934a5683c24d17c2479fc1
BLAKE2b-256 checksum
How to use checksums
6d58911b6ad84b87d1c844e25da93ec10b60484c179dda2962f854c650d7acea
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 Oct 12, 2026.

Transparency log

Release files / jmfts_client-0.6.0-py3-none-any.whl

Download URL jmfts_client-0.6.0-py3-none-any.whl
Size 89.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b06be2273a39349c90b970330773b12eb72cba26fabc237aabb84e3340dc21f4
BLAKE2b-256 checksum
How to use checksums
93182fd2ab491dc88f1136ac3089a84d1a31655df5eeb0b66d6dec82163d7d7d
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 Oct 12, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.2

2 release files

0.6.1

2 release files

This release

0.6.0 This release

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.3.0

2 release files

0.2.0

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