Polymer Database Search
/install polymer-db
Polymer Database Search (Polymer-Data-Bank)
API Information
- Endpoint:
POST https://open.bohrium.com/openapi/v1/database/common_data/list - Authentication: Header
accessKey: \x3CYOUR_ACCESS_KEY> - tableAk:
123zl00(Polymer-Data-Bank, 280k+ records) - Data Source: Bohrium Materials Database
Request Format
curl -s -X POST 'https://open.bohrium.com/openapi/v1/database/common_data/list' \
-H 'Content-Type: application/json' \
-H 'accessKey: \x3CYOUR_ACCESS_KEY>' \
-d '\x3CJSON body>'
Basic Request Body
{
"tableAk": "123zl00",
"page": 1,
"pageSize": 50,
"filters": { ... },
"selectedFields": ["field1", "field2"],
"orderBy": [{"field": "fieldName", "order": "asc"}]
}
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
tableAk |
string | Yes | Fixed "123zl00" |
page |
int | Yes | Page number, starting from 1 |
pageSize |
int | Yes | Items per page, max 5000 |
filters |
object | No | Filter conditions (Filter structure) |
selectedFields |
[]string | No | Only return specified fields |
orderBy |
[]object | No | Sort by {"field": "xxx", "order": "asc/desc"} |
Filter Structure
{
"type": 2,
"groupOperator": "and",
"sub": [
{
"type": 1,
"field": "field_name (dataIndex)",
"operator": "eq",
"value": "value"
}
]
}
type:1= Simple condition,2= Compound condition (with sub)groupOperator:"and"|"or"operator:eq/neq/like/gt/gte/lt/lte/in/nin/between
Important limitation: All property fields are string type (values like "71.3 °C", "[255 °C,288 °C]"). Operators like gt/lt perform lexicographic comparison, not numeric. Numeric range filtering must be done client-side after parsing.
Field Name Mapping
Basic Information
| Common Name | dataIndex | Example Value |
|---|---|---|
| DOI | doi |
"10.1021/acs.macromol.9b02359" |
| Polymer name | polymer_name |
"PI", "PU" |
| Polymer type | polymer_type |
"Polyimide" |
| Monomer composition/structure | components |
"6FDA:O=C1OC...;ODA:Nc1ccc..." |
| Feed ratio | feed_ratio_text |
"DABz/m-BAPS = 1/1" |
| Ratio type | ratio_type |
"mole", "weight" |
Thermal Properties
| Common Name | dataIndex | Related Fields |
|---|---|---|
| Tg / Glass transition temperature | GlassTransitionTemperature(Tg) |
test_method_GlassTransitionTemperature(Tg), heating_rate_GlassTransitionTemperature(Tg), atmosphere_GlassTransitionTemperature(Tg) |
| Td / Decomposition temperature | DecompositionTemperature(Td) |
decomposition_criterion_DecompositionTemperature(Td), atmosphere_DecompositionTemperature(Td) |
| Tm / Melting temperature | MeltingTemperature(Tm) |
test_method_MeltingTemperature(Tm) |
| Tc / Crystallization temperature | CrystallizationTemperature(Tc) |
— |
| CTE / Coefficient of thermal expansion | CoefficientofThermalExpansion(CTE) |
— |
| Thermal conductivity | ThermalConductivity |
— |
Optical Properties
| Common Name | dataIndex | Related Fields |
|---|---|---|
| Transmittance | Transmittance |
wavelength_Transmittance, thickness_Transmittance |
| Refractive index | RefractiveIndex(n) |
wavelength_RefractiveIndex(n) |
| Yellow index | YellowIndex(YI)/WhitenessIndex(WI) |
— |
| Haze | Haze |
— |
| Birefringence | Birefringence(Δn) |
— |
| Cut-off wavelength | Cut-offWavelength(λ_cut) |
— |
| Abbe number | AbbeNumber(νd) |
— |
Mechanical Properties
| Common Name | dataIndex |
|---|---|
| Tensile strength | TensileStrength |
| Tensile modulus / Young's modulus | TensileModulus |
| Elongation at break | ElongationatBreak |
| Flexural strength | FlexuralStrength |
| Flexural modulus | FlexuralModulus |
| Impact strength | ImpactStrength |
| Shear strength | ShearStrength |
| Shore hardness | ShoreHardness |
Electrical Properties
| Common Name | dataIndex |
|---|---|
| Dielectric constant Dk | DielectricConstant(Dk) |
| Dielectric loss Df | DielectricLoss(Df/tanδ) |
| Breakdown strength | BreakdownStrength |
| Volume resistivity | VolumeResistivity |
| Proton conductivity | ProtonConductivity |
Molecular Weight
| Common Name | dataIndex |
|---|---|
| Number-average molecular weight Mn | mn_value |
| PDI / Polydispersity index | pdi_value |
Query Strategies
Exact Query (Q1 type)
User asks "properties of a specific DOI/polymer": query directly with selectedFields limiting returned fields.
{
"tableAk": "123zl00",
"page": 1,
"pageSize": 50,
"filters": {
"type": 2, "groupOperator": "and",
"sub": [{"type": 1, "field": "doi", "operator": "eq", "value": "10.1021/..."}]
},
"selectedFields": ["polymer_name", "polymer_type", "GlassTransitionTemperature(Tg)", "DecompositionTemperature(Td)"]
}
Numeric Range Filtering (Q2 type)
User asks "polymers with Tg > 350°C":
- Cannot directly use
gtoperator (field is string, lexicographic comparison is inaccurate) - Correct approach: Use
likeoperator to exclude empty values ("value": ""), setpageSize: 5000, fetch data and parse numerically on client side
import re
def parse_value_celsius(val_str):
"""Parse temperature string with units, convert to °C"""
if not val_str:
return None
nums = re.findall(r'[-+]?\d+\.?\d*', val_str)
if not nums:
return None
values = [float(n) for n in nums]
max_val = max(values)
if 'K' in val_str and '°C' not in val_str:
return max_val - 273.15
elif '°F' in val_str:
return (max_val - 32) * 5 / 9
return max_val
- After filtering, perform statistical analysis (type distribution, frequent monomers, etc.)
Analysis & Recommendation (Q3 type)
User asks "suggestions for synthesizing a polymer with XX properties":
- Use
like ""to fetch records with that property data (max 5000/page, may need pagination) - Parse values on client side, filter records meeting criteria
- Analyze
polymer_typedistribution, frequent monomers incomponents - Provide structural design suggestions based on data patterns
Data Format Notes
components field format
monomer_name:SMILES;monomer_name:SMILES;...
Example: 6FDA:O=C1OC(=O)c2cc(...)ccc21;ODA:Nc1ccc(Oc2ccc(N)cc2)cc1
Property value format (all strings)
- Single value:
"71.3 °C" - Multiple values:
"[255 °C,288 °C]" - Descriptive:
"over 90 %","greater than 350 °C" - With error:
"90.8% ± 0.6%"
System fields (ignore)
_id: MongoDB ObjectIDa1b2c3d4e5_is_locked: Lock flaga1b2c3d4e5_owner_id: Data ownera1b2c3d4e5_source: Data sourcea1b2c3d4e5_status: Review statusauthors: Contributor infocreateTime/updateTime: Timestamps
Important Notes
- Inconsistent units: Same field may mix °C, K, °F — unit conversion is required
- String values: All property fields are strings, numeric comparison must be done client-side
- Multi-value fields: A record may have multiple values for a property (array format like
"[val1,val2]") - pageSize limit: Max 5000. For large datasets, use pagination (total count in
data.count) - Special characters in field names: e.g.
GlassTransitionTemperature(Tg)contains parentheses, use directly as JSON key - like empty string:
"operator": "like", "value": ""matches all non-empty records - When presenting results to user, filter out system fields (
a1b2c3d4e5_*,authors), show only meaningful data
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install polymer-db - After installation, invoke the skill by name or use
/polymer-db - Provide required inputs per the skill's parameter spec and get structured output
What is Polymer Database Search?
Polymer database search: query the Polymer-Data-Bank for polymer data, supporting searches by DOI, polymer name, properties, etc. Returns structure, thermal,... It is an AI Agent Skill for Claude Code / OpenClaw, with 48 downloads so far.
How do I install Polymer Database Search?
Run "/install polymer-db" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Polymer Database Search free?
Yes, Polymer Database Search is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Polymer Database Search support?
Polymer Database Search is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Polymer Database Search?
It is built and maintained by Sorrymaker0624 (@sorrymaker0624); the current version is v1.0.0.