Skip to main content
Glama

Import from an external source

import_from_source
Read-onlyIdempotent

Import a recipe or protocol from a URL or service into a program. source: spoonacular, themealdb (recipes); protocolsio, opentrons, benchling (lab); cooklang (.cook URL). action: search (no account needed), import (query = URL or id), random. import, random and benchling need the user's Rhylthyme account. enrich: true splits an import into parallel tracks. Returns the program.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textNoPasted source (an Opentrons .py) instead of a URL.
queryNoKeywords (search), or the URL or id (import).
tokenNoAccess token from the login tool. Omit when the account is connected.
actionYes
enrichNoWith action='import': split the import into parallel tracks with cross-track triggers. One model call, capped per day.
sourceYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. Changed4 schema fields changed
    • changedInput schema / properties / enrich / description
      Previous value: -"Split the import into parallel tracks with cross-track triggers (action='import' only). Runs the relationship turn of the plan_schedule prompt server-side against the imported step list: steps, durations and resources are kept as imported, tracks and start triggers are inferred, and any step the model adds is marked `metadata.inferred`. Costs a model call and is capped per day; if it fails you still get the un-enriched program."New value: +"With action='import': split the import into parallel tracks with cross-track triggers. One model call, capped per day."
    • changedInput schema / properties / query / description
      Previous value: -"Search keywords (search), or the URL / id to import (import)."New value: +"Keywords (search), or the URL or id (import)."
    • changedInput schema / properties / text / description
      Previous value: -"Raw source text (Opentrons .py) when the user pasted it instead of a URL."New value: +"Pasted source (an Opentrons .py) instead of a URL."
    • changedInput schema / properties / token / description
      Previous value: -"User's Rhylthyme access token from the **login** tool. Required for action='import' and action='random' on every source, and for anything with source='benchling'. Not needed for action='search' on public sources."New value: +"Access token from the login tool. Omit when the account is connected."
  3. First observed

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context the annotations lack: which actions require the user's Rhylthyme account, and that enrich kicks off parallel tracks consuming one model call capped per day. It is silent on error/partial-import behavior, but the incremental value over annotations is real.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense and front-loaded: the core purpose leads, then source taxonomy, then action semantics, then auth and enrich. The telegraphic fragment style ('action: search (no account needed), import ...') is compressed but readable, and no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter, no-output-schema tool, the description covers purpose, source/action enums, auth prerequisites, and the enrich modifier, and notes the return ('Returns the program'). Remaining omissions (text parameter interplay, token handling) are covered by schema descriptions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

At 67% schema coverage the schema does much of the work, but the description adds meaning beyond it: it groups the source enum values into recipes/lab/cooklang and ties query to the action ('query = URL or id'). text and token are left to the schema descriptions, and the description omits that action='import' can also draw from pasted 'text', a minor gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Import a recipe or protocol from a URL or service into a program,' and enumerates the external sources grouped by domain (recipes vs lab). It does not, however, distinguish itself from the sibling import_text (pasted-text path) or load_program, so the agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description spells out the three action modes and their conditions — search needs no account, import takes a URL or id, random is a discovery path — plus the account requirement for import/random/benchling. That is concrete when-to-use guidance for the tool's own modes, but it gives no guidance on choosing this tool over siblings such as import_text or search_public_recipes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.