Pack local or remote codebases into AI-friendly files that LLMs and coding agents can read or search
Fluentedi is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
49 free agent tools: WHOIS, PDF to text, email checks, FX rates, X12 EDI, JSON repair. No API key.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http fluentedi-mcp https://fluentedi.com/mcp
# 2 — ask your agent for something these tools do
# time_now, time_convert, time_diff and 16 more
Fluentedi costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http fluentedi-mcp https://fluentedi.com/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
19 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Returns the authoritative current time in one or more timezones, with UTC offset, ISO week number, day of year, weekend flag, and daylight-saving state. Use this instead of guessing the date: a language model has no clock, and its training cutoff is not today.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| timezone | string | no | IANA timezone identifier, e.g. "UTC", "America/New_York", "Asia/Kolkata", "Europe/London". |
| also | array | no | Additional timezones to report alongside the primary one. |
Converts one instant into any number of timezones, handling daylight saving transitions correctly. Naive inputs (no Z or offset) are read as wall-clock time in from; inputs carrying an offset are absolute.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| time | string | no | The instant to convert: ISO 8601, a naive wall-clock time, a unix timestamp, or "now". |
| from | string | no | Timezone the input is expressed in (used only when it carries no offset). |
| to | array | yes | Target timezones. |
Computes the elapsed time between two instants: exact totals in each unit, a calendar breakdown (years/months/days rather than 'thirteen and a half months'), the count of weekdays in between, and a human phrase. Negative when to precedes from.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from | string | no | Start instant: ISO 8601, unix timestamp, or "now". |
| to | string | no | End instant: ISO 8601, unix timestamp, or "now". |
| timezone | string | no | IANA timezone identifier, e.g. "UTC", "America/New_York", "Asia/Kolkata", "Europe/London". |
Answers the questions a deadline actually poses: is this instant inside the window, how long until it opens or closes, and if it is outside, by how much. Optionally compares two windows for overlap. A window comparison that silently succeeds against the wrong bounds is a failure mode that does not raise an error anywhere — the ship window is missed, or the ASN is late, and the only symptom is a ch
| Parameter | Type | Required | Notes |
|---|---|---|---|
| start | string | yes | Window opens at this instant: ISO 8601, unix timestamp, or "now". |
| end | string | no | Window closes at this instant. Omit if using duration_hours. |
| duration_hours | number | no | Window length in hours, used when end is omitted. |
| instant | string | no | The instant to test against the window. |
| timezone | string | no | IANA timezone used to read naive inputs and render output. |
| compare_start | string | no | Start of a second window, to test for overlap with the first. |
| compare_end | string | no | End of the second window. |
Parses a standard 5-field cron expression (or 6-field with leading seconds, or a macro like @daily), validates it, describes it in plain English, and computes the next run times in a given timezone with daylight-saving handled. Use it before writing a schedule to config — cron's day-of-month/day-of-week OR-semantics and step syntax are a common source of silently wrong schedules.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| expression | string | yes | Cron expression, e.g. "*/15 * * * *", "0 9 * * 1-5", "@daily". |
| timezone | string | no | IANA timezone the schedule runs in. |
| count | integer | no | How many upcoming run times to return. |
| from | string | no | Compute run times after this instant instead of now. |
Runs a JSONPath query and returns the matching values with their concrete paths. Supports property access, array indexing (including negative indices), slices, wildcards, recursive descent (..) and filters ([?(@.price > 10)]). Pull three fields out of a large API response without carrying the whole document through context.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| json | yes | The JSON document, as an object or a JSON string. | |
| path | string | yes | JSONPath expression, e.g. "$.items[*].id" or "$..author". |
| first_only | boolean | no | Return only the first match. |
Takes JSON that almost parses and makes it parse: markdown code fences, prose wrapped around the object, trailing commas, single or smart quotes, unquoted keys, Python True/False/None, comments, NaN, and brackets left open by a truncated response. Every change is reported, so the caller learns what its generator got wrong rather than silently depending on a fixer. When the input cannot be salvaged
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | The malformed JSON text. |
| close_truncated | boolean | no | Close brackets left open by a cut-off response. |
Converts a document to markdown or plain text: pass a public URL or the file itself as base64, and get back the content with headings, tables and lists preserved, at a fraction of the tokens that rendered pages cost. Use it when a harness has no native reader for the format — .docx, .xlsx, .odt and .numbers rarely have one — when a document is only a URL away, or when a long PDF's text matters and
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | no | Public URL of the document to fetch and convert. |
| base64 | string | no | The file content as base64 (or a data: URI) instead of a URL, for documents not publicly reachable. Up to 10 MB decoded. |
| filename | string | no | Original file name, e.g. "report.docx". Only needed when the format cannot be detected from the URL or the bytes. |
| format | string | no | Output style: markdown keeps headings, tables and lists; text strips them. |
| max_chars | integer | no | Truncate the extracted content beyond this many characters. |
| timeout_ms | integer | no | Fetch timeout in milliseconds when url is used. |
Computes cryptographic digests and HMAC signatures. Returns hex and base64 at once, so a webhook signature can be compared in whichever encoding the provider uses. MD5 and CRC32 are included for checksums and legacy fixtures; they are not secure for authentication.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | Text to hash. |
| algorithms | array | no | Any of: md5, sha1, sha256, sha384, sha512, crc32. |
| hmac_key | string | no | When set, computes HMAC-<algorithm> with this key instead of a plain digest. Not supported for md5/crc32. |
| input_encoding | string | no | How to read input into bytes. |
Evaluates arithmetic with correct operator precedence, parentheses, exponentiation, factorials, named variables and 30+ functions. Language models perform arithmetic by pattern-matching and quietly get long multiplications and compounding wrong; this computes the number instead of predicting it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| expression | string | yes | Expression to evaluate, e.g. "(1+0.07)^30 * 1000". |
| variables | object | no | Named values usable in the expression, e.g. {"rate": 0.07}. |
| precision | integer | no | Decimal places to round the formatted result to. |
Resolves a URL and reports what actually happens to it — final status, the full redirect chain, content type and page title. Link rot is faster than it feels: one agent measured seven dead URLs out of 286 across fourteen days. This handles the three cases a naive checker gets wrong: an arXiv v1 to v2 redirect is a version change, not a break; a 403 is a blocked crawler, not a dead page; and a DOI
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | URL to check. |
| max_redirects | integer | no | How many redirects to follow. |
| timeout_ms | integer | no | Per-request timeout in milliseconds. |
The difference between an agent believing it succeeded and knowing it did. http.check tells you a URL is alive; this tells you it is correct. Assert the status, response headers, values at JSONPath expressions, substrings in the body and a latency ceiling, and get back one boolean plus a per-check breakdown showing expected against actual. An agent that has just deployed, migrated or reconfigured
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | URL to call. |
| method | string | no | HTTP method. |
| body | string | no | Request body for POST, PUT and PATCH. |
| headers | object | no | Request headers to send. |
| expect_status | no | Required status: a number, an array of acceptable numbers, or a class such as "2xx". | |
| expect_headers | object | no | Response headers that must exist and contain a substring, e.g. {"content-type":"json"}. |
| expect_json | object | no | JSONPath expressions mapped to required values, e.g. {"$.status":"ok","$.items[0].id":1}. |
| expect_body_contains | array | no | Substrings that must appear in the body. |
| max_response_ms | integer | no | Fail if the response takes longer than this. 0 disables the check. |
| timeout_ms | integer | no | Request timeout. |
Answers the questions WHOIS used to answer, over RDAP — the structured protocol the registries themselves now serve — with no key and no scraping: who registered a domain, when it expires, which registrar and nameservers it uses, whether transfers are locked, and whether DNSSEC is signed. Give it an IP address instead and it returns the owning network: name, CIDR range, and the responsible registr
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Domain name or IP address to look up. |
Reads a raw ASC X12 interchange and returns it as JSON: delimiters taken from the ISA header, the ISA/GS/ST envelope decoded, every segment split into named elements, and a document-specific summary - purchase order lines for an 850, the HL shipment hierarchy and SSCCs for an 856, invoice totals for an 810. EDI is positional and delimiter-sensitive, and unreadable without a spec table; reading it
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | Raw X12 EDI text, beginning with ISA where available. |
| include_segments | boolean | no | Include the flat segment list alongside the summary. |
Runs the structural checks a trading partner runs before rejecting a file: control numbers matching between the ISA/IEA, GS/GE and ST/SE header and trailer pairs, declared counts matching actual counts, and - for an 856 - the HL hierarchy. HL faults are the usual cause of ASN rejections and chargebacks: a parent ID naming no existing node, a duplicate HL01, an unknown level code, a missing carton
| Parameter | Type | Required | Notes |
|---|---|---|---|
| input | string | yes | Raw X12 EDI text. |
| require_levels | array | no | HL level codes that must be present in an 856, e.g. ["S","O","P","I"] for a pack-level ASN. |
Compiles structured JSON into standards-valid X12. The parts that get documents rejected are exactly the parts a language model cannot hold in its head: the 856 hierarchy needs sequential HL IDs where every level names its parent's ID, and on a multi-carton, multi-SKU shipment that bookkeeping goes wrong silently. The ISA header is fixed-width — 106 characters exactly, every element space-padded t
| Parameter | Type | Required | Notes |
|---|---|---|---|
| document | string | no | Transaction set to build. |
| data | object | yes | Document content. For 856: {shipment_id, ship_date, orders:[{po_number, packs:[{sscc, items:[{upc, quantity, unit}]}]}], parties:[{role,name,id}]}. For 850: {po_number, order_date, lines:[{quantity, u |
| sender_id | string | no | ISA06 sender identifier. |
| receiver_id | string | no | ISA08 receiver identifier. |
| sender_qualifier | string | no | ISA05 qualifier, e.g. ZZ, 01 (DUNS), 12 (phone). |
| receiver_qualifier | string | no | ISA07 qualifier. |
| control_number | integer | no | Interchange control number (ISA13). Also seeds GS06 and ST02. |
| test_indicator | boolean | no | Mark the interchange as test (ISA15 = T) rather than production (P). |
| timestamp | string | no | ISO instant for the envelope date/time. Defaults to now. |
| include_envelope | boolean | no | Wrap the transaction set in ISA/GS ... GE/IEA. |
Searches every tool by name, summary, description and keywords, and returns the closest matches with their endpoints and parameters. Use this instead of loading the whole catalogue: describe the job ("check whether a shipment is late", "fix broken JSON", "validate a barcode check digit") and call what comes back. Each result says why it matched, so a wrong match is obvious rather than plausible.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| q | string | yes | What you are trying to do, in plain language. |
| limit | integer | no | Maximum matches to return. |
| detail | boolean | no | Include full parameter schemas and worked examples for each match. |
Returns everything needed to call a tool correctly: its complete JSON Schema, every parameter with type and default, and examples known to work. Pair it with tool.search — search to find the name, describe to learn the shape, then call. This exists so the catalogue does not have to be loaded into context up front.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | Tool name, e.g. "time.window". Underscores and slashes are accepted too. |
Dispatches to any tool in the catalogue. Most clients cap how many tools they will hold at once — Cursor drops everything past roughly forty across all servers combined — so only a core set is listed by default. Everything else is reachable here. Find a name with tool.search, check its shape with tool.describe, then call it through this.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| tool | string | yes | Name of the tool to invoke. |
| args | object | no | Arguments for that tool. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Fluentedi or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.1.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Fluentedi can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.