         @add_component React.DOM.h3 {}, 'Parameters'
         @help 'graphite_parameters'
 
-    fn 'params', 'Generates the parameters for a Graphite render call', (args...) ->
+    doc 'params',
+      'Generates the parameters for a render API call'
+      '''
+      `params` interprets its arguments in the same way as [`get_data`](help:graphite.get_data),
+      but simply returns the arguments that would be passed to the API.
+
+      For example:
+      ```
+      options areaMode: 'stacked'
+      object params sumSeries(q('twitter.*.tweetcount')), width: 1024, height: 768
+      ```
+      '''
+
+    fn 'params', (args...) ->
       result = args_to_params @, args
       @value result
 
-    component_fn 'url', 'Generates a URL for a Graphite image', (args...) ->
+    component_fn 'url', 'Generates a URL for a graph image', (args...) ->
       params = args_to_params @, args
       url = graphite.render_url params
       React.DOM.pre {}, React.DOM.a {href: url, target: 'blank'}, url
 
-    fn 'img', 'Renders a Graphite graph image', (args...) ->
+    fn 'img', 'Renders a graph image', (args...) ->
       params = args_to_params @, args
       url = graphite.render_url params
       @async ->


    default_target_command = 'img'

    fn 'q', 'Escapes a Graphite metric query', (targets...) ->
      for t in targets
        unless _.isString t
          throw new TypeError "#{t} is not a string"

  Html = require 'html'
  Documentation = require 'documentation'

  graphite = modules.create 'graphite', ({fn, component_fn, cmd, settings, doc}) ->
    build_function_doc = (ctx, doc) ->
      FunctionDocsComponent {ctx, docs: docs.function_docs[doc.function_name]}

