Developers

Built to be used by agents.

We tell clients their AI is only as good as the data foundation underneath it, so our own site practises what we preach: everything on shipshapedata.com is reachable programmatically. The whole surface is read-only and needs no authentication. Full details for agents are in agents.md; the auth story (there is none to configure) is in auth.md.

Quickstart

The API lives at https://shipshapedata.com/api/v1 and describes itself:

curl https://shipshapedata.com/api/v1 # Search the 169-guide library curl "https://shipshapedata.com/api/v1/resources?q=data+lineage&limit=3" # Run the AI readiness assessment: get questions, then score answers curl https://shipshapedata.com/api/v1/ai-readiness/questions curl -X POST https://shipshapedata.com/api/v1/ai-readiness/score \ -H "Content-Type: application/json" \ -d '{"answers": [3,2,1,3,2,3,2,3,3,2,2,3,3,3,4,3]}'

The machine-readable spec is at /openapi.json (OpenAPI 3.1, clean operationIds, works as function-calling definitions as-is).

Endpoints

EndpointWhat it returns
GET /api/v1/servicesThe 13 services, with descriptions and page URLs
GET /api/v1/services/{slug}One service
GET /api/v1/industriesThe 6 industry pages
GET /api/v1/case-studiesThree case studies with real outcomes
GET /api/v1/resources?q=&category=&limit=Search the guides library
GET /api/v1/resources/categoriesThe seven categories with counts
GET /api/v1/ai-readiness/questionsThe 16-question assessment
POST /api/v1/ai-readiness/scoreStateless scoring: 0–100, band, per-area advice
POST /api/v1/batchUp to 20 GET paths in one round trip
GET /api/v1/exportThe whole dataset in one call (free OAuth token; see auth.md)
GET /api/v1/contactHow to reach the team

Errors are always JSON with an error.code, error.message, and a docs link, including 404s and 405s under /api. Every response carries draft RateLimit headers (fair use is 300 requests a minute per IP; beyond that you get a JSON 429 with Retry-After). Because every endpoint is stateless, requests are idempotent by construction: send an Idempotency-Key header (a formal parameter in the spec) and it is echoed back with Idempotency-Status. Resource search pages with an opaque cursor: follow nextCursor until it is null.

Versioning and deprecation

The API version lives in the URL: everything today is /v1, and breaking changes only ever ship as a new versioned path. When a version is deprecated it keeps working for at least six months, and its responses carry Deprecation and Sunset headers for that final period so clients and agents get machine-readable notice. Nothing is deprecated today, and additive changes (new endpoints, new optional fields) land in /v1 without ceremony.

MCP servers

Two Streamable HTTP servers, both keyless and read-only:

ServerEndpointTools
Producthttps://shipshapedata.com/mcplist_services, get_case_studies, search_resources, get_ai_readiness_questions, score_ai_readiness, get_contact_info
Docshttps://shipshapedata.com/mcp/docssearch_docs, get_page (full markdown of any page), list_sections

Connect from Claude Code:

claude mcp add --transport http shipshape-data https://shipshapedata.com/mcp claude mcp add --transport http shipshape-data-docs https://shipshapedata.com/mcp/docs

Or in any client that takes a JSON server config:

{ "mcpServers": { "shipshape-data": { "type": "http", "url": "https://shipshapedata.com/mcp" }, "shipshape-data-docs": { "type": "http", "url": "https://shipshapedata.com/mcp/docs" } } }

The server card is at /.well-known/mcp/server-card.json. Both servers are published in the official MCP registry as com.shipshapedata/shipshape-data and com.shipshapedata/shipshape-data-docs.

Skills, configs, and source

The official agent toolkit lives at github.com/shipshapedata/agent-tools: agent skills (install with npx skills add shipshapedata/agent-tools, listed on skills.sh), drop-in MCP configs for Claude Code and Cursor, a Claude Code plugin manifest, and the source of the CLI and SDK packages.

CLI and SDKs

shipshape-data is published on npm and PyPI: zero-dependency SDKs for Node and Python, each with a CLI that runs the whole surface from a terminal, including the AI readiness assessment.

# Node (no install needed) npx shipshape-data readiness npx shipshape-data search data lineage # Python pip install shipshape-data shipshape readiness shipshape score 3,2,1,3,2,3,2,3,3,2,2,3,3,3,4,3

Read the site as markdown

Every content page has a markdown twin at its URL plus index.md, and the same twin is served at ?mode=agent:

curl https://shipshapedata.com/services/ai-strategy/index.md curl "https://shipshapedata.com/case-studies/1nce/?mode=agent"

Start from /llms.txt (the site guide, under 8k characters) or the section indexes it links.

Discovery files

/openapi.jsonOpenAPI 3.1 spec for the API
/.well-known/ard.jsonAgent readiness descriptor: every agent-facing surface
/.well-known/mcp/server-card.jsonMCP server card (product; docs card sits beside it)
/.well-known/agent-card.jsonA2A agent card; message/send to /a2a for answers with sources
/askNLWeb endpoint: POST {"query": "..."}, SSE with streaming=true
/.well-known/api-catalogRFC 9727 API catalog
/agents.mdThe agent guide
/auth.mdAuth: keyless reads; free self-serve OAuth for the bulk export
/.well-known/oauth-authorization-serverRFC 8414 authorization server metadata
/.well-known/oauth-protected-resourceRFC 9728 protected resource metadata
/schemamap.xmlNLWeb schema feed of key pages

No writes, by design. The API and MCP servers read public content and score assessments statelessly; nothing stores data. To reach the team, email hello@shipshapedata.com.

Sandbox

A sandbox environment lives at https://shipshapedata.com/api/sandbox/v1. Because every endpoint is stateless and side-effect free, the sandbox serves identical endpoints and data to production; it exists so test configurations have an explicit base URL, and its responses carry X-Sandbox: true. Point anything at it, as often as is reasonable, without consequences.

Want this for your own product?

This page is the deliverable we build for clients: governed data underneath, then MCP connections and APIs that let models reach it safely. If you want your product to be this easy for agents to use, talk to us.