Developer API

The MenFem API — curated knowledge, programmable.

Access MenFem's editorial content, product reviews, company intelligence, and marketplace data through a simple REST API.

A machined aluminium block with a row of copper contact pins, a brushed-steel key beside it.
For AI agents

Model Context Protocol

MenFem runs an MCP server, so Claude Desktop, Cursor, and any MCP client can read our research natively — no glue code. Anonymous callers get the public tools below; a key with the mcp:connect scope unlocks the full surface. Agents discovering the site programmatically should start at /llms.txt.

CLI

npx menfem prices

The official CLI — token prices, spreads, claim checks, search, and the call record in your terminal, no key required. npx menfem mcp bridges stdio MCP clients to the server below. github.com/menfem/menfem-cli

Endpoint

https://menfem.com/api/mcp/menfem

JSON-RPC 2.0 over HTTP POST. Send a GET to the same URL for a live manifest of the tools your key can see.

discover (GET)
curl https://menfem.com/api/mcp/menfem
call a tool (POST)
curl -X POST https://menfem.com/api/mcp/menfem \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0", "id": 1, "method": "tools/call",
    "params": { "name": "findArticles",
      "arguments": { "query": "nvidia", "limit": 3 } }
  }'
claude_desktop_config.json
{
  "mcpServers": {
    "menfem": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote", "https://menfem.com/api/mcp/menfem",
        "--header", "Authorization: Bearer pk_live_your_key_here"
      ]
    }
  }
}

Public tools (no auth)

  • findArticles — search published articles
  • findCompanies — search the company database
  • getRecentMarketCalls — latest directional calls
  • getInsightManifesto — the 16-pillar worldview
  • getTokenPrices — per-model list prices from a dated table, not a live index (fully open)
  • getPriceSpreads — open/closed spreads by tier and workload profile, same dated table (fully open)
  • getPriceHistory — RETIRED 2026-08-21; returns an error naming the replacement
  • searchKb — search Knowledge Base concepts and entities (fully open)
  • listStack · getStackLayer — the AI-infra bottleneck layers and their constraint numbers
  • getBeatIndex — a beat’s weekly curve and top/bottom movers
  • getCompanyEvents — a company’s typed event log
  • getPrintBaseRate — a ticker’s earnings-print base rate
  • getSeries — a named collector series, dated and cron-written
  • getHardwarePrices — the latest cron-written hardware price record

With a key (mcp:connect + scopes)

  • searchSemantic — vector search across the corpus
  • getCompanyDossier — full profile + linked articles & calls
  • getTrackRecord · listReceipts — scored, resolved calls
  • getMarketCallBySlug — a single thesis + resolution
  • findJobs · listExchangeListings
  • getKbConcept — knowledge-base concept pages

Request a partner key at /developers/keys.

Getting started

Base URL

https://menfem.com/api/v1

Authentication

All requests require a Bearer token in the Authorization header.

Authorization: Bearer pk_live_your_key_here

Contact [email protected] to request API access.

Rate limits

TierLimitPrice
Free100 requests/hourFree
Standard1,000 requests/hourContact us
Premium10,000 requests/hourContact us

Response format

List response

{
  "data": [...],
  "meta": {
    "page": 1,
    "limit": 10,
    "total": 142,
    "totalPages": 15,
    "hasNext": true,
    "hasPrev": false
  }
}

Error response

{
  "error": {
    "code": "NOT_FOUND",
    "message": "Article not found: xyz"
  }
}

Quick start

curl
curl -H "Authorization: Bearer pk_live_your_key_here" \
  "https://menfem.com/api/v1/articles?limit=5"
javascript
const response = await fetch('https://menfem.com/api/v1/articles?limit=5', {
  headers: { 'Authorization': 'Bearer pk_live_your_key_here' }
});
const { data, meta } = await response.json();
console.log(`${meta.total} articles found`);
python
import requests

response = requests.get(
    'https://menfem.com/api/v1/articles',
    headers={'Authorization': 'Bearer pk_live_your_key_here'},
    params={'limit': 5}
)
data = response.json()
print(f"{data['meta']['total']} articles found")

Tables — restaurant reservations

Browse restaurants, available reservations, and demand signals from the P2P reservation marketplace. Write endpoints (POST) require Standard or Premium tier.

Example — Browse London restaurants
curl -H "Authorization: Bearer pk_live_..." \
  "https://menfem.com/api/v1/tables/restaurants?city=London&cuisine=JAPANESE"
Example — Available reservations
curl -H "Authorization: Bearer pk_live_..." \
  "https://menfem.com/api/v1/tables/listings?city=London&sort=soonest&verified=true"

Read endpoints (all tiers)

  • GET /tables/restaurants
  • GET /tables/restaurants/:slug
  • GET /tables/listings
  • GET /tables/listings/:id
  • GET /tables/requests
  • GET /tables/stats
  • GET /tables/search

Write endpoints (restricted)

  • POST /tables/listings (Premium)
  • POST /tables/requests (Standard+)

Confirmation codes are never exposed via the API — only revealed to authenticated buyers on the web after purchase.

API reference

MenFem API — Developer Portal, Docs & MCP Server