Resource Data and Writing Tools
StoryCADLib ships with built-in reference data designed to help fiction writers develop their stories. The API exposes this data through discovery methods that follow a consistent pattern: call a listing method first, then drill into specifics.
Resource Categories
| Resource | API Entry Point | Steps | Purpose |
|---|---|---|---|
| Example Lists | GetExamples |
1 | Valid values for element properties |
| Conflict Builder | GetConflictCategories |
4 | Structured conflict development |
| Key Questions | GetKeyQuestionElements |
2 | Guided element development prompts |
| Master Plots | GetMasterPlotNames |
3 | Story structure templates (Tobias) |
| Stock Scenes | GetStockSceneCategories |
2 | Scene inspiration by genre |
| Beat Sheets | GetBeatSheetNames |
3+ | Story structure frameworks |
Example Lists
The simplest resource: a single call returns valid values for a property.
var tones = api.GetExamples("Tone").Payload;
// ["Humorous", "Serious", "Dark", "Light", ...]
tones = sc.get_examples("Tone")
# ["Humorous", "Serious", "Dark", "Light", ...]
Available property names: Tone, Role, Archetype, Sex, Age, Build, Complexion, EyeColor, HairColor, HairStyle, Demeanor, Enneagram, Intelligence, Values, Abnormality, Focus, Adventuresome, Aggression, Confidence, Conscientiousness, Creativity, Dominance, Enthusiasm, Assurance, Sensitivity, Shrewdness, Sociability, Stability, ScenePurpose, SceneType, SceneValueExchange, SettingCountry, Locale, Season
These values are suggestions, not constraints. You can pass any string to UpdateElementProperty: the examples help users and AI agents discover the intended vocabulary.
See Element Types and Properties for which properties accept which example lists.
Conflict Builder
A 4-step workflow for developing story conflicts. Each step narrows the scope.
| Step | Method | Input | Output |
|---|---|---|---|
| 1 | GetConflictCategories() |
(none) | Category names |
| 2 | GetConflictSubcategories(category) |
Category name | Subcategory names |
| 3 | GetConflictExamples(category, subcategory) |
Category + subcategory | Conflict descriptions |
| 4 | ApplyConflictToProtagonist(problemGuid, text) |
Problem GUID + text | Applied to Problem |
| 4 | ApplyConflictToAntagonist(problemGuid, text) |
Problem GUID + text | Applied to Problem |
Categories include: Relationship, Situational, Inner Conflict, Paranormal, Criminal activities, Mystery and suspense, Social drama, Romantic
Step 4 has two variants: one for the protagonist’s conflict, one for the antagonist’s. You can also use custom text instead of a value from step 3.
See Resource Workflows for a complete code example.
Key Questions
A 2-step workflow that returns development prompts organized by topic.
| Step | Method | Input | Output |
|---|---|---|---|
| 1 | GetKeyQuestionElements() |
(none) | Element type names |
| 2 | GetKeyQuestions(elementType) |
Element type name | (Topic, Question) tuples |
Common element types: Character, Problem, Scene, Setting, Overview
Each question is a prompt to help the author think about a specific aspect of the element. For example, Character key questions might include topics like “Motivation”, “Backstory”, and “Relationships” with specific questions for each.
See Resource Workflows for a complete code example.
Master Plots
A 3-step workflow based on Tobias’s 20 Master Plots. Each plot pattern includes descriptive notes and a scene breakdown.
| Step | Method | Input | Output |
|---|---|---|---|
| 1 | GetMasterPlotNames() |
(none) | Plot pattern names |
| 2 | GetMasterPlotNotes(plotName) |
Plot name | Descriptive text |
| 3 | GetMasterPlotScenes(plotName) |
Plot name | (SceneTitle, Notes) tuples |
Available plots: Quest, Adventure, Pursuit, Rescue, Escape, Revenge, The Riddle, Rivalry, Underdog, Temptation, Metamorphosis, Transformation, Maturation, Love, Forbidden Love, Sacrifice, Discovery, Wretched Excess, Ascension, Descension
The scene breakdown from step 3 can be used to create Scene elements with AddElement, giving the story a structure based on a classic plot pattern.
See Resource Workflows for a complete code example.
Stock Scenes
A 2-step workflow for scene inspiration organized by genre or purpose.
| Step | Method | Input | Output |
|---|---|---|---|
| 1 | GetStockSceneCategories() |
(none) | Category names |
| 2 | GetStockScenes(category) |
Category name | Scene descriptions |
Stock scene descriptions can be used as the Description property when creating Scene elements, or as inspiration for more detailed scene development.
See Resource Workflows for a complete code example.
Beat Sheets
Beat sheets are story structure frameworks (Three Act Structure, Hero’s Journey, Save the Cat, etc.) that define a sequence of narrative beats. They have the most complex workflow because they integrate with the Problem element’s structure.
| Step | Method | Input | Output |
|---|---|---|---|
| 1 | GetBeatSheetNames() |
(none) | Template names |
| 2 | GetBeatSheet(name) |
Template name | (Description, Beats) |
| 3 | ApplyBeatSheetToProblem(problemGuid, name) |
Problem GUID + name | Beats applied |
| 4+ | AssignElementToBeat, CreateBeat, etc. |
Various | Customize structure |
Beat sheets are covered in full detail in Beat Sheet Operations.
Access Pattern Summary
All resource APIs follow the same pattern:
- Discover: call a listing method to see what’s available
- Inspect: call a detail method to understand a specific item
- Apply: use the data to create or update story elements
No resource method modifies the story model until the final “apply” step. The discovery and inspection steps are read-only and safe to call at any time.