Autopoietic Knowledge Synthesis MCP Server
About
Autopoietic knowledge synthesis gives AI agents access to 18 academic and technical data sources unified by a suite of advanced mathematical frameworks — stochastic block model community detection, Turing instability, Smith normal form Betti numbers, formal concept analysis, Fish
Details
- Author
- apifyforge
- Downloads
- 115
- Categories
- Knowledge Base
Jump to
- 18 parallel actor calls to academic and technical data sources
- Smith normal form Betti numbers for topological analysis
- Formal concept analysis with Fisher information gradient descent
- Granger causality and FCI causal inference for knowledge transfer
- Alpha-connection novelty scoring (INCREMENTAL to BREAKTHROUGH)
- Seeded PRNG for reproducibility with same queries
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Autopoietic Knowledge Synthesis MCP ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Add the server URL to your MCP client configuration (e.g., Claude Desktop) under mcpServers. Then instruct your AI agent to call a specific tool with a natural-language query. The server runs 18 data sources in parallel and returns structured JSON.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"autopoietic knowledge synthesis mcp server": {
"autopoietic-knowledge-synthesis-mcp": {
"url": "https://ryanclinton--autopoietic-knowledge-synthesis-mcp.apify.actor/mcp"
}
}
}
}
McpServers
{
"autopoietic-knowledge-synthesis-mcp": {
"url": "https://ryanclinton--autopoietic-knowledge-synthesis-mcp.apify.actor/mcp"
}
}
Autopoietic Knowledge Synthesis MCP Server
> View on ApifyForge | Use on Apify Store
---
Quick Start
Add to your MCP client (Claude Desktop, Cursor, Windsurf):
{
"mcpServers": {
"autopoietic-knowledge-synthesis-mcp": {
"url": "https://ryanclinton--autopoietic-knowledge-synthesis-mcp.apify.actor/mcp"
}
}
}
---
Autopoietic knowledge synthesis gives AI agents access to 18 academic and technical data sources unified by a suite of advanced mathematical frameworks — stochastic block model community detection, Turing instability, Smith normal form Betti numbers, formal concept analysis, Fisher information geometry, zigzag persistence, Granger causality, and alpha-connection novelty scoring. It is built for research teams, AI developers, and knowledge engineers who need deep structural analysis of scientific literature, patent landscapes, and community knowledge. The result is not keyword search — it is topological, causal, and information-geometric analysis of how knowledge actually grows and where it has gaps.
Connect this MCP server to Claude, Cursor, or any MCP-compatible AI agent. The server runs 18 data-source actors in parallel, assembles a knowledge graph from the combined results, and applies each mathematical framework before returning structured JSON. One tool call surfaces research fronts, identifies breakthrough probability, or maps knowledge transfer pathways across academia, patents, code, and clinical practice — analysis that would take weeks of manual literature review to approximate.
⬇️ What data can you extract?
| Data Point | Source | Coverage |
|---|---|---|
| 📄 Academic publications | OpenAlex | 250M+ works, full metadata |
| 🔬 Biomedical literature | PubMed / Europe PMC | 35M+ and 40M+ articles |
| 💻 Computer science papers | Semantic Scholar + DBLP | 200M+ and 6M+ publications |
| 📐 Preprints | arXiv | 2M+ preprints across STEM |
| 📑 Cross-publisher metadata | Crossref | 130M+ registered works |
| 🔓 Open access full text | CORE | 200M+ papers |
| 🧑🔬 Researcher identities | ORCID | 15M+ researchers with affiliations |
| 💰 NIH-funded grants | NIH Reporter | All active and historical NIH awards |
| 🔧 Open source code | GitHub Repo Search | All public repositories |
| 🧪 Clinical research | ClinicalTrials.gov | All registered trials worldwide |
| 🏭 US patents | USPTO PatentsView | Full US patent corpus |
| 🌍 European patents | EPO Open Patent Services | European patent corpus |
| 💬 Technical discussions | StackExchange | 170+ technical communities |
| 📰 Tech community signals | Hacker News | Community interest and discussion trends |
| 📊 Federal datasets | Data.gov | US government open data |
| 🔗 Citation topology | Computed across all sources | Betti numbers, persistence diagrams |
| 🌐 Knowledge transfer paths | Cross-source Granger causality | Patents → Papers → Code → Trials |
| 🎯 Novelty scores | Information-geometric divergence | INCREMENTAL / MODERATE / SIGNIFICANT / BREAKTHROUGH |
Why use Autopoietic Knowledge Synthesis MCP Server?
Traditional literature search returns a ranked list of papers. That is useful but fundamentally limited — it cannot tell you which areas are approaching a breakthrough, which researchers bridge isolated communities, or where conceptual holes exist in a field's structure. Manual synthesis across 18 sources covering patents, biomedical literature, preprints, code, clinical trials, and government datasets takes weeks. Tools like Elicit, Consensus, or Semantic Scholar's own search work on single-database retrieval without cross-source structural analysis.
This MCP server automates the entire cross-source knowledge graph assembly and then applies nine rigorous mathematical frameworks to answer strategic questions: where is knowledge growing fastest, where are the gaps, and who controls the intellectual territory.
- Scheduling — trigger research monitoring runs daily or weekly to track evolving fields
- API access — call from Python, JavaScript, or any HTTP client with a single MCP request
- Proxy rotation — 18 actors run in parallel via Apify's infrastructure without rate-limit issues
- Monitoring — receive Slack or email alerts when actor runs fail or produce unexpected results
- Integrations — pipe results into Zapier, Make, Google Sheets, or any webhook target
Features
- 18 parallel actor calls — OpenAlex, PubMed, Semantic Scholar, arXiv, Crossref, CORE, ORCID, NIH Grants, DBLP, Europe PMC, USPTO, EPO, Wikipedia, GitHub, StackExchange, ClinicalTrials.gov, Data.gov, and Hacker News all queried simultaneously via runActorsParallel
- Smith normal form Betti numbers — integer matrix reduction computes Betti_0 (connected components), Betti_1 (citation cycles), and Betti_2 (knowledge voids) of the citation simplicial complex
- Formal concept analysis — binary object-attribute context matrices are reduced to concept lattices; each generation expands or prunes formal concepts using Fisher information gradient descent
- Fisher information geometry — natural gradient updates on the statistical manifold of ontologies: dtheta/dt = -g^{ij}(theta) dL/dtheta^j, with information gain measured via KL divergence between generations
- Zigzag persistence — birth/death pairs of topological features tracked across time-varying knowledge graph snapshots, producing persistence diagrams with dimensional labels
- Turing instability detection — reaction-diffusion system du/dt = f(u,v) + D_u Laplacian(u) applied to the knowledge graph; diffusion-driven instability (D_vf_u + D_ug_v > 0) identifies areas approaching spontaneous breakthrough
- Stochastic block model community detection — EM inference assigns researchers to latent communities via P(A_ij=1) = B(z_i, z_j); identifies bridge researchers with high betweenness centrality crossing community boundaries
- Granger causality knowledge transfer — VAR model X_t = Sum(A_k X_{t-k}) + epsilon with F-test determines whether patent publication time series Granger-causes academic publication series and vice versa
- FCI causal inference — Fast Causal Inference algorithm applies conditional independence tests to recover the causal skeleton of the knowledge graph, distinguishing association from directed causal flow
- Alpha-connection novelty scoring — information-geometric divergence D_alpha(p||q) = (4/(1-alpha^2)) (1 - sum(p^((1+alpha)/2) * q^((1-alpha)/2))) scores each paper against the field distribution; papers classified as INCREMENTAL, MODERATE, SIGNIFICANT, or BREAKTHROUGH
- Seeded PRNG for reproducibility — Mulberry32 PRNG initialized from content hashes ensures deterministic outputs for the same query across runs
- Euler characteristic computation — topological invariant chi = V - E + F derived from the simplicial complex alongside Betti numbers for full topological profiling
- 8 registered MCP tools — each tool exposes a distinct analysis with typed Zod input schemas and structured JSON output
- Standby mode operation — server runs persistently on Apify's infrastructure; no cold-start latency after first connection
Use cases for autopoietic knowledge synthesis
Research strategy and grant positioning
Research directors and PIs planning multi-year programs need to know where a field is heading before writing grant applications. The discover_research_fronts tool identifies emerging clusters with high alpha-novelty divergence and Turing-unstable dynamics — areas where the knowledge system is approaching spontaneous reorganization. The predict_breakthrough_areas tool ranks fields by breakthrough probability using reaction-diffusion instability analysis across 18 sources, including NIH grant trends and patent filing velocity. A team can identify high-probability breakthrough corridors and align grant proposals accordingly, rather than competing in already-saturated subfields.
Systematic literature review and meta-analysis
Researchers conducting systematic reviews typically spend weeks searching individual databases. The analyze_citation_topology tool pulls from 10 academic sources simultaneously and computes the full topological structure of the citation network — Betti numbers, persistence diagrams, and zigzag features — revealing which topics are well-integrated (low Betti_1) and which are fragmented into isolated clusters (high Betti_0). The detect_knowledge_gaps tool identifies specific sub-topics with high topological hole counts where synthesizing work would have outsized impact.
Competitive intelligence for R&D teams
Corporate R&D teams at pharma, materials science, and technology companies need to understand where competitors are filing patents, which academic work is being commercialized first, and which university labs are working on adjacent problems. The trace_knowledge_transfer tool applies Granger causality and FCI causal inference to track how knowledge flows from academic papers into patents and then into clinical trials or product development. It identifies the lag structure: whether patents lead papers in a given field, or vice versa, and which institutions drive that transfer.
Collaboration network analysis and talent identification
Hiring managers and research program officers need to identify key researchers in emerging areas — not just prolific authors, but bridge scientists who connect disparate communities. The assess_researcher_influence tool applies stochastic block model community detection across co-authorship networks from ORCID, OpenAlex, and DBLP, computes PageRank and betweenness centrality, assigns researchers to latent communities, and identifies those with high betweenness who serve as intellectual bridges. The h-index computation provides a standardized impact baseline alongside the network metrics.
AI training data curation and research novelty filtering
AI teams building domain-specific models need to assess which papers add genuinely new concepts versus which are incremental variations. The compute_novelty_score tool scores each paper in the returned corpus on three axes: alpha-divergence from the field distribution, concept lattice novelty (new formal concepts not present in the existing lattice), and topological novelty from Betti number ratios. Papers classified as BREAKTHROUGH can be weighted more heavily in training pipelines; INCREMENTAL papers can be downweighted or excluded.
Ontology engineering and knowledge graph construction
Knowledge engineers building domain ontologies for enterprise search or AI reasoning systems need to understand how a field's conceptual vocabulary is evolving. The evolve_ontology tool runs formal concept analysis across up to 20 simulated generations, each refined by Fisher information gradient descent on the statistical manifold of ontologies. Output includes the concept lattice at each generation, information gain per generation, and convergence rate — providing a data-driven foundation for ontology versioning decisions.
How to use autopoietic knowledge synthesis with an AI agent
1. Connect the MCP server — add the server URL to your MCP client configuration. For Claude Desktop, add "url": "https://autopoietic-knowledge-synthesis-mcp.apify.actor/mcp" under mcpServers. Replace YOUR_APIFY_TOKEN with your token from Apify Console.
2. Choose a tool and set a query — instruct your AI agent to call a specific tool with a natural-language research topic. For example: "Call discover_research_fronts with query mRNA vaccine delivery mechanisms and maxResults 30."
3. Receive structured analysis — the server runs 18 data sources in parallel (typically 2-5 minutes) and returns structured JSON including graph statistics, topological metrics, ranked results, and mathematical scores.
4. Integrate the output — have your agent summarize the research fronts, export the novelty-scored papers to a spreadsheet, or pipe breakthrough predictions into a research monitoring dashboard.
Input parameters
This is an MCP server — it takes no Apify actor input. All parameters are passed per tool call via the MCP protocol.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| query | string | Yes | — | Research topic, field name, or researcher name. Passed to all 18 actors. Example: "CRISPR base editing", "transformer attention mechanisms" |
| maxResults | number | No | 30 | Maximum results to request per data source. Higher values increase coverage but also cost and runtime. Range: 5-50 |
| generations | number | No | 5 | (evolve_ontology only) Number of evolutionary generations for concept lattice refinement. Range: 1-20 |
Input examples
Discover research fronts in a specific scientific subfield:
{
"query": "mRNA lipid nanoparticle delivery",
"maxResults": 30
}
Evolve ontology with extended generations for a broad domain:
{
"query": "quantum error correction",
"maxResults": 25,
"generations": 10
}
Minimal fast query for rapid field scan:
{
"query": "diffusion models generative AI",
"maxResults": 10
}
Input tips
- Be specific in your query — "CRISPR base editing adenine" returns more focused fronts than "gene editing". The query is passed verbatim to 18 different search APIs.
- Use maxResults 10-15 for rapid prototyping — lower values reduce cost and runtime from ~5 minutes to ~2 minutes while still building a useful knowledge graph.
- For evolve_ontology, start with 5 generations — convergence typically occurs between generations 3 and 7; running 20 generations rarely changes the final lattice significantly.
- Phrase queries as noun phrases, not questions — "antibiotic resistance mechanisms" works better than "how does antibiotic resistance work" across the academic APIs.
- For researcher influence analysis, use a researcher's full name or ORCID as the query — the ORCID actor applies name disambiguation.
⬆️ Output example
{
"totalFronts": 7,
"averageNovelty": 0.74,
"topField": "mRNA lipid nanoparticle delivery",
"fronts": [
{
"id": 0,
"keywords": ["ionizable lipid", "endosomal escape", "LNP formulation", "pKa optimization"],
"papers": [
"Ionizable lipid nanoparticles for in vivo mRNA delivery",
"Endosomal escape mechanisms in lipid nanoparticle systems",
"pH-responsive LNP design for hepatic targeting"
],
"noveltyScore": 0.91,
"momentum": 0.87,
"bettiSignature": [3, 2, 1],
"turingUnstable": true,
"alphaNovelty": 0.88
},
{
"id": 1,
"keywords": ["extrahepatic delivery", "muscle targeting", "intramuscular LNP"],
"papers": [
"Organ-selective lipid nanoparticles for extrahepatic mRNA delivery",
"Skeletal muscle targeting via surface-modified LNPs"
],
"noveltyScore": 0.78,
"momentum": 0.63,
"bettiSignature": [2, 1, 0],
"turingUnstable": false,
"alphaNovelty": 0.71
}
],
"graphStats": {
"nodes": 312,
"edges": 894,
"bettiNumbers": [8, 14, 3],
"conceptCount": 47
}
}
Output fields
discover_research_fronts
| Field | Type | Description |
|---|---|---|
| totalFronts | number | Number of distinct research fronts identified by stochastic block model community detection |
| averageNovelty | number | Mean alpha-connection novelty score across all fronts (0-1) |
| topField | string | Highest-novelty research front label |
| fronts[].id | number | Community index from SBM inference |
| fronts[].keywords | string[] | Top keywords for this front, derived from keyword overlap edges |
| fronts[].papers | string[] | Representative paper titles assigned to this community |
| fronts[].noveltyScore | number | Composite novelty (alpha-divergence + topological) for this front |
| fronts[].momentum | number | Growth rate signal derived from publication recency distribution |
| fronts[].bettiSignature | number[] | [Betti_0, Betti_1, Betti_2] for the front's subgraph |
| fronts[].turingUnstable | boolean | Whether diffusion-driven instability criterion is met for this front |
| fronts[].alphaNovelty | number | Raw alpha-connection divergence score |
| graphStats.nodes | number | Total nodes in the assembled knowledge graph |
| graphStats.edges | number | Total edges (citation, co-author, keyword_overlap, semantic, patent_paper) |
| graphStats.bettiNumbers | number[] | Global Betti numbers of the full citation simplicial complex |
| graphStats.conceptCount | number | Number of formal concepts in the FCA concept lattice |
evolve_ontology
| Field | Type | Description |
|---|---|---|
| finalConceptCount | number | Number of formal concepts in the final generation lattice |
| totalInformationGain | number | Cumulative KL divergence across all generations |
| convergenceRate | number | Rate at which lattice size stabilizes across generations |
| generations[].generation | number | Generation index (0-based) |
| generations[].latticeSize | number | Number of formal concepts in this generation |
| generations[].fisherGradientNorm | number | Norm of the Fisher information gradient at this generation |
| generations[].informationGain | number | KL divergence gain from previous generation |
| generations[].convergence | number | Convergence metric (lower = more stable) |
| generations[].concepts[].name | string | Concept label |
| generations[].concepts[].extent | string[] | Papers/objects in the concept's extent |
| generations[].concepts[].intent | string[] | Attributes/keywords defining the concept |
detect_knowledge_gaps
| Field | Type | Description |
|---|---|---|
| totalGaps | number | Number of knowledge gaps identified via high Betti numbers |
| averageFillingPotential | number | Mean opportunity score for gap-filling research |
| topOpportunity | string | Field label of the highest-potential gap |
| gaps[].field | string | Research sub-area where the gap exists |
| gaps[].bettiNumber | number | Betti number indicating the topological dimension of the gap |
| gaps[].gapDimension | number | Simplicial complex dimension of the hole |
| gaps[].nearestConcepts | string[] | Formal concepts bounding the gap in the lattice |
| gaps[].fillingPotential | number | Estimated research opportunity score (0-1) |
| gaps[].turingActivity | number | Turing instability measure for this region |
analyze_citation_topology
| Field | Type | Description |
|---|---|---|
| bettiNumbers | number[] | [Betti_0, Betti_1, Betti_2] — connected components, loops, voids |
| eulerCharacteristic | number | Topological invariant chi = V - E + F |
| topologicalComplexity | number | Composite complexity measure from Betti number ratios |
| persistenceDiagram[] | object[] | Birth/death pairs with dimension for each topological feature |
| zigzagFeatures[] | object[] | Features from zigzag persistence tracking across time snapshots |
predict_breakthrough_areas
| Field | Type | Description |
|---|---|---|
| topPrediction | string | Field with highest breakthrough probability |
| averageProbability | number | Mean breakthrough probability across all scanned areas |
| systemInstability | number | Global Turing instability measure for the full knowledge graph |
| predictions[].field | string | Research area name |
| predictions[].probability | number | Estimated breakthrough probability (0-1) |
| predictions[].turingPattern | string | Pattern type detected (e.g., "TURING_SPOT", "TURING_STRIPE") |
| predictions[].reactionRate | number | Activator reaction rate in the reaction-diffusion model |
| predictions[].diffusionCoeff | number | Diffusion coefficient ratio D_v / D_u |
| predictions[].timeToBreakthrough | number | Estimated months to breakthrough based on dynamics |
| predictions[].supportingEvidence | string[] | Papers and patents supporting the prediction |
trace_knowledge_transfer
| Field | Type | Description |
|---|---|---|
| totalTransfers | number | Number of statistically significant Granger-causal transfer paths |
| strongestPath | string | Description of the highest F-statistic transfer pathway |
| averageTransferStrength | number | Mean Granger F-statistic across all paths |
| transfers[].source | string | Originating knowledge domain (e.g., "patents", "academic_papers") |
| transfers[].target | string | Receiving domain |
| transfers[].grangerFStat | number | F-statistic from VAR model |
| transfers[].pValue | number | Statistical significance of the Granger causal relationship |
| transfers[].lagOrder | number | Optimal VAR lag order (years of delay in knowledge transfer) |
| transfers[].causalDirection | string | "forward", "reverse", "bidirectional", or "none" |
assess_researcher_influence
| Field | Type | Description |
|---|---|---|
| totalCommunities | number | Number of latent communities found by SBM |
| modularity | number | Network modularity score (higher = more community structure) |
| researchers[].name | string | Researcher name |
| researchers[].orcid | string | ORCID identifier |
| researchers[].pageRank | number | PageRank centrality in the co-authorship graph |
| researchers[].betweenness | number | Betweenness centrality (bridge researchers score high) |
| researchers[].communityId | number | SBM community assignment |
| researchers[].sbmRole | string | Role label within the stochastic block model |
| researchers[].hIndex | number | Computed h-index from available citation data |
| communities[].id | number | Community index |
| communities[].members | string[] | Researcher names in this community |
| communities[].cohesion | number | Internal connectivity measure for this community |
compute_novelty_score
| Field | Type | Description |
|---|---|---|
| averageNovelty | number | Mean composite novelty across all scored papers |
| breakthroughCount | number | Number of papers classified as BREAKTHROUGH |
| fieldDistribution | object | Count of papers per novelty tier by field |
| scores[].paperId | string | Paper identifier |
| scores[].title | string | Paper title |
| scores[].alphaNovelty | number | Alpha-connection novelty from information geometry |
| scores[].alphaDivergence | number | Raw D_alpha(p\|\|q) divergence value |
| scores[].conceptNovelty | number | FCA novelty: proportion of concepts not in existing lattice |
| scores[].topologicalNovelty | number | Betti number ratio relative to field baseline |
| scores[].compositeNovelty | number | Weighted combination of all three novelty dimensions |
| scores[].tier | string | "INCREMENTAL", "MODERATE", "SIGNIFICANT", or "BREAKTHROUGH" |
How much does it cost to use autopoietic knowledge synthesis?
This MCP server uses pay-per-event pricing — you pay per tool call. Each tool call runs up to 18 actors in parallel; platform compute costs are included.
| Scenario | Tool calls | Cost per call | Total cost |
|---|---|---|---|
| Single query test | 1 | $0.04 | $0.04 |
| Daily research brief (5 tools) | 5 | $0.04 | $0.20 |
| Weekly field scan (7 tools x 4 weeks) | 28 | $0.04 | $1.12 |
| Systematic review setup (all 8 tools x 5 topics) | 40 | $0.04 | $1.60 |
| Continuous research monitoring (daily, full suite) | 240 | $0.04 | $9.60/month |
You can set a maximum spending limit per run to control costs. The actor stops when your budget is reached.
Apify's free tier includes $5 of monthly platform credits — enough for 125 tool calls per month at no cost. Compare this to Elicit at $10-50/month, Consensus at $9-99/month, or hiring a research assistant at $25-50/hour — with this server, most research teams spend under $5/month.
Connect autopoietic knowledge synthesis using the MCP protocol
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"autopoietic-knowledge-synthesis": {
"url": "https://autopoietic-knowledge-synthesis-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor
Add to your Cursor MCP settings:
{
"mcpServers": {
"autopoietic-knowledge-synthesis": {
"url": "https://autopoietic-knowledge-synthesis-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Python (via HTTP POST)
import httpx
import json
response = httpx.post(
"https://autopoietic-knowledge-synthesis-mcp.apify.actor/mcp",
headers={
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_APIFY_TOKEN",
},
json={
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "discover_research_fronts",
"arguments": {
"query": "mRNA lipid nanoparticle delivery",
"maxResults": 30,
},
},
"id": 1,
},
timeout=300,
)
result = response.json()
fronts = json.loads(result["result"]["content"][0]["text"])
print(f"Found {fronts['totalFronts']} research fronts")
print(f"Top field: {fronts['topField']}")
for front in fronts["fronts"]:
print(f" Front {front['id']}: novelty={front['noveltyScore']:.2f}, "
f"turingUnstable={front['turingUnstable']}, "
f"keywords={front['keywords'][:3]}")
JavaScript / TypeScript
const response = await fetch(
"https://autopoietic-knowledge-synthesis-mcp.apify.actor/mcp",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_APIFY_TOKEN",
},
body: JSON.stringify({
jsonrpc: "2.0",
method: "tools/call",
params: {
name: "compute_novelty_score",
arguments: {
query: "transformer attention mechanisms efficiency",
maxResults: 25,
},
},
id: 1,
}),
}
);
const data = await response.json();
const result = JSON.parse(data.result.content[0].text);
console.log(Average novelty: ${result.averageNovelty.toFixed(2)});
console.log(Breakthrough papers: ${result.breakthroughCount});
for (const score of result.scores.slice(0, 5)) {
console.log( [${score.tier}] ${score.title} — composite: ${score.compositeNovelty.toFixed(3)});
}
cURL (single tool call)
```bash
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


