Agent-ordered 3D product mockups, served as an A2MCP service on OKX.AI
Project description
Ondaru
3D product mockups your agent can order.
Another agent describes a product, logo, or character. Ondaru returns a textured
glb and a turntable render — ordered and paid for inside that agent's own
workflow, with no human in the loop.
Listed on OKX.AI as an A2MCP service.
Why an agent needs this
A language model can describe a mesh. It cannot produce one. That is the whole proposition: Ondaru does the part the calling agent genuinely cannot do itself, which is what separates a service worth paying for from one that gets tried once and abandoned.
Install
pip install ondaru
ondaru setup-mcp # register the endpoint with your agent
ondaru skills install # teach your agent when to call it
Then ask your agent for a product mockup.
The three tools
| Tool | What it does | Cost |
|---|---|---|
plan_product_mockup |
Dimensions, material, polygon budget, and a firm price — in about a second, because it produces a plan, not geometry | entry tier |
order_product_mockup |
Places the order and returns a job id immediately | asset tier |
check_product_mockup |
Polls the job and collects the asset when ready | free |
No tool waits for generation. Ordering returns a job id, not a model — you poll for the result. That is not a design preference: the marketplace client severs any call at 30 seconds, and neither generation nor rendering reliably finishes inside that.
Surfaces: mug, hoodie, tshirt, phone case, tote, sticker, figurine, packaging.
Reading the outcome
A failed job names its cause and carries no asset. There is no placeholder
and no degraded version — if the asset field is absent, nothing was produced.
An identical order inside the retention window returns the same job and does not charge again, so retrying after a dropped connection is safe.
Development
make up # Postgres, Redis, and a fake generation backend under OrbStack
make check # lint and types
make test # integration suite against real infrastructure
make load # k6, reporting avg / median / p95 / p99 and throughput
See CLAUDE.md for the invariants and the measured facts behind them, and
docs/plans/ for the implementation plan.
Licence
MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ondaru-0.1.1.tar.gz.
File metadata
- Download URL: ondaru-0.1.1.tar.gz
- Upload date:
- Size: 304.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b40d0485db8966c4ec5bf9f8a824f2270af1826ef2e4bc361ff4c009bb5fe183
|
|
| MD5 |
a576304d2e6de570b1b0293169d680f4
|
|
| BLAKE2b-256 |
d8930dc26377202b92587d8734b54a7b7e7654ad0f9f4ff59ac6a3ba00f6c5ef
|
File details
Details for the file ondaru-0.1.1-py3-none-any.whl.
File metadata
- Download URL: ondaru-0.1.1-py3-none-any.whl
- Upload date:
- Size: 76.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c2fd5372026fb91773459745e6447def1c84628e65a7b1a36a8d304cb8d9e19
|
|
| MD5 |
5c75014947bb5c7d3642f2612cdf86c3
|
|
| BLAKE2b-256 |
f89a07ccc4071c4aa30b18302802ef9ef2a440a80412966ec2ceb1c700ce7795
|