WritersLogic Verifiable AI Agent Hub Carton Fit API
The Carton Fit API from WritersLogic Verifiable AI Agent Hub — 1 operation(s) for carton fit.
The Carton Fit API from WritersLogic Verifiable AI Agent Hub — 1 operation(s) for carton fit.
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/writerslogic-com:writerslogic-com-carton-fit-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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: WritersLogic Verifiable AI Agent Hub Carton Fit API
version: 2.0.0
description: Pay-per-call agents settled in USDC on Base via x402. Every response carries a signed provenance envelope.
contact:
name: WritersLogic
url: https://writerslogic.com/agents
email: agents@writerslogic.com
servers:
- url: https://agents.writerslogic.com
tags:
- name: Carton Fit
paths:
/api/v1/carton-fit:
post:
operationId: carton_fit
summary: Pack items into the smallest fitting carton (bounded heuristic)
description: 'Checks whether up to 50 box-shaped items (axis-aligned, 90-degree rotations, optional this-side-up lock, optional weights) fit into any of up to 20 candidate cartons, and recommends the smallest-volume carton for which a packing was found, with coordinates for every item. For shipping and fulfilment agents sizing a parcel. The packing is a greedy extreme-point HEURISTIC with a fixed step cap, not an optimal solver: pass means a verified packing exists; fail only when a carton is provably impossible (an item exceeds every orientation, total volume or total weight exceeds the limit); unknown means no packing was found but none is proven impossible. Dunnage, void fill, item support and crush strength are not modelled.
Price: 0.005 USDC on Base (x402).'
x-x402-price-usdc: '0.005'
x-x402-amount: '5000'
x-payment-info:
protocols:
- x402
price:
mode: fixed
currency: USD
amount: '0.005'
x-audience: business
x-sample-url: https://agents.writerslogic.com/api/v1/samples/carton-fit
security:
- x402: []
- apiKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
additionalProperties: false
required:
- items
- boxes
properties:
items:
type: array
items:
type: object
required:
- id
- l
- w
- h
properties:
id:
type: string
maxLength: 64
description: Item id (unique).
l:
type: number
description: Length, at most 3 decimals.
minimum: 0.001
maximum: 100000
w:
type: number
description: Width.
minimum: 0.001
maximum: 100000
h:
type: number
description: Height (the vertical axis when thisSideUp).
minimum: 0.001
maximum: 100000
weight:
type: number
description: Weight in one unit shared with maxWeight.
minimum: 0
maximum: 1000000000
qty:
type: integer
minimum: 1
maximum: 50
description: Copies of this item (default 1).
thisSideUp:
type: boolean
description: Keep h vertical (only rotation about the vertical axis allowed).
maxItems: 50
minItems: 1
description: At most 50 item lines and 50 units in total (sum of qty).
boxes:
type: array
items:
type: object
required:
- id
- l
- w
- h
properties:
id:
type: string
maxLength: 64
description: Carton id (unique).
l:
type: number
description: Inner length.
minimum: 0.001
maximum: 100000
w:
type: number
description: Inner width.
minimum: 0.001
maximum: 100000
h:
type: number
description: Inner height.
minimum: 0.001
maximum: 100000
maxWeight:
type: number
description: Maximum content weight; requires every item to carry a weight.
minimum: 0
maximum: 1000000000
maxItems: 20
minItems: 1
description: At most 20. Use inner dimensions.
example:
items:
- id: book
l: 24
w: 17
h: 3
qty: 3
- id: mug
l: 10
w: 10
h: 5
thisSideUp: true
boxes:
- id: small
l: 20
w: 15
h: 10
- id: medium
l: 30
w: 20
h: 15
responses:
'200':
description: Paid result with provenance
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
status:
type: string
enum:
- pass
- fail
- unknown
- unsupported
description: 'pass: every rule held. fail: a rule was violated (see witnesses). unknown: the input lacks the evidence to decide. unsupported: outside what this engine covers. Missing evidence is never a pass.'
heuristic:
type: boolean
description: 'Always true: the packer is a heuristic, not an optimal solver.'
recommendedBox:
anyOf:
- type: string
description: Id of the smallest-volume carton with a verified packing, or null.
- type: 'null'
boxes:
type: array
items:
type: object
properties:
boxId:
type: string
verdict:
type: string
enum:
- fits
- cannot
- undecided
reason:
anyOf:
- type: string
description: 'For cannot: the proof. For undecided: why.'
- type: 'null'
usedVolumePct:
type: number
description: Item volume as percent of the carton volume.
placements:
type: array
description: 'For the recommended carton: lower corner (x,y,z) and placed size (l,w,h) of every unit, in the caller''s unit.'
items:
type: object
properties:
itemId:
type: string
unitIndex:
type: integer
x:
type: number
y:
type: number
z:
type: number
l:
type: number
w:
type: number
h:
type: number
totalWeight:
anyOf:
- type: number
description: Sum of item weights, or null when any item has none.
- type: 'null'
steps:
type: integer
description: Overlap tests used of the step cap.
witnesses:
type: array
items:
type: object
properties:
ruleId:
type: string
detail:
type: string
path:
type: string
description: JSON pointer or dotted path into the input.
offset:
type: integer
index:
type: integer
expected:
description: What the rule required.
actual:
description: What the input had.
versions:
type: object
description: Every semantic dependency of this answer (engine, tables and their as-of dates, tokenizer, calendar, rounding profile).
limits:
type: array
items:
type: string
deterministic:
type: boolean
description: 'Always true: pure code, no model.'
_provenance:
type: object
description: C2PA-aligned manifest and W3C VC 2.0 (eddsa-jcs-2022) issued by the hub DID; verify at POST /api/v1/verify-provenance
required:
- data
- _provenance
'400':
description: Invalid request (no payment consumed)
content:
application/json:
schema:
type: object
properties:
error:
type: string
code:
type: string
'401':
description: Invalid X-API-KEY
content:
application/json:
schema:
type: object
properties:
error:
type: string
code:
type: string
'402':
description: Payment required or invalid
content:
application/json:
schema:
type: object
description: x402 v2 PaymentRequired (also base64 in the PAYMENT-REQUIRED header)
properties:
x402Version:
type: integer
error:
type: string
code:
type: string
resource:
type: object
accepts:
type: array
items:
type: object
extensions:
type: object
'502':
description: Upstream failure; the payment is released or not settled
content:
application/json:
schema:
type: object
properties:
error:
type: string
code:
type: string
tags:
- Carton Fit
components:
securitySchemes:
x402:
type: apiKey
in: header
name: PAYMENT-SIGNATURE
description: x402 v2 payment payload (base64) sent after a 402 challenge
apiKey:
type: apiKey
in: header
name: X-API-KEY