Dpdf vs Nutrient
Nutrient scores higher on the AgentReady, 53/100 against 42/100. They differ on 13 of the 41 signals. Which ones decides whether an agent can adopt them without a person watching.
What each one is
Dpdf. DynamicPDF API is a suite of cloud-based tools for creating and manipulating PDF documents, offering an online designer, REST APIs, and client libraries for generating professional PDFs.
Nutrient. Nutrient is the deterministic document infrastructure enterprises run their highest-stakes workflows on: replayable output, clear exceptions, and full audit trails on the messy, regulated documents where AI alone breaks.
Where Dpdf is ahead
Dpdf passes authentication documented, and Nutrient does not. That is understand, whether an agent can read the docs and work out how the API behaves before calling it.
It also holds adopt: self-service signup, no mandatory sales call, fast time to first request and copyable quickstart. Nutrient misses those.
Where Nutrient is ahead
Nutrient passes llms.txt published, llms-full.txt / full agent docs and mcp discoverable, and Dpdf does not. That is discover, whether an agent can find the product at all without being told it exists.
It also holds understand: structured api reference. Dpdf misses it.
And on adopt, official typescript sdk, official python sdk and mcp integration available. Dpdf misses those.
Finally, on operate, observable execution. Dpdf misses it.
What neither does
Both fail openapi / spec quality, request examples provided, response examples provided, errors and status codes documented, limits / constraints documented, agent-compatible signup flow, programmatic credential creation, cli available, structured, predictable output, machine-readable errors, retry behavior documented, idempotency support, rate-limit behavior predictable, agent compatibility verified. If your agent needs any of those, you will be building it yourself either way.
Score, pillar by pillar
The AgentReady splits into four pillars, scored separately, because a product can be easy to find and still impossible to adopt.
Discover is whether an agent can find the product at all without being told it exists. Nutrient leads 100 to 73. Dpdf misses llms.txt published, llms-full.txt / full agent docs, mcp discoverable; Nutrient misses nothing.
Understand. Nutrient leads 38 to 31. Dpdf misses structured api reference, openapi / spec quality, request examples provided, response examples provided, errors and status codes documented, limits / constraints documented; Nutrient misses openapi / spec quality, authentication documented, request examples provided, response examples provided, errors and status codes documented, limits / constraints documented.
Adopt. Both sit at 40/100 here. Dpdf misses agent-compatible signup flow, programmatic credential creation, official typescript sdk, official python sdk, cli available, mcp integration available; Nutrient misses self-service signup, no mandatory sales call, agent-compatible signup flow, programmatic credential creation, fast time to first request, copyable quickstart, cli available.
Operate. Nutrient leads 35 to 24. Dpdf misses structured, predictable output, machine-readable errors, retry behavior documented, idempotency support, rate-limit behavior predictable, observable execution, agent compatibility verified; Nutrient misses structured, predictable output, machine-readable errors, retry behavior documented, idempotency support, rate-limit behavior predictable, agent compatibility verified.
Pricing
Dpdf does not publish a machine-readable starting price and has a free tier. Nutrient does not publish one with no free tier.
Signal by signal
| Signal | Dpdf | Nutrient |
|---|---|---|
| AgentReady | 42 | 53 |
| Discovery | 73 | 100 |
| Understanding | 31 | 38 |
| Adoption | 40 | 40 |
| Operability | 24 | 35 |
| Public API | Yes | Yes |
| MCP server | Unknown | Yes |
| OpenAPI spec | Unknown | Yes |
| CLI | Unknown | Unknown |
| llms.txt | Unknown | Yes |
| Self-serve signup | Yes | No |
| Free tier | Yes | No |
Which to pick
Nutrient clears more of the signals an agent needs, so it is the safer default for unattended use. Full profiles: Dpdf and Nutrient. Alternatives to each: Dpdf, Nutrient.
An agent can fetch this as data: POST /v1/compare {"slugs": ["dpdf", "nutrient"]}