DevShipIt home

DevShipIt for developers and AI agents

A public JSON API with an OpenAPI 3.1 document, a command-line tool, an MCP server, llms.txt, and Markdown for every page. No sign-in, read-only.

DevShipIt API

A read-only JSON API at https://devshipit.com/api/v1 with the same facts as the site. It needs no key, sends Access-Control-Allow-Origin: *, and is described by an OpenAPI 3.1 document at /openapi.json, where every operation has an operationId, typed parameters and response schemas. The API catalog is at /.well-known/api-catalog (RFC 9727).

curl https://devshipit.com/api/v1/projects/jantahr

EndpointoperationIdReturns
GET /api/v1/getApiIndexAPI name, version and every endpoint
GET /api/v1/profilegetProfileWho Dev is, his stack and what he is open to
GET /api/v1/projectslistProjectsJantaHR, RentWise, linkedin-mcp and ISP Evidence
GET /api/v1/projects/{slug}getProjectOne project, for example jantahr
GET /api/v1/serviceslistServicesFreelance services
GET /api/v1/faqlistFaqFrequently asked questions with answers
GET /api/v1/contactgetContactWhich email address to use
GET /api/v1/pageslistPagesEvery public page
GET /api/v1/page?path=/pricing/getPageOne page as Markdown

To use it as tools for a model with function calling, load the OpenAPI document: each operationId becomes a function name and its description says when to call it.

Errors

Every error is RFC 9457 problem details, sent as application/problem+json, with three extra members: code (stable and machine-readable), hint (what to do next) and docs. The type URI of each error opens its row below. Clients that ask for JSON also get problem details for a missing page or file anywhere on the site.

{"type": "https://devshipit.com/developers/#error-project_not_found", "title": "Project not found", "status": 404, "detail": "There is no project "x". Valid slugs: jantahr, rentwise, linkedin-mcp, isp-evidence.", "code": "project_not_found", "hint": "Call GET /api/v1/projects for the valid slugs.", "instance": "/api/v1/projects/x"}

codeStatusMeaningWhat to do
not_found404No endpoint, page or file at that path.List what exists with GET /api/v1/ or read /openapi.json.
project_not_found404No project with that slug.Call GET /api/v1/projects for the valid slugs.
page_not_found404No public page at that path.Call GET /api/v1/pages for the valid paths.
missing_parameter400A required query parameter is missing.Add it and retry, for example ?path=/pricing/.
invalid_parameter400A parameter has the wrong format.Check the format in the OpenAPI document.
method_not_allowed405The API is read-only.Use GET or HEAD.
not_acceptable406A page was asked for as JSON.Use /api/v1/page?path=..., or ask for text/html or text/markdown.
unavailable503The site data could not be loaded.Retry after the Retry-After header.

Command-line tool

The devshipit CLI reads the API from a terminal. It needs Node.js 20 or newer and has no dependencies.

npx github:devag7/devshipit projects

  • devshipit profile, devshipit projects, devshipit project jantahr
  • devshipit services, devshipit faq, devshipit contact
  • devshipit pages and devshipit page /pricing/ to print a page as Markdown
  • Add --json to any command for raw JSON. Errors exit with code 1 and print the API's code and hint.

Source: github.com/devag7/devshipit/tree/main/cli.

MCP server

A public, read-only Model Context Protocol server runs at https://devshipit.com/mcp over Streamable HTTP. It needs no sign-in and does not store anything you send.

  • get_profile: who Dev is, what he works with and what he is looking for
  • list_projects: JantaHR, RentWise, linkedin-mcp and ISP Evidence with their status and links
  • list_services and get_faq: freelance services and answers to common questions
  • list_pages and get_page: every public page as Markdown
  • get_contact: which email address to use for hiring, freelance work or JantaHR

Add it to Claude Code with claude mcp add --transport http devshipit https://devshipit.com/mcp, or to any client that accepts a remote server URL. The discovery document is at /.well-known/mcp/server-card.json.

Read any page as Markdown

Send Accept: text/markdown with a request for any page and you get Markdown instead of HTML, with Vary: Accept on both. You can also open the Markdown file directly by adding index.md to a page URL, for example /pricing/index.md.

curl -H "Accept: text/markdown" https://devshipit.com/

llms.txt

/llms.txt describes the site, says when an agent should use it and lists every page. /llms-full.txt holds the full text of every page in one file.

Published developer tools

Questions

Email hello@devshipit.com.

Tell me what you're building.

A few lines is plenty. I read every message myself.

Topic:

Opens your email app with this message ready to send.