# Press Fit & Pressure Vessel Calculator (Lamé, ISO Fits, ASME) (`jumblemog/press-fit-vessel-calculator`) Actor

Press and shrink fit, thick cylinder and pressure vessel calculator from plain text: contact pressure from an interference or ISO fit (H7/s6), stresses, holding torque, assembly temperature, Lamé wall stresses, and ASME VIII shell and head thickness and MAWP.

- **URL**: https://apify.com/jumblemog/press-fit-vessel-calculator.md
- **Developed by:** [Jumble Mog](https://apify.com/jumblemog) (community)
- **Categories:** AI, Automation, Developer tools
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Press Fit & Pressure Vessel Calculator (Lamé, ISO Fits, ASME)

**Will the hub crack, will the fit slip, how thick must the shell be? Describe it in one line and find out.** Type `press fit: 50 mm steel shaft in a cast iron hub, H7/s6, hub OD 100 mm, 40 mm long, torque 500 N·m` or `ASME vessel: 1.5 MPa, 1000 mm ID, SA-516-70, spot RT, 3 mm corrosion, 2:1 ellipsoidal heads`. You get back:

- **Press and shrink fits**: the contact pressure at the largest and smallest interference (from an ISO 286 fit like `H7/s6`, or the interference you give), the hoop stresses in the hub and shaft, von Mises stresses and safety factors, the torque and axial force the fit holds before it slips, and how hot to heat the hub (or how cold to chill the shaft) to slide it on. Solid or hollow shafts, and different materials for shaft and hub.
- **Thick-walled cylinders** (Lamé): hoop, radial and axial stress at the bore and the outside under internal and external pressure, von Mises and Tresca stresses, the yield safety factor, and the thin-wall estimate for comparison. Closed ends, open ends or plane strain.
- **ASME Section VIII Div. 1 vessels**: the required thickness of the shell (UG-27) and the heads (UG-32: 2:1 ellipsoidal, hemispherical or torispherical) with the corrosion allowance, the next standard plate, each part's MAWP and the vessel's, and the hydrotest pressure (UG-99). Built-in allowable stresses for common plate and pipe grades, or give your own.
- **A chart**: the stresses through the shaft and hub or the wall, next to the safety factors; or for a vessel, each part's thickness against its plate next to its MAWP.

Metric (mm, MPa) or inch (in, psi): results come back in the units you wrote.

It's made for:

- Mechanical designers fitting gears, pulleys, bearings and bushings onto shafts.
- Engineers sizing tanks, receivers and pipes, and checking existing vessels.
- Engineering students working Shigley-style press fit and thick cylinder problems.
- AI agents that need real stress numbers instead of a guess.

![A 50 mm H7/s6 press fit of a steel shaft in a cast iron hub analyzed by this Actor: hoop and radial stress plotted through the shaft and hub at the largest interference, 53 MPa contact pressure and 89 MPa hoop stress at the hub bore, next to bars of the hub safety factor 2.42 against its tensile strength and the slip safety 0.76 for the 500 N·m torque](https://api.apify.com/v2/key-value-stores/Km5b4PG3kYHdZSb1E/records/press-fit-vessel-calculator-example.png?signature=1omzri0AePLYRtaPbMC5w)

### How to use it

1. Write **Requests**, one per entry. The form has examples.
2. Optionally set a default **material**, **friction**, **joint efficiency** or the **Units**.
3. Click **Start**. Each request is a row in the results, with its summary, chart and report.

#### Writing a request

| You write | It means |
|---|---|
| `press fit`, `shrink fit`, `thick cylinder`, `ASME vessel` | the kind of request (it's usually clear from the rest) |
| `50 mm shaft`, `2 in shaft`, `40 mm bore gear` | the fit diameter |
| `hub OD 100 mm`, `1 in shaft bore` | the hub's outside diameter, a hollow shaft's bore |
| `H7/s6`, `0.05 mm interference`, `0.0015 to 0.0025 in interference` | the interference |
| `40 mm long`, `friction 0.12`, `torque 500 N·m` | the fit length, friction, and the torque it must hold |
| `steel shaft in a cast iron hub`, `1045`, `4140`, `aluminum`, `bronze`, `yield 350 MPa` | materials |
| `ID 100 mm, OD 200 mm`, `wall 10 mm` | a cylinder's size |
| `internal pressure 50 MPa`, `external pressure 10 MPa`, `open ends` | a cylinder's loads |
| `1.5 MPa`, `150 psi`, `15 bar`, `ID 1000 mm` | a vessel's design pressure and diameter |
| `SA-516-70`, `SA-240-304`, `allowable stress 138 MPa` | the vessel material |
| `full RT`, `spot RT`, `no RT`, `corrosion 3 mm` | joint efficiency (1.0, 0.85, 0.70) and corrosion allowance |
| `2:1 ellipsoidal`, `hemispherical`, `torispherical`, `shell 8 mm` | the heads, and a wall to check |

Objects work too; see Input.

### Examples

All of these ran on this Actor; the numbers are from the results.

| Request | Result |
|---|---|
| `press fit: 50 mm steel shaft in a cast iron hub, H7/s6, hub OD 100 mm, 40 mm long, torque 500 N·m` | 53.16 MPa contact pressure at the 0.059 mm maximum interference, 16.22 at the 0.018 minimum; hub bore hoop 88.6 MPa, safety 2.42 against Sut; holds only 382 N·m at the minimum, so it warns; heat the hub 202 °C |
| `shrink fit 40 mm bore gear, 0.05 mm interference, hub OD 80 mm, 1045 steel` | 97.03 MPa; hub von Mises 226 MPa, safety 1.37; heat the hub 192 °C |
| Gear on a hollow shaft: 2 in, 0.0015 to 0.0025 in, hub 3.5 in, 1 in bore, 1045 CD shaft, 4140 hub, μ 0.12 | 10,320 psi at the maximum, 6,192 at the minimum; safety 3.52; holds 7,003 lbf·in |
| `thick cylinder ID 100 mm, OD 200 mm, internal pressure 50 MPa, 4140` | At the bore: hoop 83.33, radial −50, axial 16.67 MPa, von Mises 115.47; yield safety 5.67 (thin-wall estimate 75) |
| `ASME vessel: 1.5 MPa, 1000 mm ID, SA-516-70, spot RT, 3 mm corrosion, 2:1 ellipsoidal heads` | Shell 10 mm (needs 9.487), heads 10 mm (needs 9.445); MAWP 1.62 MPa corroded; hydrotest 2.1 MPa |
| `vessel: 150 psi, 48 in ID, SA-516-70, spot RT, corrosion 1/16 in, hemispherical heads` | Shell 5/16 in (needs 0.2759), heads 3/16 in; MAWP 176 psi; hydrotest 228 psi |
| `vessel 15 bar, ID 800 mm, SA-240-316L, no RT, torispherical heads, shell 8 mm` | The 8 mm shell passes (needs 7.528); F\&D heads need 14 mm; MAWP 1.59 MPa |

The tests check that:

- The contact pressure matches the closed-form same-material formula p = Eδ(ro² − R²)/(2R·ro²), and the hollow-shaft and two-material cases agree with Shigley's eq. 3-56.
- Lamé gives 83.33 and 16.67 MPa for a 100 × 200 mm cylinder at 50 MPa, and external pressure compresses the bore.
- ISO 286 limits come out right (50 r6 = +34/+50 µm, 100 s6 = +71/+93, 25 u6 = +48/+61).
- The ASME thickness formulas round-trip: the MAWP of the exact required thickness is the design pressure.

### How-to examples

Each example is a complete input; the results are from runs of the Actor (also listed under **Examples**).

#### How to calculate the contact pressure and torque of a press fit

```json
{"requests": ["press fit: 50 mm steel shaft in a cast iron hub, H7/s6, hub OD 100 mm, 40 mm long, torque 500 N·m"]}
```

Result: 53.16 MPa contact pressure at the 0.059 mm maximum interference and 16.22 MPa at the 0.018 mm minimum; hub bore hoop stress 88.6 MPa, safety 2.42 against Sut. It holds only 382 N·m at the minimum, so it warns. Heat the hub 202 °C to assemble.

#### How to size an ASME pressure vessel shell and heads

```json
{"requests": ["ASME vessel: 1.5 MPa, 1000 mm ID, SA-516-70, spot RT, 3 mm corrosion, 2:1 ellipsoidal heads"]}
```

Result: a 10 mm shell (needs 9.487 mm) and 10 mm heads (need 9.445 mm); MAWP 1.62 MPa corroded; hydrotest 2.1 MPa.

#### How to calculate stresses in a thick-walled cylinder (Lamé)

```json
{"requests": ["thick cylinder ID 100 mm, OD 200 mm, internal pressure 50 MPa, 4140"]}
```

Result: at the bore: hoop 83.33, radial −50 and axial 16.67 MPa, von Mises 115.47 MPa; yield safety 5.67, where the thin-wall formula would say 75 MPa hoop.

#### How to let an AI agent check fits and vessels

Add this Actor to the [Apify MCP server](https://mcp.apify.com) with `https://mcp.apify.com/?tools=jumblemog/press-fit-vessel-calculator`. The agent describes the fit, cylinder or vessel in one line and answers with the pressure, stresses and thicknesses.

### FAQ

**Does it read ISO fit codes?** Yes, such as `H7/s6`. For inch ANSI FN fits, give the interference range from your table.

**Which vessel parts does it size?** ASME VIII-1 shells and hemispherical, 2:1 ellipsoidal and torispherical heads under internal pressure, with joint efficiency from the radiography and a corrosion allowance.

**What isn't covered?** External pressure (UG-28 buckling), nozzle reinforcement, flat heads, cones, and wind and seismic loads.

**Is it a code calculation?** It's an engineering estimate. A code vessel still needs a qualified designer, the current edition of the Code and an Authorized Inspector.

### Input

| Field | What it is |
|---|---|
| `requests` | Requests, as text or objects. |
| `material` | Default material for fits and cylinders that name none. |
| `friction` | Default friction coefficient (0.15). |
| `jointEfficiency` | Default ASME joint efficiency (1.0). |
| `units` | `mm` (mm and MPa, default) or `in` (inches and psi), for numbers written without a unit. |
| `charts` | Draw charts (default on). |

**A request as an object** takes `type` (`press fit`, `cylinder` or `vessel`), `title`, `units`, `text` (a line of text, with the other fields overriding what it says) and:

- Fits: `diameter`, `fit` (like `H7/s6`), `interference` (a value or a range) or `radialInterference`, `hubDiameter`, `shaftBore`, `length`, `friction`, `torque`, `assemblyClearance`, `material`, `shaftMaterial`, `hubMaterial`, `yieldStrength`, `shaftYield`, `hubYield`.
- Cylinders: `insideDiameter`, `outsideDiameter` or `thickness`, `pressure`, `externalPressure`, `ends`, `material`, `yieldStrength`.
- Vessels: `pressure`, `insideDiameter`, `asmeMaterial` or `allowableStress`, `jointEfficiency`, `corrosion`, `heads`, `thickness`.

### Output

One dataset item per request, also saved together in the run's `OUTPUT` record:

```json
{
  "request": 1, "status": "ok", "type": "press fit", "mode": "analyze",
  "title": "50 mm H7/s6 press fit",
  "units": {"length": "mm", "stress": "MPa", "force": "kN", "torque": "N·m", "temperature": "°C"},
  "geometry": {"diameter": 50.0, "hubOutsideDiameter": 100.0, "shaftBore": null, "length": 40.0, "friction": 0.15},
  "fit": {"code": "H7/s6", "holeLimits": [50.0, 50.025], "shaftLimits": [50.043, 50.059], "type": "interference"},
  "maximum": {"interference": 0.059, "pressure": 53.16, "hubBoreHoop": 88.6, "hubVonMises": 124.04,
              "torque": 1252.56, "axialForce": 50.103},
  "minimum": {"interference": 0.018, "pressure": 16.22, "hubBoreHoop": 27.03, "torque": 382.14},
  "requiredTorque": 500.0,
  "safety": {"hub": 2.415, "slip": 0.764},
  "assembly": {"clearance": 0.05, "heatHubBy": 201.9, "orCoolShaftBy": 186.3},
  "imageUrl": "https://api.apify.com/v2/key-value-stores/.../records/001-....png"
}
```

Cylinders have `geometry`, `pressures`, `inner`, `outer` (each with `tangential`, `radial`, `axial`, `vonMises`, `tresca`), `material`, `safety` and `thinWallHoop`. Vessels have `design`, `parts` (each with `requiredThickness`, `withCorrosion`, `plate`, `mawp` and the `formula`), `mawp` and `hydrotest`. Every item has `summary`, `warnings`, `notes` (the formulas and assumptions), a Markdown `report` and links to the chart and report. A request that can't be computed has `"status": "failed"` and the reason in `error`, and isn't billed.

### How it works

1. **Reading**: each line is read for sizes, pressures, materials, fits and factors; numbers carry their units.
2. **Press fits**: p = δ / (R\[(1/Eo)((ro² + R²)/(ro² − R²) + νo) + (1/Ei)((R² + ri²)/(R² − ri²) − νi)]) with δ the radial interference (Shigley eq. 3-56); hoop stresses from Lamé; holding torque T = 2π·μ·p·R²·L and force F = 2π·μ·p·R·L; assembly temperature ΔT = (2δ + clearance)/(α·d). ISO fits use the ISO 286 tolerance grades and deviations.
3. **Cylinders**: σt, σr = (pi·ri² − po·ro²)/(ro² − ri²) ± ri²·ro²(pi − po)/(r²(ro² − ri²)); σa = (pi·ri² − po·ro²)/(ro² − ri²) for closed ends (Shigley section 3-14).
4. **Vessels**: shell t = PR/(SE − 0.6P) (and the longitudinal PR/(2SE + 0.4P)); hemispherical heads PR/(2SE − 0.2P); 2:1 ellipsoidal PD/(2SE − 0.2P); torispherical 0.885PL/(SE − 0.1P); all on the corroded radius, plus the corrosion allowance, rounded up to a standard plate; MAWP from the same formulas solved for P with the plate less corrosion; hydrotest 1.3 × MAWP.

Results are engineering estimates for the stated assumptions; a code vessel still needs a qualified designer, the current edition of the Code, and an Authorized Inspector.

### Pricing

You pay one low price per request, at the price shown on this page. It includes the chart and the report. Requests that can't be computed are never charged. If you set a maximum cost per run, the Actor stops before a request that wouldn't fit.

### Speed

A request takes a few milliseconds, plus the chart. A run through the API answers in about 5 to 10 seconds, including the cloud container starting.

### Tips and limits

- **Fits are elastic**: once the hub yields the real pressure is lower than shown. Cast iron hubs are checked against their tensile strength.
- **Inch fits**: ISO fit codes are metric; for ANSI FN fits give the interference range from your table.
- **Vessel allowable stresses** are the room-temperature values of a recent edition of ASME II-D; at high temperature give `allowable stress` yourself.
- **Not covered**: external pressure on vessels (UG-28 buckling), nozzle reinforcement, flat heads, cones, wind and seismic loads.
- **Limits**: 500 requests per run.

### For AI agents and developers

This Actor works with the [Apify MCP server](https://mcp.apify.com), so AI agents can call it as a tool. Pass `requests` as plain text and read `summary`, `safety`, `mawp`, `parts` and `warnings`. A direct API call that waits for the answer:

```bash
curl -X POST "https://api.apify.com/v2/acts/jumblemog~press-fit-vessel-calculator/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"requests": ["ASME vessel: 1.5 MPa, 1000 mm ID, SA-516-70, spot RT, 3 mm corrosion, 2:1 ellipsoidal heads"]}'
```

`run-sync` instead returns the run's `OUTPUT`: the status, the counts and every result as JSON.

In Python, with the `apify-client` package:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("jumblemog/press-fit-vessel-calculator").call(run_input={
    "requests": [{"title": "Bearing seat", "type": "press fit", "diameter": "35 mm", "fit": "H7/p6",
                  "hubDiameter": "72 mm", "length": "17 mm", "material": "steel", "yieldStrength": "350 MPa"}],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["summary"])
```

### Credits

- Charts: [Vega-Lite](https://vega.github.io/vega-lite/) and [vl-convert](https://github.com/vega/vl-convert) (BSD-3-Clause), with the [Inter](https://rsms.me/inter/) font (SIL Open Font License).
- Method: Budynas and Nisbett, *Shigley's Mechanical Engineering Design*, sections 3-14 to 3-16 and Table A-5; ISO 286-1/-2 limits and fits; ASME Boiler and Pressure Vessel Code Section VIII Division 1, UG-27, UG-32 and UG-99.

# Actor input Schema

## `requests` (type: `array`):

One request per entry, as a line of text or an object. Press or shrink fits: the fit diameter ('50 mm shaft'), the hub's outside diameter ('hub OD 100 mm'), the interference ('0.05 mm interference', '0.03 to 0.06 mm interference') or an ISO fit ('H7/s6', metric), the length ('40 mm long'), materials ('steel shaft in a cast iron hub', '1045', '4140', 'aluminum', 'bronze'), and optionally a hollow shaft's bore, 'friction 0.12' and 'torque 500 N·m' to check slip. Thick cylinders: 'ID 100 mm, OD 200 mm' (or a wall), 'internal pressure 50 MPa', 'external pressure 10 MPa', 'open ends'. ASME vessels: the design pressure ('1.5 MPa', '150 psi', '15 bar'), 'ID 1000 mm', the material ('SA-516-70', 'SA-240-304') or 'allowable stress 138 MPa', 'spot RT' / 'full RT' / 'no RT', 'corrosion 3 mm', the heads ('2:1 ellipsoidal', 'hemispherical', 'torispherical'), and a wall to check. Object fields: type (press fit, cylinder, vessel), diameter, fit, interference, radialInterference, hubDiameter, shaftBore, length, friction, torque, assemblyClearance, material, shaftMaterial, hubMaterial, yieldStrength, shaftYield, hubYield, insideDiameter, outsideDiameter, thickness, pressure, externalPressure, ends, asmeMaterial, allowableStress, jointEfficiency, corrosion, heads, units, title.

## `material` (type: `string`):

For press fits and cylinders that name none (plain steel if unset, which has no yield strength).

## `friction` (type: `string`):

For a press fit's holding torque and force, such as '0.12'. 0.15 if unset.

## `jointEfficiency` (type: `string`):

For ASME vessels that don't say. 1.0 if unset.

## `units` (type: `string`):

For numbers written without a unit. Inches or psi in the text switch to inch units on their own.

## `charts` (type: `boolean`):

Stress through the parts and the safety factors, or the vessel's thicknesses and MAWP.

## Actor input object example

```json
{
  "requests": [
    "press fit: 50 mm steel shaft in a cast iron hub, H7/s6, hub OD 100 mm, 40 mm long, torque 500 N·m",
    "thick cylinder ID 100 mm, OD 200 mm, internal pressure 50 MPa, 4140",
    "ASME vessel: 1.5 MPa, 1000 mm ID, SA-516-70, spot RT, 3 mm corrosion, 2:1 ellipsoidal heads",
    {
      "title": "Gear on a hollow shaft",
      "type": "press fit",
      "diameter": "2 in",
      "interference": "0.0015 to 0.0025 in",
      "hubDiameter": "3.5 in",
      "shaftBore": "1 in",
      "length": "1.5 in",
      "shaftMaterial": "1045 CD",
      "hubMaterial": "4140",
      "friction": 0.12
    }
  ],
  "units": "mm",
  "charts": true
}
```

# Actor output Schema

## `results` (type: `string`):

One row per request: the summary and chart.

## `output` (type: `string`):

The OUTPUT record: every result in one JSON object.

## `files` (type: `string`):

Charts (PNG and SVG) and Markdown reports in the run's key-value store.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "requests": [
        "press fit: 50 mm steel shaft in a cast iron hub, H7/s6, hub OD 100 mm, 40 mm long, torque 500 N·m",
        "thick cylinder ID 100 mm, OD 200 mm, internal pressure 50 MPa, 4140",
        "ASME vessel: 1.5 MPa, 1000 mm ID, SA-516-70, spot RT, 3 mm corrosion, 2:1 ellipsoidal heads",
        {
            "title": "Gear on a hollow shaft",
            "type": "press fit",
            "diameter": "2 in",
            "interference": "0.0015 to 0.0025 in",
            "hubDiameter": "3.5 in",
            "shaftBore": "1 in",
            "length": "1.5 in",
            "shaftMaterial": "1045 CD",
            "hubMaterial": "4140",
            "friction": 0.12
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jumblemog/press-fit-vessel-calculator").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "requests": [
        "press fit: 50 mm steel shaft in a cast iron hub, H7/s6, hub OD 100 mm, 40 mm long, torque 500 N·m",
        "thick cylinder ID 100 mm, OD 200 mm, internal pressure 50 MPa, 4140",
        "ASME vessel: 1.5 MPa, 1000 mm ID, SA-516-70, spot RT, 3 mm corrosion, 2:1 ellipsoidal heads",
        {
            "title": "Gear on a hollow shaft",
            "type": "press fit",
            "diameter": "2 in",
            "interference": "0.0015 to 0.0025 in",
            "hubDiameter": "3.5 in",
            "shaftBore": "1 in",
            "length": "1.5 in",
            "shaftMaterial": "1045 CD",
            "hubMaterial": "4140",
            "friction": 0.12,
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("jumblemog/press-fit-vessel-calculator").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "requests": [
    "press fit: 50 mm steel shaft in a cast iron hub, H7/s6, hub OD 100 mm, 40 mm long, torque 500 N·m",
    "thick cylinder ID 100 mm, OD 200 mm, internal pressure 50 MPa, 4140",
    "ASME vessel: 1.5 MPa, 1000 mm ID, SA-516-70, spot RT, 3 mm corrosion, 2:1 ellipsoidal heads",
    {
      "title": "Gear on a hollow shaft",
      "type": "press fit",
      "diameter": "2 in",
      "interference": "0.0015 to 0.0025 in",
      "hubDiameter": "3.5 in",
      "shaftBore": "1 in",
      "length": "1.5 in",
      "shaftMaterial": "1045 CD",
      "hubMaterial": "4140",
      "friction": 0.12
    }
  ]
}' |
apify call jumblemog/press-fit-vessel-calculator --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jumblemog/press-fit-vessel-calculator"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ocrgYofHc6Oe6ZScc/builds/YQ4kUDwubvDF3AeLy/openapi.json
