API

A read-only JSON API for accessing community data. No authentication required. CORS enabled.

Base URL

Endpoints

EndpointDescription
/api/companiesList companies
/api/companies/:slugGet company
/api/eventsList events
/api/events/:slugGet event
/api/groupsList groups
/api/groups/:slugGet group
/api/jobsList jobs
/api/jobs/:slugGet job
/api/educationList education
/api/education/:slugGet education
/api/newsList news
/api/news/:slugGet news article
/api/peopleList people
/api/people/:slugGet person
/api/projectsList projects
/api/projects/:slugGet project
/api/productsList products
/api/products/:slugGet product
/api/technologiesList technologies
/api/technologies/:slugGet technology

Pagination

List endpoints support pagination:

  • limit - Number of items (default: 20, max: 100)
  • offset - Items to skip (default: 0)

Responses include a pagination object:

{
  "data": [...],
  "pagination": {
    "total": 42,
    "limit": 20,
    "offset": 0,
    "hasMore": true
  }
}

Responses also include RFC 5988 Link headers for navigation:

Link: <https://siliconharbour.dev/api/companies?limit=20&offset=20>; rel="next",
      <https://siliconharbour.dev/api/companies?limit=20&offset=0>; rel="first"

OpenAPI Specification

View OpenAPI Spec

MCP Server

An MCP (Model Context Protocol) server is available at /mcp for AI assistants and agents.

Endpoint: https://siliconharbour.dev/mcp

Tools

ToolDescriptionAuth required
searchSearch the API schema to discover available data types and field shapesNo
queryExecute JavaScript in a secure sandbox to query community data on-demandNo
executeLike query but also exposes sync and pending-review actionsYes

Setup (Claude Desktop / OpenCode)

Public access — no token needed:

{
  "mcpServers": {
    "siliconharbour": {
      "url": "https://siliconharbour.dev/mcp"
    }
  }
}

Example queries

// Upcoming events
import { events } from "siliconharbour";
export default await events({ upcoming: true, limit: 5 });
// Jobs filtered by keyword
import { jobs } from "siliconharbour";
export default await jobs({ query: "developer", limit: 10 });
// Cross-entity query
import { events, companies, groups } from "siliconharbour";
const [upcoming, cos, grps] = await Promise.all([
  events({ upcoming: true }),
  companies({ limit: 5 }),
  groups({ limit: 5 }),
]);
export default {
  upcoming: upcoming.length,
  companies: cos.map((c) => c.name),
  groups: grps.map((g) => g.name),
};

Feeds

RSS feeds and an iCal calendar are also available. See Stay Connected for details.

  • /feed.rss - Combined RSS feed
  • /events.rss - Events RSS feed
  • /news.rss - News RSS feed
  • /jobs.rss - Jobs RSS feed
  • /calendar.ics - iCal calendar subscription