Integrare

Server MCP și API REST FTIR.fun

Conectați FTIR.fun la asistentul dvs. AI sau la conducta de automatizare. Server MCP pentru Claude/Cursor/Codex. API REST pentru integrări personalizate. Aceleași 130.000+ spectre de referință și interpretare AI bazată pe literatură în toate metodele.

Server MCP — Claude, Cursor, Codex

Serverul MCP (Model Context Protocol) al FTIR.fun a fost revizuit și listat oficial pe Anthropic MCP Registry, Smithery și MCP.so. Acesta expune căutarea spectrală FTIR, explicarea vârfurilor cu literatură citată prin DOI și identificarea materialelor ca instrumente apelabile pentru orice client compatibil MCP.

Conectare rapidă

# Claude Desktop / Claude Code claude mcp add ftirfun https://ftir.fun/mcp # Cursor # Add to ~/.cursor/mcp.json: {"mcpServers": {"ftirfun": {"url": "https://ftir.fun/mcp"}}} # OpenAI Codex codex mcp add ftirfun https://ftir.fun/mcp

Instrumente disponibile

InstrumentDescriere
search_ftir_libraryCăutați 130.000+ spectre de referință după vârfuri sau fișier încărcat. Returnează potriviri clasate cu numere CAS și scoruri de similaritate.
search_public_ftir_resultsCăutați rezultate de analiză partajate de comunitate după cuvânt cheie.
fetch_public_ftir_resultObțineți un rezultat specific de analiză FTIR publică după ID pentru o revizuire detaliată.

Card server și linkuri registru

Vedeți toate integrările platformelor

Plugin Coze — Utilizați în Doubao

Open Doubao → Plugin Store → search "FTIR" or "红外分析" → tap Add. No configuration needed. Doubao will automatically route infrared-related queries to our spectral search engine.

Cuvinte cheie de căutare: 红外分析, FTIR, infrared, 光谱检索, 物质识别

API REST

API de căutare în bibliotecă

POST /v1/search

Căutare în biblioteca spectrală. Acceptă un fișier (potrivire spectru complet) sau o listă de vârfuri (potrivire poziție vârf). Dacă sunt furnizate ambele, căutarea fișierului are prioritate.

Autentificare

X-API-Key: your-api-key

Corpul cererii

CâmpTipObligatoriuDescriere
file_base64stringunul dintreFișier instrument codat Base64 (suportă CSV, SPA, OPUS, SPC, JCAMP-DX și peste 15 alte formate)
filenamestringcu file_base64Numele fișierului original inclusiv extensia (de ex. sample.spa)
peaksnumber[]unul dintreLista numerelor de undă ale vârfurilor în cm⁻¹ (de ex. [3026, 1601, 1493, 755])
top_kintegernu (implicit 10)Numărul de rezultate de returnat, maximum 50
toleranceintegernu (implicit 8)Toleranța de potrivire a vârfurilor în cm⁻¹, interval 1–30

Răspuns

{ "success": true, "search_mode": "full_spectrum", "n_matches": 10, "matches": [ { "rank": 1, "name": "Polystyrene", "cas": "25086-18-4", "num": 326, "similarity": 0.9586 } ], "file_format": "Thermo SPA", "n_points": 3601, "error": null }

Exemplu — încărcare fișier

import base64, requests with open("sample.spa", "rb") as f: b64 = base64.b64encode(f.read()).decode() resp = requests.post( "https://api.ftir.fun/v1/search", headers={"X-API-Key": "your-key", "Content-Type": "application/json"}, json={"file_base64": b64, "filename": "sample.spa", "top_k": 5}, ) print(resp.json())

Exemplu — listă vârfuri

import requests resp = requests.post( "https://api.ftir.fun/v1/search", headers={"X-API-Key": "your-key", "Content-Type": "application/json"}, json={"peaks": [3082, 3026, 2923, 1601, 1493, 1451, 1028, 906, 755, 699], "top_k": 5}, ) print(resp.json())

Analiză doar cu AI pentru rezultate existente

Utilizați acest endpoint numai după ce există deja un rezultat de căutare. FTIR.fun citește sau OCRizează mai întâi raportul furnizat, extrage candidații raportați și tabelul cu vârfuri ale probei, apoi execută analiza KG și susținută de literatură ulterioară.

POST /ftir/analyze_existing_results

Raportul trebuie să conțină atât lista de rezultate de căutare raportate, cât și tabelul cu vârfuri ale probei. Acest endpoint nu efectuează singur căutarea în biblioteca spectrală.

Autentificare

X-API-Key: your-api-key

Corpul cererii

CâmpTipObligatoriuDescriere
report_textstringunul dintreText simplu copiat dintr-un raport existent al instrumentului sau bibliotecii. Textul trebuie să includă atât rezultatele raportate, cât și tabelul cu vârfuri ale probei.
report_file_base64stringunul dintreFișier de raport codat în Base64. Formate acceptate: PDF, DOC, DOCX, TXT, CSV, PNG, JPG, JPEG, WEBP, GIF, BMP, TIF, TIFF.
report_filenamestringcu report_file_base64Numele original al fișierului raportului inclusiv extensia (de exemplu report.pdf sau report.docx).
user_background_textstringnuContext opțional al probei. Acesta este tratat doar ca context soft și nu ca dovadă.

Limită dură de intrare

  • Element necesar 1: cel puțin un candidat de rezultat de căutare raportat, cum ar fi o potrivire Top1 sau o listă Top15
  • Element necesar 2: lista vârfurilor probei sau tabelul vârfurilor în cm-1 din același raport
  • Dacă lipsește oricare dintre elemente, endpoint-ul returnează HTTP 422 și nu generează un raport de analiză

Răspuns de succes

{ "success": true, "analysis_mode": "ai_only_existing_results", "message": "AI-only analysis completed from the supplied existing results report.", "input_requirements": { "service_boundary": "AI-only analysis starts after a search result already exists.", "required_inputs": [ "At least one reported search result candidate (Top1 or Top15).", "The sample peak table or peak list in cm-1." ] }, "missing_requirements": [], "missing_requirement_messages": [], "extracted_report": { "source_kind": "pdf", "used_ocr": true, "peak_values_cm1": [1736, 1601, 1241], "library_candidates": [ {"rank": 1, "name": "Polyethylene terephthalate", "cas_number": "25038-59-9", "raw_score_text": "856/1000", "normalized_similarity": 0.856} ] }, "summary": "Reported library results rank Polyethylene terephthalate first.", "report_view": {}, "final_decision": {}, "direct_evidence": {}, "related_literature": {} }

Răspuns pentru intrare lipsă

{ "detail": { "success": false, "analysis_mode": "ai_only_existing_results", "error": "missing_required_report_elements", "message": "AI-only analysis requires both reported library results and a sample peak table.", "missing_requirements": ["sample_peak_table"], "missing_requirement_messages": [ "Missing sample peak table. Provide the sample peak list or peak table in cm-1 from the same report." ], "input_requirements": { "failure_behavior": "If either the reported result list or the sample peak table is missing, the service stops and returns a 422 response." }, "extracted_report": { "report_has_library_results": true, "report_has_peak_table": false } } }

Exemplu — Text existent al raportului

import requests report_text = """ Sample: PET fragment Top1: Polyethylene terephthalate Score: 856/1000 Top2: Polyester resin Score: 801/1000 Peak table (cm-1): 3435, 2932, 1715, 1409, 1241, 1093, 1017, 872, 722 """ resp = requests.post( "https://api.ftir.fun/ftir/analyze_existing_results", headers={"X-API-Key": "your-key", "Content-Type": "application/json"}, json={"report_text": report_text, "user_background_text": "consumer packaging fragment"}, ) print(resp.json())

Exemplu — Fișier existent al raportului

import base64, requests with open("instrument-report.pdf", "rb") as f: b64 = base64.b64encode(f.read()).decode() resp = requests.post( "https://api.ftir.fun/ftir/analyze_existing_results", headers={"X-API-Key": "your-key", "Content-Type": "application/json"}, json={ "report_file_base64": b64, "report_filename": "instrument-report.pdf", "user_background_text": "suspected packaging adhesive", }, ) print(resp.json())

Coduri de eroare

Stare HTTPSemnificație
200Succes
401Cheie API lipsă sau invalidă
422Corpul cererii invalid, formatul raportului neacceptat sau elemente obligatorii lipsă în raport
500Eroare de server
Trimite cererea Formular