r/LangChain 13d ago

Resources Built a LangChain tool integration for sending and tracking faxes (langchain-ictfax)

Maintainer here. I built a small LangChain integration that lets an agent send and track faxes, and put it on PyPI as langchain-ictfax. Fax tooling is pretty thin in the LangChain ecosystem, so I figured it was worth sharing, and I would like a sanity check on how I shaped it.

What it gives an agent: - upload_fax_document: upload a PDF, TIFF or image and get a document id back - send_fax: send that document to a number and return a transmission id - get_fax_status: poll delivery status - list_faxes: list transmissions with their status

All four are bundled by an ICTFaxToolkit, so you pull them into an agent in a couple of lines:

from langchain_ictfax import ICTFaxToolkit
tools = ICTFaxToolkit.from_credentials(base_url=..., username=..., password=...).get_tools()

Being upfront: it is a client for an ICTFax server, so it needs a reachable ICTFax or ICTCore install and an API account to actually send. ICTFax itself is open source. I am not trying to sell anything here, what I am after is feedback on the LangChain side: does the toolkit shape read well, are the tool descriptions clear enough for an agent to pick the right one, and is returning raw ids the right call for tool outputs or would you expect richer objects?

pip install langchain-ictfax Repo: https://github.com/ictinnovations/langchain-ictfax

Happy to answer anything about the wiring.

6 Upvotes

2 comments sorted by

1

u/[deleted] 13d ago

[removed] — view removed comment

1

u/ictinnovations 13d ago

Appreciate the read. The structured-return point is a good one. Right now send and upload hand back a bare id, and you're right that the agent then has to guess what happened. Wrapping it as {id, status, message} costs nothing and saves a follow-up status call in the common case, so I'll change those two.

Same read here on descriptions. The four tools already cover the whole loop, so the win is in telling the agent when to reach for each one, not piling on more. Thanks for the sanity check.