R.E. Merrill & Associates Line Finder API
Deterministic pump line selection from curated, manufacturer-published performance data.
Deterministic pump line selection from curated, manufacturer-published performance data.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/remerrill-com-line-finder-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: R.E. Merrill Pump Line Finder API
version: 1.0.0
summary: Deterministic pump line selection from R.E. Merrill & Associates, over plain HTTP and over A2A JSON-RPC.
description: R.E.
contact:
name: R.E. Merrill & Associates, Inc.
email: info@remerrill.com
url: https://www.remerrill.com/contact
x-apievangelist-provenance:
method: generated
generated: '2026-09-19'
generated_from:
- https://www.remerrill.com/llms.txt
- https://www.remerrill.com/.well-known/agent-card.json
- POST https://www.remerrill.com/api/line-finder (documented example; HTTP 200 observed 2026-09-19)
- POST https://www.remerrill.com/api/line-finder with an invalid body (HTTP 400 observed 2026-09-19)
- 'GET https://www.remerrill.com/api/line-finder (HTTP 405 observed 2026-09-19); OPTIONS returned Allow: OPTIONS, POST'
- POST https://www.remerrill.com/api/a2a SendMessage (documented example; HTTP 200 observed 2026-09-19)
- POST https://www.remerrill.com/api/a2a GetTask with an unknown id (JSON-RPC error -32001 observed 2026-09-19)
provider_publishes_openapi: false
note: 'A generated contract, not a harvested one. Probed and absent on 2026-09-19: /openapi.json, /openapi.yaml, /swagger.json, /api/openapi.json, /api-docs, /docs (all real 404s).'
servers:
- url: https://www.remerrill.com
description: Production. The apex remerrill.com 308-redirects every path to www.
tags:
- name: Line Finder
description: Deterministic pump line selection from curated, manufacturer-published performance data.
paths:
/api/line-finder:
post:
tags:
- Line Finder
operationId: findPumpLines
summary: Find which represented pump lines fit a duty
description: 'Send a duty as JSON. Returns the represented lines whose curated model envelopes cover the stated flow and pressure, with per-family matching-model counts, a rationale naming the smallest covering model and its printed catalog source page, the items the endpoint deliberately does not resolve (fluid, concentration, temperature, service type), the curated-vs-consult-REM coverage of the represented lines, and an rfqUrl that prefills the contact form with the duty. Catalog performance is stated for water; R.E. Merrill confirms the selection for the actual fluid before quoting. Unauthenticated; stateless; GET returns 405 (Allow: OPTIONS, POST).'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Duty'
examples:
hypochlorite-feed:
summary: The provider's documented example
value:
fluid: sodium hypochlorite
concentrationPct: 12.5
flowGph: 2
pressurePsi: 40
service: feed
sludge-transfer:
summary: Progressing-cavity duty (from the agent card)
value:
fluid: municipal sludge
flowGpm: 100
pressurePsi: 50
service: transfer
responses:
'200':
description: Line-finder verdict. An empty matches[] is still a 200 — the duty simply falls outside every curated envelope and the response routes to consult-REM.
content:
application/json:
schema:
$ref: '#/components/schemas/LineFinderResult'
examples:
hypochlorite-feed:
summary: Observed response to the documented example (2026-09-19), family lists abbreviated
value:
matches:
- lineSlug: grundfos
lineName: Grundfos
families:
- id: dda
name: DDA SMART Digital
matchingModels: 3
- id: dmh-280
name: DMH 280 series
matchingModels: 22
rationale: '2 US gph at 40 psi falls inside 100 cataloged model envelopes across 9 families of the Grundfos line. Smallest covering model: DMH 281 6,4-100 (2 US gph at 1450 psi), DMH 280 series family, per Dosing All Product Brochure, printed page 25. Catalog performance is stated for water. REM confirms the selection for the actual fluid before quoting.'
unresolved:
- 'Fluid, concentration, and temperature are never resolved by this endpoint. Chemical compatibility is a safety determination: an REM engineer confirms materials for sodium hypochlorite, 12.5 percent against curated compatibility data and factory guidance. Send the duty through rfqUrl.'
- Service type "feed" is not resolved by the curated tables, which cover flow and pressure envelopes only. REM confirms fit for the service at quoting.
coverage:
curated:
- lineSlug: grundfos
lineName: Grundfos
- lineSlug: continental-ultrapump
lineName: Continental Progressing Cavity UltraPump
consultRem:
- Vanton Pump & Equipment Corporation
- DP Pumps USA
- Pinnacle-Flo
- Inc.
- Vertiflo
- Simtech Process Systems
- TF Seals
- Garbarino Pumps Asia Pte Ltd
- GreenPumps
- Pemo Pumps
- Victor Pumps
- Walrus Pump
note: 'Curated selector tables, built only from manufacturer-published catalogs with per-row source citations, exist for the lines under curated. The remaining represented lines are consult-REM by design: send the duty through rfqUrl and an engineer responds.'
rfqUrl: /contact?duty=Fluid%3A%20sodium%20hypochlorite%2C%2012.5%20percent.%20Flow%3A%202%20gph.%20Discharge%20pressure%3A%2040%20psi.%20Service%3A%20feed.
'400':
description: The body failed validation. The reason string concatenates the failing fields; rfqUrl still points at the human path.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalid:
summary: Observed 2026-09-19 for {"flowGph":"x"}
value:
error: Invalid request
reason: 'fluid: Invalid input flowGph: Invalid input'
rfqUrl: /contact
'405':
description: Method not allowed — only POST (and OPTIONS) is served on this path. Observed on GET with an empty body.
components:
schemas:
LineFinderResult:
type: object
properties:
matches:
type: array
items:
$ref: '#/components/schemas/LineMatch'
unresolved:
type: array
description: What the endpoint deliberately did not decide (fluid compatibility, concentration, temperature, service) and why.
items:
type: string
coverage:
$ref: '#/components/schemas/Coverage'
rfqUrl:
type: string
description: Site-relative URL (resolve against https://www.remerrill.com) that prefills the contact form with the duty for a human quotation.
PumpFamily:
type: object
properties:
id:
type: string
description: Family slug
e.g. dda: null
dmh-280: null
ck2000.: null
name:
type: string
description: Family name as printed in the manufacturer catalog.
matchingModels:
type: integer
description: Number of curated model envelopes in this family that cover the duty.
Coverage:
type: object
properties:
curated:
type: array
description: Lines for which curated selector tables exist (Grundfos, Continental UltraPump as of 2026-09-19).
items:
$ref: '#/components/schemas/LineRef'
consultRem:
type: array
description: Represented lines with no curated table; the duty goes to an engineer via rfqUrl.
items:
type: string
note:
type: string
LineRef:
type: object
properties:
lineSlug:
type: string
lineName:
type: string
LineMatch:
type: object
properties:
lineSlug:
type: string
description: Represented line slug; also the path segment under https://www.remerrill.com/lines/.
lineName:
type: string
families:
type: array
items:
$ref: '#/components/schemas/PumpFamily'
rationale:
type: string
description: Human-readable verdict naming the smallest covering model, its family, the source catalog and printed page, and the water-basis caveat.
ErrorResponse:
type: object
description: Plain JSON error object (not RFC 9457). Observed on 400.
properties:
error:
type: string
description: Short failure name
e.g. "Invalid request".: null
reason:
type: string
description: Field-level detail concatenated into one string.
rfqUrl:
type: string
description: Always present; the human fallback.
Duty:
type: object
description: A pumping duty as the provider defines it. Exactly one of flowGpm / flowGph and exactly one of pressurePsi / headFt (stated by the provider in prose; not expressible as a plain required list). Units are US customary. Fluid, concentration and temperature are accepted but never resolved by the endpoint — they are passed through to the engineer via rfqUrl.
required:
- fluid
properties:
fluid:
type: string
description: The pumped liquid, e.g. "sodium hypochlorite", "municipal sludge". Required; never resolved by the endpoint.
concentrationPct:
type: number
description: Concentration, percent. Passed through, not resolved.
temperatureF:
type: number
description: Temperature, degrees Fahrenheit. Passed through, not resolved.
flowGpm:
type: number
description: Flow in US gallons per minute. Use this OR flowGph, not both.
flowGph:
type: number
description: Flow in US gallons per hour (the native unit of the Grundfos dosing catalog). Use this OR flowGpm.
pressurePsi:
type: number
description: Discharge pressure, psi. Use this OR headFt, not both.
headFt:
type: number
description: Head, feet. Use this OR pressurePsi.
service:
type: string
enum:
- transfer
- feed
- sump
- slurry
- boiler
description: Service type. Recorded and passed to the engineer; the curated tables cover flow and pressure envelopes only, so service is reported under unresolved.
additionalProperties: true
externalDocs:
description: Provider documentation (llms.txt) — the only published reference for this API
url: https://www.remerrill.com/llms.txt