Gem Knowledge Assistant: developer guide
A question-answering service for the gems and jewellery industry. It answers in English or Thai from a curated library of published documents (industry standards, laws and regulations, technical references, responsible-sourcing guidance and trade statistics) and from structured reference data. Every factual statement cites the document and page it comes from. When the library does not cover a question, or the question asks for a forecast or live prices, it declines and says why instead of guessing.
What it covers
- Gem materials and their properties as described in reference works
- Naming, grading terminology and disclosure standards for gems, pearls and jewellery
- Precious metals: fineness, marking and hallmarking
- Laws and regulations: labelling, consumer protection, restricted substances, tax and trade
- Responsible sourcing and supply-chain due diligence
- Mining, production and trade statistics
- Industry and business practice
The library holds 30 searchable documents (2,672 passages), last updated 2026-10-17. Answers are given in English or Thai.
Publishers in the library
- CIBJO (15)
- US Geological Survey (3)
- European Union (2)
- Mineralogical Society of America (2)
- Responsible Jewellery Council (2)
- OECD (1)
- Office of the Consumer Protection Board (Thailand), as published on ocac.go.th (1)
- Revenue Department of Thailand (1)
- UK Assay Offices (1)
- UK Parliament (1)
- US Federal Trade Commission (1)
What it does not do.
- It does not identify, grade or value a stone from a photograph or a description.
- It does not judge whether a laboratory certificate is genuine.
- It does not search the internet or give live prices, and it does not forecast.
- It does not give investment or purchasing advice.
The same description, kept current, is at GET https://researchorbit.net/api/v1/library (no key needed).
Getting access
Each organisation gets an API key from the Gem Knowledge Assistant's administrator. If your organisation has a client portal account, sign in at https://researchorbit.net/portal to see your usage, create a new key, connect AI assistants and, if you wish, use your own AI account. Keep the key secret: anyone holding it can ask questions as your organisation.
The API
Send a question; receive a cited answer or a decline.
curl -X POST https://researchorbit.net/api/v1/ask \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"question": "What does the FTC require before a product can be called gold filled?"}'
The answer:
{
"refused": false,
"text": "… the requirement … [1]. … [2].",
"citations": [
{"marker": 1, "kind": "passage", "title": "…", "document_id": "DOC-…", "version": 1,
"page": 5, "section": "…", "excerpt": "the passage the sentence rests on …"}
],
"charts": [],
"interaction_id": null
}
- Show the citations. Each
[n]intextmatches a citation'smarker. Show the sources under the answer, with title and page; link each marker to its source if you can. - Declines. When
refusedis true,textis a polite message saying why (a forecast, live prices, or not in the library). Show it as it is. - General guidance. When the library does not cover a question,
guidancemay hold brief general advice that cites nothing. Show it aftertext, labelled as general guidance not from the library. It isnullotherwise. - Charts. When the question asks for one,
chartsholds Plotly figures (dataandlayout). Draw them with plotly.js, or leave them out. - Feedback. If your organisation keeps its questions (see Rules and privacy),
interaction_idis set; sendPOST /api/v1/feedbackwith{"interaction_id": n, "value": "up"}or"down"when your user rates the answer. - Request body. JSON as above, whatever the Content-Type header says, or form-encoded (
question=...), as some automation platforms' HTTP modules send it. - Errors. 401: the key is missing or revoked. 422: the body is not JSON or form data, or the question is empty or too long (2,000 characters at most);
detailsays which. 429: a question limit is in force; wait the seconds inRetry-After. 502: the AI service did not respond; try again shortly.
The full reference, with every field, is at https://researchorbit.net/api/docs.
In your own chatbot
If your website already has a chatbot built on an AI provider's API, give it the Gem Knowledge Assistant as a tool:
when the model calls the tool, your code sends the question to /api/v1/ask and returns the result to the model.
Tool definition (adapt the field names to your provider):
{
"name": "ask_gem_library",
"description": "Ask the Gem Knowledge Assistant, a cited library on gems and jewellery. Returns an answer whose sentences carry [n] markers matching the numbered sources, or declined=true with a message when the library does not cover the question.",
"parameters": {
"type": "object",
"properties": {
"question": {
"type": "string",
"description": "The user's question about gems or jewellery, in English or Thai."
}
},
"required": [
"question"
]
}
}
Add this to your chatbot's instructions, so it uses the library properly:
For any question about gems and jewellery (gem materials and their properties as described in reference works; naming, grading terminology and disclosure standards for gems, pearls and jewellery; precious metals: fineness, marking and hallmarking; laws and regulations: labelling, consumer protection, restricted substances, tax and trade; responsible sourcing and supply-chain due diligence; mining, production and trade statistics; industry and business practice), call ask_gem_library with the user's question and answer from its result only.
Show its answer as given, keeping the [n] markers, and list the numbered sources under it with their titles and pages.
Do not add facts, figures, prices or advice that the result does not contain, and do not change which organisation or law a rule is credited to.
If the result says declined=true, show its message as it is and do not answer the question from your own knowledge instead.
Answer in the language the user wrote in.
In Claude, ChatGPT and other assistants
The connector address is https://researchorbit.net/mcp. It offers two tools: ask_gem_library and describe_gem_library.
- Claude (web and desktop apps). In Claude's settings, add a custom connector with the address above. A sign-in page from the Gem Knowledge Assistant opens; paste your API key and choose Connect.
- ChatGPT. In developer mode, create a connector with the address above and OAuth sign-in; the same sign-in page opens.
- Claude Code:
claude mcp add --transport http gem-library https://researchorbit.net/mcp --header "Authorization: Bearer YOUR_API_KEY"
From the Claude API (Messages API, MCP connector):
curl https://api.anthropic.com/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: mcp-client-2025-11-20" \
-d '{
"model": "YOUR_MODEL",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "How should laboratory-grown diamonds be described?"}],
"mcp_servers": [{"type": "url", "url": "https://researchorbit.net/mcp", "name": "gem-library",
"authorization_token": "YOUR_API_KEY"}],
"tools": [{"type": "mcp_toolset", "mcp_server_name": "gem-library"}]
}'
From OpenAI's Responses API (remote MCP tool):
curl https://api.openai.com/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"model": "YOUR_MODEL",
"input": "How should laboratory-grown diamonds be described?",
"tools": [{"type": "mcp", "server_label": "gem-library", "server_url": "https://researchorbit.net/mcp",
"authorization": "YOUR_API_KEY", "require_approval": "never"}]
}'
These providers change their interfaces from time to time; if a field above has changed, see their documentation for "remote MCP server".
Rules and privacy
- Answers come only from the library, and every statement cites its source. Nothing in your requests changes that.
- Questions are not kept unless your organisation has agreed to keep them, to help improve the assistant. Your administrator or your client portal shows the setting; switching it off deletes what was kept.
- Revoking a key stops it working at once, everywhere, including in connected assistants.