Thogits are the core entities in the system. These tools handle creating, reading, updating, deleting, and searching thogits.
Create a new thogit with optional tags and field values.
Name Type Required Description namestring Yes Thogit name descriptionstring Yes Thogit description tagsarray No Tags to apply, each with tag_ref and optional field_values
Each tag entry has:
Name Type Required Description tag_refobject Yes {"New": {name, fields, ...}} or {"Existing": "ULID"}field_valuesobject No Field values to set. Omitted fields default to null.
Schema Type Value Format Example String "text""hello"Number 423.14Boolean true / falsetrueDate "YYYY-MM-DD" or "YYYY-MM-DDTHH:MM:SS""2025-01-15"Reference "ULID""01JEXAMPLE0000000000THOGIT"Select (no data) {"variant": "name"}{"variant": "todo"}Select (with data) {"variant": "name", "data": value}{"variant": "blocked", "data": "waiting on review"}MultiSelect ["a", "b"]["bug", "feature"]Null / unset null or omit
// Request — create a thogit with an existing tag
"name" : " Implement user authentication " ,
"description" : " Add login/logout with session cookies and OAuth support " ,
"tag_ref" : { "Existing" : " 01JEXAMPLE00000000000TAGID " },
"status" : { "variant" : " todo " },
// Response — returns the full thogit with resolved tags
"text" : " { \n \" id \" : \" 01JEXAMPLE0000000000THOGIT \" , \n \" name \" : \" Implement user authentication \" , \n \" description \" : \" Add login/logout with session cookies and OAuth support \" , \n \" tags \" : [ \n { \n \" tag \" : { \" id \" : \" 01JEXAMPLE00000000000TAGID \" , \" name \" : \" Task \" , ... }, \n \" field_values \" : { \" status \" : { \" variant \" : \" todo \" }, \" priority \" : 8, \" due \" : \" 2025-02-01 \" , \" labels \" : [ \" feature \" ] }, \n \" schema_version \" : 1 \n } \n ], \n \" created_at \" : \" 2025-01-15T10:00:00Z \" , \n \" updated_at \" : \" 2025-01-15T10:00:00Z \"\n } "
Get a single thogit by its ID.
Name Type Required Description thogit_idstring Yes Thogit ULID
"thogit_id" : " 01JEXAMPLE0000000000THOGIT "
"text" : " { \n \" id \" : \" 01JEXAMPLE0000000000THOGIT \" , \n \" name \" : \" Implement user authentication \" , \n \" description \" : \" Add login/logout with session cookies and OAuth support \" , \n \" tags \" : [...], \n \" created_at \" : \" 2025-01-15T10:00:00Z \" , \n \" updated_at \" : \" 2025-01-15T10:00:00Z \"\n } "
Update a thogit’s name and/or description.
Name Type Required Description thogit_idstring Yes Thogit ULID namestring No New name descriptionstring No New description
"thogit_id" : " 01JEXAMPLE0000000000THOGIT " ,
"name" : " Implement user auth (OAuth + sessions) "
// Response — returns updated thogit
"text" : " { \n \" id \" : \" 01JEXAMPLE0000000000THOGIT \" , \n \" name \" : \" Implement user auth (OAuth + sessions) \" , \n ... \n } "
Soft-delete a thogit. It can be restored later with restore_thogit.
Name Type Required Description thogit_idstring Yes Thogit ULID
"thogit_id" : " 01JEXAMPLE0000000000THOGIT "
// Response — returns the deleted thogit
"text" : " { \n \" id \" : \" 01JEXAMPLE0000000000THOGIT \" , \n \" name \" : \" Implement user auth (OAuth + sessions) \" , \n ... \n } "
Search thogits with an optional filter. Pass no filter (or null) to get all thogits.
Name Type Required Description filterThogitFilter No Filter object, or null/omitted for all thogits
The filter supports a flat key-value format with dot notation for field access.
Filter Example Full-text search {"search": "authentication"}Has tag (by name or ID) {"has_tag": "Task"}Direct equality {"Task.priority": 8}Null check {"Task.due": null}
Use an operator object for comparisons:
Operator Description Example eq / equalsEqual {"Task.priority": {"eq": 5}}neqNot equal {"Task.priority": {"neq": 0}}gtGreater than {"Task.priority": {"gt": 6}}gteGreater than or equal {"Task.priority": {"gte": 6}}ltLess than {"Task.priority": {"lt": 3}}lteLess than or equal {"Task.priority": {"lte": 3}}containsString contains {"Task.title": {"contains": "auth"}}starts_withString starts with {"Task.title": {"starts_with": "Impl"}}inValue in set {"Task.priority": {"in": [1, 2, 3]}}existsField exists (not null) {"Task.due": {"exists": true}}is_nullField is null {"Task.due": {"is_null": true}}
Operator Description Example matchMatch variant name {"Task.status": {"match": "done"}}match + whereMatch variant with data filter {"Task.status": {"match": "blocked", "where": {"contains": "review"}}}select_gtVariant ordering (greater than) {"Task.status": {"select_gt": "todo"}}select_gteVariant ordering (>=) {"Task.status": {"select_gte": "in_progress"}}select_ltVariant ordering (less than) {"Task.status": {"select_lt": "done"}}select_lteVariant ordering (<=) {"Task.status": {"select_lte": "in_progress"}}
Use -> to traverse Reference fields and filter on the referenced thogit:
// Filter by a field on the referenced thogit's tag
{ "Task.assignee->Person.name" : { "contains" : " Alice " }}
// Filter by the referenced thogit's name
{ "Task.assignee->name" : { "contains" : " Alice " }}
Combinator Example AND {"and": [{"has_tag": "Task"}, {"Task.priority": {"gt": 5}}]}OR {"or": [{"Task.status": {"match": "todo"}}, {"Task.status": {"match": "in_progress"}}]}NOT {"not": {"Task.status": {"match": "done"}}}
// Request — find high-priority open tasks due before March 2025
{ "Task.priority" : { "gte" : 7 } },
{ "not" : { "Task.status" : { "match" : " done " } } },
{ "Task.due" : { "lt" : " 2025-03-01 " } }
"text" : " [ \n { \n \" id \" : \" 01JEXAMPLE0000000000THOGIT \" , \n \" name \" : \" Implement user authentication \" , \n \" tags \" : [ \n { \n \" tag \" : { \" name \" : \" Task \" , ... }, \n \" field_values \" : { \" status \" : { \" variant \" : \" todo \" }, \" priority \" : 8, \" due \" : \" 2025-02-01 \" } \n } \n ] \n } \n ] "