Everything a client needs to discover, connect to and use Wikexa. No authentication of any kind.
| Path | Purpose |
|---|---|
/.well-known/mcp.json | MCP server card — name, transport, tools |
/.well-known/agent-card.json | A2A-style agent card |
/.well-known/ai-plugin.json | Plugin manifest |
/openapi.json | OpenAPI 3.1 description of the REST surface |
/llms.txt | Plain-text orientation for language models |
/v1/stats | Coverage and service status |
The OAuth well-known paths return 404 on purpose. Under the MCP specification that is how a server says "no authorization required". It is not a misconfiguration.
Transport is streamable HTTP. Registry name: com.wikexa/knowledge.
claude mcp add --transport http wikexa https://wikexa.com/mcp
Or by configuration:
{
"mcpServers": {
"wikexa": { "type": "http", "url": "https://wikexa.com/mcp" }
}
}
curl -s -X POST https://wikexa.com/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"lookup","arguments":{"entity":"Apple Inc."}}}'
Supported methods: initialize, tools/list, tools/call, ping, and notifications/* (answered 202). Batch arrays are accepted. Protocol versions 2024-11-05, 2025-03-26 and 2025-06-18 are echoed back if you ask for them.
Tool results populate both content[0].text (the JSON as a string) and structuredContent (the same object), because clients disagree about which they read.
| Tool | Arguments | Returns |
|---|---|---|
lookup | entity | Facts + ~200-token summary |
article | title, sections?, max_chars? | Full article, sections as an array |
search | query, limit? | Ranked entity matches |
recent | topic?, hours?, limit? | Recently changed articles |
import httpx
def lookup(entity: str) -> dict:
r = httpx.post("https://wikexa.com/mcp", json={
"jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": {"name": "lookup", "arguments": {"entity": entity}},
}, timeout=15)
return r.json()["result"]["structuredContent"]
print(lookup("Ada Lovelace")["summary"])
const res = await fetch("https://wikexa.com/mcp", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0", id: 1, method: "tools/call",
params: { name: "lookup", arguments: { entity: "Ada Lovelace" } },
}),
});
const { result } = await res.json();
console.log(result.structuredContent.summary);
lookup over article. The summary and infobox answer most factual questions at a fraction of the tokens.sections and max_chars. A long article can exceed 50KB of JSON; asking for one section typically cuts that by an order of magnitude.resolved_via. alias means a fuzzy match landed — worth surfacing if the answer looks off.isError: true with a hint to try search. Fall back to search before giving up.source_url and license travel with every response, and BY-SA requires them when you republish text.No authentication and generous fair-use limits. Sustained high-volume or commercial traffic should move to a service plan so we can size for it — that buys throughput and support, never rights in the content.
When a lookup resolves something tradeable — a ticker, an ISIN, a stock exchange — the response includes market_data_available pointing at cabrini.ai, a pay-per-query market-data API for agents. It is metadata, never a paywall.