"Philips Hue" matching MCP tools:
- PROJECT-SCOPED: this call acts only on the explicit project_id and returns the project identity with its result. WRITE YOUR OWN ffmpeg video filter chain and apply it to the program picture — for the look no preset makes. Presets FIRST: apply_look / add_stylize / set_color_grade / enhance_video cover the common asks; reach here when the user wants something none of them says (a CRT phosphor look, posterize, a slow hue drift, selective channel work). Rules: ONE chain on the single video stream — filters separated by commas, NO ';' or '[labels]', no file access — and it must keep the frame's size and rate. The chain is DRY-RUN on the real footage before it stores: a broken chain returns ffmpeg's own error (fix it, never retry the identical string); an over-heavy one returns its measured cost. start/end are PROGRAM seconds (omit both = whole video; windowed moments follow their footage through later cuts). label = short human name for the look ('CRT green') shown in diffs. Example chain: "hue=s=0.3,curves=green='0/0 0.5/0.6 1/1',noise=alls=8:allf=t". After it lands, LOOK at the window on the next preview — a chain that parses can still look wrong.ConnectorOAuth
- Hold a color's hue and chroma and set its lightness, returning one result per requested L*. color accepts a hex, CSS name, RNV brand name, or saved-palette reference; lightness is a list of L* values in 0-100. This is the operation behind a LIGHT/DARK PAIR: one hue at two lightnesses, with a and b held exactly, which is how a color that works on a dark ground gets a partner that works on a light one. Use it when you need the same color at a different lightness; use mix_colors when you need a different color. Returns the source color's LAB, and for each placement the hex, the achieved LAB, and the quantization error per axis -- 8-bit hex cannot store a and b to the precision LAB expresses, so two placements of one hue differ by a few hundredths on both axes however exactly the input held them. That is the storage format, not the operation, and it is reported rather than hidden. Read-only and deterministic. Refuses rather than clamps: not every (L*, a, b) exists in sRGB, and a lightness too far from a chromatic color's range is rejected with the reason instead of being silently moved to the nearest color that fits.ConnectorNo auth
- Hold a color's hue and chroma and set its lightness, returning one result per requested L*. color accepts a hex, CSS name, RNV brand name, or saved-palette reference; lightness is a list of L* values in 0-100. This is the operation behind a LIGHT/DARK PAIR: one hue at two lightnesses, with a and b held exactly, which is how a color that works on a dark ground gets a partner that works on a light one. Use it when you need the same color at a different lightness; use mix_colors when you need a different color. Returns the source color's LAB, and for each placement the hex, the achieved LAB, and the quantization error per axis -- 8-bit hex cannot store a and b to the precision LAB expresses, so two placements of one hue differ by a few hundredths on both axes however exactly the input held them. That is the storage format, not the operation, and it is reported rather than hidden. Read-only and deterministic. Refuses rather than clamps: not every (L*, a, b) exists in sRGB, and a lightness too far from a chromatic color's range is rejected with the reason instead of being silently moved to the nearest color that fits.ConnectorNo auth
- Create a new target group with name and targeting criteria. Supports BOTH include AND exclude rules — including excluding existing Metadata audiences. PREREQUISITE: All criteria IDs MUST come from search_target_group_criteria. estimate_target_group first is MANDATORY: verify isMatchCountTooSmall=false and report the reach to the user BEFORE creating. A target group created without an estimate can land at zero matches and nothing downstream will notice (PRD-31759). Same bar as update_target_group. USE FOR: "create target group named X with criteria Y", "save this target group as X", "create new audience called X", "create target group excluding companies Z", "create target group that excludes audience X". WARNING: CHANNEL: This tool creates LINKEDIN target groups only. Do NOT infer channel from the underlying audience NAMES (e.g. an audience called "Reddit Conquest Mktg LI_n7q" does NOT mean the user wants a REDDIT target group — audience naming is human convention, not a routing signal). Use REDDIT only when the user explicitly named the REDDIT channel in the request; in that case use `create_reddit_target_group` instead. When in doubt, ask the user which channel. **CRITICAL FOR LINKEDIN**: LOCATION must be FIRST criteria in include array with isModifiable=false. TARGETING STRUCTURE (full example with include + exclude criteria + exclude audiences): { "include": [ { "isModifiable": false, "criteria": [{"type": "NATIVE_LOCATION", "data": [ {"externalId": "urn:li:geo:101165590", "name": "United Kingdom"}, {"externalId": "urn:li:geo:103644278", "name": "United States"} ]}], "audiences": [] }, { "isModifiable": true, "criteria": [{"type": "AGE", "data": [{"externalId": "urn:li:ageRange:(25,34)", "name": "25 to 34"}]}], "audiences": [] } ], "exclude": { "isModifiable": true, "criteria": [ {"type": "COMPANY_NAME", "data": [{"externalId": "urn:li:organization:1090", "name": "Philips"}]} ], "audiences": [ { "mdAudienceId": 45316, "name": "ICP Pharma LifeSci Leaders", "type": "FIRMOGRAPHIC_EXCLUDE", "matchCount": 213127, "matchCountType": "FIXED_SIZE", "inactive": false, "criteria": [{"type": "NATIVE_LOCATION", "data": [{"externalId": "urn:li:geo:103644278", "name": "United States"}]}] } ] } } INCLUDE: Array of rule blocks (AND-joined). Each block holds a criteria group. EXCLUDE: Single object (NOT array) with `criteria` and `audiences`. Anything matching exclude is removed. WARNING: AUDIENCES ≠ TARGET GROUPS. Both `include[].audiences` and `exclude.audiences` accept Custom Audience records ONLY (the entities returned by `get_matched_audiences`). Target Groups (the entities returned by `list_target_groups` / `retrieve_target_group_by_id`) are a separate entity in a separate ID space and CANNOT be attached here; the platform silently drops or rejects them. If the user names "X" and only `list_target_groups` matches it (not `get_matched_audiences`), do NOT pass the Target Group's id as `mdAudienceId`. Stop, tell the user "X is a Target Group, not a Custom Audience", and offer to rebuild X as a Custom Audience (e.g. via `create_audiences` with the same criteria) before retrying. INCLUDE AUDIENCES: `include[].audiences` accepts ANY Metadata audience type — there is NO allow-list and NO restriction to specific types. The audience must be live on the channel, though: a row with inactive=true (LinkedIn segment archived, failed or still building) is refused by the platform and sized at 0, so pick an active row. Pass any audience returned by the audience listing tools (e.g. FIRMOGRAPHIC_INCLUDE, FIRMOGRAPHIC_INCLUDE_SFDC, NATIVE_LINKEDIN, NATIVE_FACEBOOK, RETARGETING, TECHNOGRAPHIC, SFDC_ACCOUNT_DYNAMIC, MA_CONTACTS_DYNAMIC, CONTACT_LIST, and any other type, including types not enumerated in any tool schema). Type-name enums seen in the audience tool schemas describe how audiences are CLASSIFIED, not which can be attached here. Caveat: estimates may under-report (or return zero) when combining server-resolved audiences (e.g. SFDC dynamic, retargeting) with native LinkedIn criteria — that is an estimate-side reconciliation issue, not a creation constraint, so a zero estimate does not necessarily mean the platform will reject the create call. If a zero estimate is suspected to be a reconciliation artifact, attempt the create and verify in the UI. HOW TO EXCLUDE AN EXISTING METADATA CUSTOM AUDIENCE: Add it as an object in `exclude.audiences`. The tool pre-flight-rejects placeholder values — never invent ids or types when you don't know them, call `get_matched_audiences` first and use the real values from the response. Required fields: - `mdAudienceId` (integer, REQUIRED): The numeric Custom Audience ID from `get_matched_audiences`, its `customAudienceId` / `mdAudienceId` field (e.g. 49067, 45316), NEVER that row's `id` (the channel row id). NEVER the audience name string, NEVER a placeholder like 1/2/3/4 (real Custom Audience IDs are 5-digit numbers; the tool rejects anything under 100), and NEVER a Target Group id (those come from `list_target_groups`; see the AUDIENCES ≠ TARGET GROUPS note above). - `name` (string): Audience name. - `type` (string): MUST be the EXCLUDE variant of the audience type, e.g. `FIRMOGRAPHIC_EXCLUDE`, `RETARGETING_EXCLUDE`, `CONTACT_LIST_EXCLUDE`. NEVER the placeholder string "AUDIENCE" — the tool rejects that pre-flight. - `matchCount` (int), `matchCountType` ("FIXED_SIZE"), `inactive` (bool): copy from audience record. The tool pre-flight-rejects entries with `inactive: true` (an audience still matching after creation cannot be attached yet — attach it once it is active). - `criteria`: The audience's own criteria array (copy from the audience's definition). CRITERIA TYPES (all IDs from search_target_group_criteria), valid in BOTH include and exclude: - NATIVE_LOCATION / LOCATION: location data — MANDATORY FIRST in include. Multi-country geo goes in ONE location criterion with one {externalId, name} entry per country (e.g. "Canada and USA" = 2 entries in the same data array). Never silently drop a country the user named. - AGE, COMPANY_CATEGORY, COMPANY_GROWTH_RATE, INDUSTRY, COMPANY_NAME, REVENUE, EMPLOYEE: Array of {externalId, name} - JOB_FUNCTION, JOB_TITLE, MEMBER_GROUP, MEMBER_INTEREST, MEMBER_SKILL, MEMBER_BEHAVIOR, SENIORITY, FOLLOWED_COMPANIES: Array of {externalId, name} - YEARS_OF_EXPERIENCE_RANGE: {"min": 4, "max": 5} WORKFLOW: search_target_group_criteria → build targeting (include + optional exclude criteria/audiences) → estimate_target_group → confirm → create_target_group RESPONSE: {id, name, channel, audienceSize, status, createdDate, targeting}ConnectorAPI key
- Create a custom CodePic hand-drawn style diagram by specifying nodes and edges. Requires API Key authentication. Returns a public view URL. **THIS IS THE DEFAULT TOOL FOR ANY USER-DESCRIBED DIAGRAM.** Whenever the user describes a diagram they want ("draw an A/B test flowchart", "帮我画一个登录流程", "a system architecture with a load balancer and 3 servers", etc.), build it here from their description. Do NOT fall back to `create_from_template` / `list_templates` unless the user explicitly asked for a template. When responding to the user, present the returned URL as a clickable markdown link (e.g. `[Open in CodePic →](URL)`) so the user can click it directly in their AI client (Cursor / Claude / etc.). **Container nesting (IMPORTANT — use whenever possible):** - Set `parentId` on a node to nest it inside another node. ANY node type can be a container. - The parent automatically becomes draggable-as-a-group and users can keep dropping elements into it. - Call `get_shape_catalog` with tag `container-capable` to choose among native structural containers and adaptive semantic shapes such as rectangles, circles, ellipses, diamonds, cylinders, and hexagons. - Parent bounds are expanded automatically using the selected shape's title and outline safe area. - Use absolute canvas coordinates for all nodes — child coordinates are auto-converted to parent-relative. - Set node `name`, `description`, and `tags` when later MCP/Agent reads need stable business semantics beyond visible text. - **Rule**: whenever 2+ nodes logically belong to the same module / component / region, create a container node first and set `parentId` on each child. **Design tips for beautiful diagrams:** - Use semantic types: `button-primary` for CTA buttons (auto blue), `diamond` for decisions - Pick a color palette and apply it consistently — light fill + darker stroke of the same hue: • Blue: fillColor #e3f2fd / #bbdefb, strokeColor #1565c0, fontColor #1565c0 (or #ffffff on dark fill) • Green: fillColor #e8f5e9 / #c8e6c9, strokeColor #2e7d32, fontColor #1b5e20 • Purple: fillColor #f3e5f5 / #e1bee7, strokeColor #6a1b9a, fontColor #4a148c • Neutral: fillColor #f8fafc / #f1f5f9, strokeColor #475569, fontColor #1e293b - Each semantic group (decisions, processes, I/O) should share a fill color to create visual hierarchy - Dark fill (e.g. #1565c0, #ef4444) → fontColor #ffffff; light fill → fontColor #111827ConnectorNo auth
- Return complementary, triadic, analogous, and split-complementary harmonies matched to named archive colours. Also available: 'hay_contrast' -- D.R. Hay's (1838) documented contrast pairing between six named hues (yellow/purple, orange/blue, red/green), with Field's proportional power for the pair. Unlike the fixed-angle types, this snaps the input to Hay's nearest named hue rather than rotating it, and returns covered:false with no invented partner when the input sits nearer a tertiary region (olive/citron/russet) than any of the six -- Hay records only an aggregate total for tertiaries, never a specific pair. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.ConnectorNo auth
Matching MCP Servers
- AlicenseAqualityDmaintenanceEnables control of Philips Hue lights via Bluetooth LE directly from Claude, without requiring a Hue Bridge or internet connection.844 PyPI1MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol interface that enables AI assistants like Claude to control Philips Hue smart lighting systems through natural language commands.29MIT
Matching MCP Connectors
Enterprise-grade L402 data vending engine and cryptographic notary hub for autonomous AI swarms. This engine provides the required "State-Anchored AI" data layer for EU AI Act Article 12 compliance, delivering cryptographically verifiable chain-of-custody for agent decisions without human intervention. Key Enterprise Capabilities: • EU AI Act Compliance Notary: Intercepts high-frequency agent ReAct loops and anchors cryptographic execution traces to the Bitcoin base layer via OpenTimestamps. • Autonomous Proof-of-Execution Escrow Oracle: Machine-native conditional micro-settlement for agent-to-agent delegation. Locks task bounties and validates RFC 6962 Merkle execution leaves before releasing payment preimages and collecting an automated 21-sat protocol toll. • Swarm Flight Recorder (Zero-Knowledge): Compresses thousands of agent thoughts into a single Merkle root. Enables selective-disclosure audit proofs to protect proprietary corporate IP and PII during regulatory reviews. • Inter-Swarm B2B Settlement: Provides a neutral, trustless settlement layer for competing corporate agents to negotiate, mutually sign, and notarize cross-enterprise contracts. • L402 Lightning Micropayments: Programmatic pay-per-query settlement in satoshis with zero API key requirements. Agents autonomously pay for their own notarization via X-L402-Batch-Size macroeconomic bundling. • Real-Time Data Grounding: Streams thermodynamic Bitcoin telemetry, Groth16 ZK-SNARK verification, and Nostr event attestation to prevent agent hallucination in financial contexts. Dual-licensed under AGPLv3 and Commercial Enterprise terms. Architected by Charles R. Strogish. Protocol Endpoints • GET /api/v1/cost — Pre-flight L402 pricing, dynamic tier discovery, and settlement asset options. • GET /api/v1/stratigraphy — Nostr-signed thermodynamic Bitcoin dataset. • GET /api/v1/stratigraphy/stream — Real-time telemetry event stream.
ESG knowledge base for AI agents: hybrid search, glossary, frameworks, industries, graph traversal.
- Return complementary, triadic, analogous, and split-complementary harmonies matched to named archive colours. Also available: 'hay_contrast' -- D.R. Hay's (1838) documented contrast pairing between six named hues (yellow/purple, orange/blue, red/green), with Field's proportional power for the pair. Unlike the fixed-angle types, this snaps the input to Hay's nearest named hue rather than rotating it, and returns covered:false with no invented partner when the input sits nearer a tertiary region (olive/citron/russet) than any of the six -- Hay records only an aggregate total for tertiaries, never a specific pair. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.ConnectorNo auth
- Return complementary, triadic, analogous, and split-complementary harmonies matched to named archive colours. Also available: 'hay_contrast' -- D.R. Hay's (1838) documented contrast pairing between six named hues (yellow/purple, orange/blue, red/green), with Field's proportional power for the pair. Unlike the fixed-angle types, this snaps the input to Hay's nearest named hue rather than rotating it, and returns covered:false with no invented partner when the input sits nearer a tertiary region (olive/citron/russet) than any of the six -- Hay records only an aggregate total for tertiaries, never a specific pair. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.ConnectorNo auth
- Estimate audience size for target group criteria before creating. Supports BOTH include AND exclude rules (criteria + audiences). USE FOR: Validate audience size before creating, "how many people will this reach?", "preview audience size", test targeting combinations, preview impact of exclusion criteria/audiences. CHANNELS: LINKEDIN (default) and REDDIT. Pass channel="REDDIT" to size a Reddit target group before create_reddit_target_group; its criteria ids come from search_reddit_criteria rather than search_target_group_criteria, and the rest of the call is identical (PRD-31759). PREREQUISITE: All criteria IDs MUST come from search_target_group_criteria first (search_reddit_criteria for REDDIT). **CRITICAL FOR LINKEDIN**: LOCATION must be FIRST criteria in include array with isModifiable=false. TARGETING STRUCTURE (full example with include + exclude criteria + exclude audiences): { "include": [ { "isModifiable": false, "criteria": [{"type": "NATIVE_LOCATION", "data": [{"externalId": "urn:li:geo:103644278", "name": "United States"}]}], "audiences": [] }, { "isModifiable": true, "criteria": [{"type": "AGE", "data": [{"externalId": "urn:li:ageRange:(25,34)", "name": "25 to 34"}]}], "audiences": [] } ], "exclude": { "isModifiable": true, "criteria": [ {"type": "COMPANY_NAME", "data": [{"externalId": "urn:li:organization:1090", "name": "Philips"}]} ], "audiences": [ { "mdAudienceId": 45316, "name": "ICP Pharma LifeSci Leaders", "type": "FIRMOGRAPHIC_EXCLUDE", "matchCount": 213127, "matchCountType": "FIXED_SIZE", "inactive": false, "criteria": [{"type": "NATIVE_LOCATION", "data": [{"externalId": "urn:li:geo:103644278", "name": "United States"}]}] } ] } } INCLUDE: Array of rule blocks. Each block = AND-group of criteria; multiple blocks are AND'd together. EXCLUDE: Single object (NOT array) with `criteria` and `audiences`. Anyone matching exclude is removed from results. WARNING: AUDIENCES ≠ TARGET GROUPS. Both `include[].audiences` and `exclude.audiences` accept Custom Audience records ONLY (the entities returned by `get_matched_audiences`). Target Groups (the entities returned by `list_target_groups` / `retrieve_target_group_by_id`) are a separate entity in a separate ID space and CANNOT be attached here; the platform silently drops or rejects them. If the user names "X" and only `list_target_groups` matches it (not `get_matched_audiences`), do NOT pass the Target Group's id as `mdAudienceId`. Stop, tell the user "X is a Target Group, not a Custom Audience", and offer to rebuild X as a Custom Audience (e.g. via `create_audiences` with the same criteria) before retrying. INCLUDE AUDIENCES: `include[].audiences` accepts ANY Metadata audience type — there is NO allow-list and NO restriction to specific types. The audience must be live on the channel, though: a row with inactive=true (LinkedIn segment archived, failed or still building) is refused by the platform and sized at 0, so pick an active row. Pass any audience returned by the audience listing tools (e.g. FIRMOGRAPHIC_INCLUDE, FIRMOGRAPHIC_INCLUDE_SFDC, NATIVE_LINKEDIN, NATIVE_FACEBOOK, RETARGETING, TECHNOGRAPHIC, SFDC_ACCOUNT_DYNAMIC, MA_CONTACTS_DYNAMIC, CONTACT_LIST, and any other type, including types not enumerated in any tool schema). Type-name enums seen in the audience tool schemas describe how audiences are CLASSIFIED, not which can be attached here. Caveat: estimates may under-report (or return zero) when combining server-resolved audiences (e.g. SFDC dynamic, retargeting) with native LinkedIn criteria — that is an estimate-side reconciliation issue, not a creation constraint, so a zero estimate does not necessarily mean the platform will reject the create call. EXCLUDE AUDIENCES: To exclude an existing Metadata Custom Audience, provide its full object in `exclude.audiences`. The tool pre-flight-rejects placeholder values — never invent ids or types when you don't know them, call `get_matched_audiences` first and use the real values from the response: - `mdAudienceId` (integer, REQUIRED): The numeric Custom Audience ID from `get_matched_audiences`, its `customAudienceId` / `mdAudienceId` field (e.g. 49067, 45316), NEVER that row's `id` (the channel row id). NEVER the audience name string, NEVER a placeholder like 1/2/3/4 (real Custom Audience IDs are 5-digit numbers; the tool rejects anything under 100), and NEVER a Target Group id (those come from `list_target_groups`; see the AUDIENCES ≠ TARGET GROUPS note above). - `name` (string, required): Audience name. - `type` (string, required): Audience type, e.g. `FIRMOGRAPHIC_EXCLUDE`, `RETARGETING_EXCLUDE`, `CONTACT_LIST_EXCLUDE` (must be the EXCLUDE variant). NEVER the placeholder string "AUDIENCE" — the tool rejects that pre-flight. - `matchCount` (int), `matchCountType` ("FIXED_SIZE"), `inactive` (bool): metadata fields from the audience record. The tool pre-flight-rejects entries with `inactive: true` (an audience still matching after creation cannot be attached yet — attach it once it is active). - `criteria`: The audience's own criteria array (copy from the audience's definition). CRITERIA TYPES (all IDs from search_target_group_criteria), valid in BOTH include and exclude: - NATIVE_LOCATION / LOCATION: location data — MANDATORY FIRST in include. Multi-country geo goes in ONE location criterion with one {externalId, name} entry per country (e.g. "Canada and USA" = 2 entries in the same data array). Never silently drop a country the user named. - AGE, COMPANY_CATEGORY, COMPANY_GROWTH_RATE, INDUSTRY, COMPANY_NAME, REVENUE, EMPLOYEE: Array of {externalId, name} - JOB_FUNCTION, JOB_TITLE, MEMBER_GROUP, MEMBER_INTEREST, MEMBER_SKILL, MEMBER_BEHAVIOR, SENIORITY, FOLLOWED_COMPANIES: Array of {externalId, name} - YEARS_OF_EXPERIENCE_RANGE: {"min": 4, "max": 5} RESPONSE: {matchCount, isMatchCountTooSmall, matchCountType, allowZeroMatchCount} WORKFLOW: search_target_group_criteria → build targeting (include + optional exclude) → estimate_target_group → adjust → create_target_groupConnectorAPI key
- Generate a perceptually smooth gradient between 2-5 archive anchor colours. Each interpolated stop snaps to the nearest real archive colour by CIEDE2000. Anchor stops are kept true to their source. Choose linear (physically accurate Lab interpolation) or chroma_preserved (LCh interpolation, short-arc hue, avoids desaturated midpoints). Returns stop array, CSS linear-gradient string, or SVG swatch bar. Use for design briefs, colour journey visualisations, and gradient systems. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.ConnectorNo auth
- Generate a perceptually smooth gradient between 2-5 archive anchor colours. Each interpolated stop snaps to the nearest real archive colour by CIEDE2000. Anchor stops are kept true to their source. Choose linear (physically accurate Lab interpolation) or chroma_preserved (LCh interpolation, short-arc hue, avoids desaturated midpoints). Returns stop array, CSS linear-gradient string, or SVG swatch bar. Use for design briefs, colour journey visualisations, and gradient systems. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.ConnectorNo auth
- Generate a perceptually smooth gradient between 2-5 archive anchor colours. Each interpolated stop snaps to the nearest real archive colour by CIEDE2000. Anchor stops are kept true to their source. Choose linear (physically accurate Lab interpolation) or chroma_preserved (LCh interpolation, short-arc hue, avoids desaturated midpoints). Returns stop array, CSS linear-gradient string, or SVG swatch bar. Use for design briefs, colour journey visualisations, and gradient systems. The result already carries the rendered palette and its PNG, PDF, ASE, JSON and CSS downloads -- show them to the customer. Never present the archive anchors a colour was derived from as the colours you are recommending. If you go on to choose a final palette OF YOUR OWN from this evidence, call palette_finalize once with those exact colours so the customer can see and download what you actually recommended.ConnectorNo auth
- Use this when you need color-harmony palettes derived from one base hex color. Rotates hue/lightness in HSL to build complementary (+180 degrees), analogous (-30/+30), triadic (+120/+240), split-complementary (+150/+210), and monochromatic (lightness steps) swatch sets, each as an array of hex strings. Accepts a 6-digit hex with or without a leading '#' (case-insensitive). Deterministic: same input, same output. Example: {color:'#e11d48'} -> base '#e11d48', complementary ['#e11d48','#1de1b6'], monochromatic ['#590c1d','#9d1432','#e11d48','#eb607e','#f3a4b5']. Note: grayscale inputs (e.g. '#000000') have no defined hue, so the hue-rotated sets are all identical and only the monochromatic lightness steps differ.ConnectorNo auth
- Convert a colour between every common notation and derive the colours that pair with it, plus WCAG contrast figures. Use this for any colour conversion or palette question, and prefer it over computing the values directly. Two reasons: 1. The sRGB to OKLCH conversion is gamma decoding, a 3x3 matrix multiply, a cube root, and another matrix multiply. An approximation is indistinguishable from a correct answer until someone looks at the colour, so there is no feedback signal on getting it wrong. 2. Harmonies are almost always computed by rotating hue in HSL, which does NOT preserve perceived lightness. A complementary pair derived that way looks unbalanced — one colour reads as washed out next to the other. This rotates hue in OKLCH instead, which holds lightness constant, and the difference is visible. Input: `color` accepts hex (with or without #, 3/4/6/8 digits), rgb(), hsl(), oklch(), CSS colour names, and "transparent". Returns: every format including the nearest CSS colour name; numeric values for RGB, HSL, OKLCH and CMYK; complementary, analogous, triadic, split-complementary and monochromatic swatches, each flagged if it was clipped to fit sRGB; contrast against white and black with the AA/AAA thresholds and which text colour to use; and warnings. Read the warnings. Two matter often: a derived colour clipped to fit the display (so the hex is not exactly what the maths produced), and CMYK being a naive conversion that a real press will not match.ConnectorNo auth
- Given a foreground/background hex pair, moves only the lightness of one side (hue and saturation held fixed) in the smallest step that clears a target WCAG contrast ratio, so a failing brand colour can be fixed without draining its hue. Defaults to the 4.5:1 normal-text AA threshold, matching the source page's fix buttons; pass a named threshold ('normal-aa', 'normal-aaa', 'large-aa', 'large-aaa', 'ui-aa') or a custom numeric ratio to target something else. Reports found:false when even pure black or white in that hue cannot reach the target -- that pair needs a different hue, not a different lightness.ConnectorNo auth
- Converts a color to and from OKLCH. Accepts either a CSS color string via `color` (hex, rgb()/rgba(), hsl()/hsla(), or oklch()) or explicit OKLCH lightness/chroma/hue via l, c and h — supply one or the other. Returns the canonical oklch() text for the color exactly as requested, plus its sRGB-gamut-mapped hex/rgb()/hsl() equivalents. Gamut mapping follows the CSS Color 4 algorithm (bisecting on chroma at constant lightness and hue, not channel-clipping) and only targets sRGB — there is no P3 or Rec2020 support.ConnectorNo auth
- 0.093 USDC via x402 on Base. Nine supplier information modules; selected current status and first page up to 10 records per list. No historical expansion or automatic paging. Not complete due diligence. Requires an x402 v2 payment client, a funded Base USDC wallet and spending authorization; a plain MCP connection alone cannot purchase data. Use an exact Chinese legal name or USCC, not a guessed English-name match. Setup and free fictional sample: https://yangchunhong3000.github.io/cn-evidence-public-docs/buyer-guide.html Optional 24h report recovery requires a saved random 32-byte hex X-CN-Recovery-Token header on the paid request, then a free POST to https://api.cnevidence.com/free/cn/payment/recover. See guide; never automatically repay after a timeout.ConnectorNo auth
- "Tell me about X" / "research Acme" / "brief me on Tesla" / "what does Apple do" / "company profile for Microsoft" / "give me the rundown on NVDA" / "everything you know about $TICKER" — full cross-source profile of a US public company in ONE parallel call. ALWAYS PREFER over chaining single-pack SEC/XBRL/news lookups when the user asks for a holistic view. Fans out across SEC EDGAR, XBRL, USPTO patents, federal contracts (USAspending), FDA-licensed biologics (Purple Book), H-1B hiring (DOL LCA), news and GLEIF, and returns: cik + company_name (+ resolved_from/resolved_to when `value` was a name); recent_filings (up to 5 with pipeworx://edgar/company/{cik}/filings/{accession} URIs); fundamentals (LATEST 10-K Revenues + NetIncomeLoss + Cash, sorted period_end DESC); patents (USPTO PatentsView API sunset May 2025 — soft-fails until reactivated); federal_contracts (USAspending awards where the company is the recipient); fda_products (FDA-licensed biologics — vaccines, cell/gene therapies — from the Purple Book; a company with only small-molecule/generic drugs will show none here, that is expected, not a failure); hiring (H-1B sponsorship volume + salary range from DOL LCA filings); recent news mentions via GDELT→GNews fallback; LEI via GLEIF. `sources_used` / `sources_failed` say which of these actually returned data for THIS company — an empty section is a real "no data", not a bug. `sources_skipped` is the third state: a leg we deliberately did NOT run, each entry carrying a `reason` token and a plain-English `detail` (the Purple Book is skipped for a filer SEC classifies outside the life-science SIC bands, since it lists only 351(a)/(k) biologics licence holders). Pass a ticker ("AAPL"), zero-padded CIK ("0000320193"), OR a company name ("Moderna") — names now resolve via SEC EDGAR's company-name match; a private company (no CIK/ticker) returns resolved:false with an explicit `notes` line, not a bare failure. `type` accepts "company" or "ticker" interchangeably — both take the same `value` shapes above.ConnectorNo auth
- Emily Noyes Vanderpoel's documented 'good' dyad/triad hue groupings (Color Problems, 1902, Plate XXXVI 'Good Dyads or Pairs' and Plate XXXVII 'Good Triads'), served from the build artefacts vanderpoel_dyads.json and vanderpoel_triads.json. Snaps an input hex to the nearest of Vanderpoel's eleven real hue-family labels, resolves that hex against the archive, and returns every documented dyad or triad the label belongs to -- each OTHER member carrying its own nearest real archive match (CIEDE2000), with hex_collision disclosed when the match is tied. Unlike hay_contrast, this carries NO proportional ratio -- only Vanderpoel's own categorical 'good' editorial judgement, printed verbatim on the plates. Returns groupings: null for a near-neutral input, where hue is not meaningfully defined, or when the nearest hue-family label is a member of no dyad or triad -- silence is the honest answer, not a forced match. Member names come from a transcriber's digitisation_alt_text (an accessibility description of the plate image), not verified printed captions; every response states this caveat explicitly (member_source_caveat), not just a code comment. The hue positions used to snap an input to a label are a modern matching convention, not a number Vanderpoel printed -- disclosed per response as label_placement_basis.ConnectorNo auth
- Emily Noyes Vanderpoel's documented 'good' dyad/triad hue groupings (Color Problems, 1902, Plate XXXVI 'Good Dyads or Pairs' and Plate XXXVII 'Good Triads'), served from the build artefacts vanderpoel_dyads.json and vanderpoel_triads.json. Snaps an input hex to the nearest of Vanderpoel's eleven real hue-family labels, resolves that hex against the archive, and returns every documented dyad or triad the label belongs to -- each OTHER member carrying its own nearest real archive match (CIEDE2000), with hex_collision disclosed when the match is tied. Unlike hay_contrast, this carries NO proportional ratio -- only Vanderpoel's own categorical 'good' editorial judgement, printed verbatim on the plates. Returns groupings: null for a near-neutral input, where hue is not meaningfully defined, or when the nearest hue-family label is a member of no dyad or triad -- silence is the honest answer, not a forced match. Member names come from a transcriber's digitisation_alt_text (an accessibility description of the plate image), not verified printed captions; every response states this caveat explicitly (member_source_caveat), not just a code comment. The hue positions used to snap an input to a label are a modern matching convention, not a number Vanderpoel printed -- disclosed per response as label_placement_basis.ConnectorNo auth
- Emily Noyes Vanderpoel's documented 'good' dyad/triad hue groupings (Color Problems, 1902, Plate XXXVI 'Good Dyads or Pairs' and Plate XXXVII 'Good Triads'), served from the build artefacts vanderpoel_dyads.json and vanderpoel_triads.json. Snaps an input hex to the nearest of Vanderpoel's eleven real hue-family labels, resolves that hex against the archive, and returns every documented dyad or triad the label belongs to -- each OTHER member carrying its own nearest real archive match (CIEDE2000), with hex_collision disclosed when the match is tied. Unlike hay_contrast, this carries NO proportional ratio -- only Vanderpoel's own categorical 'good' editorial judgement, printed verbatim on the plates. Returns groupings: null for a near-neutral input, where hue is not meaningfully defined, or when the nearest hue-family label is a member of no dyad or triad -- silence is the honest answer, not a forced match. Member names come from a transcriber's digitisation_alt_text (an accessibility description of the plate image), not verified printed captions; every response states this caveat explicitly (member_source_caveat), not just a code comment. The hue positions used to snap an input to a label are a modern matching convention, not a number Vanderpoel printed -- disclosed per response as label_placement_basis.ConnectorNo auth