diff --git a/.gitignore b/.gitignore
index 309f726fe1e..357f3e1bf8e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,3 +50,4 @@ kub.yaml
loadtest_kub.yaml
litellm/proxy/_new_secret_config.yaml
litellm/proxy/_new_secret_config.yaml
+litellm/proxy/_super_secret_config.yaml
diff --git a/docs/my-website/docs/observability/greenscale_integration.md b/docs/my-website/docs/observability/greenscale_integration.md
new file mode 100644
index 00000000000..8fc2b7ea312
--- /dev/null
+++ b/docs/my-website/docs/observability/greenscale_integration.md
@@ -0,0 +1,68 @@
+# Greenscale Tutorial
+
+[Greenscale](https://greenscale.ai/) is a production monitoring platform for your LLM-powered app that provides you granular key insights into your GenAI spending and responsible usage. Greenscale only captures metadata to minimize the exposure risk of personally identifiable information (PII).
+
+## Getting Started
+
+Use Greenscale to log requests across all LLM Providers
+
+liteLLM provides `callbacks`, making it easy for you to log data depending on the status of your responses.
+
+## Using Callbacks
+
+First, email `hello@greenscale.ai` to get an API_KEY.
+
+Use just 1 line of code, to instantly log your responses **across all providers** with Greenscale:
+
+```python
+litellm.success_callback = ["greenscale"]
+```
+
+### Complete code
+
+```python
+from litellm import completion
+
+## set env variables
+os.environ['GREENSCALE_API_KEY'] = 'your-greenscale-api-key'
+os.environ['GREENSCALE_ENDPOINT'] = 'greenscale-endpoint'
+os.environ["OPENAI_API_KEY"]= ""
+
+# set callback
+litellm.success_callback = ["greenscale"]
+
+#openai call
+response = completion(
+ model="gpt-3.5-turbo",
+ messages=[{"role": "user", "content": "Hi š - i'm openai"}]
+ metadata={
+ "greenscale_project": "acme-project",
+ "greenscale_application": "acme-application"
+ }
+)
+```
+
+## Additional information in metadata
+
+You can send any additional information to Greenscale by using the `metadata` field in completion and `greenscale_` prefix. This can be useful for sending metadata about the request, such as the project and application name, customer_id, enviornment, or any other information you want to track usage. `greenscale_project` and `greenscale_application` are required fields.
+
+```python
+#openai call with additional metadata
+response = completion(
+ model="gpt-3.5-turbo",
+ messages=[
+ {"role": "user", "content": "Hi š - i'm openai"}
+ ],
+ metadata={
+ "greenscale_project": "acme-project",
+ "greenscale_application": "acme-application",
+ "greenscale_customer_id": "customer-123"
+ }
+)
+```
+
+## Support & Talk with Greenscale Team
+
+- [Schedule Demo š](https://calendly.com/nandesh/greenscale)
+- [Website š»](https://greenscale.ai)
+- Our email āļø `hello@greenscale.ai`
diff --git a/docs/my-website/docs/providers/anthropic.md b/docs/my-website/docs/providers/anthropic.md
index 0f9ba88ff37..5bb47d780d0 100644
--- a/docs/my-website/docs/providers/anthropic.md
+++ b/docs/my-website/docs/providers/anthropic.md
@@ -224,6 +224,91 @@ assert isinstance(
```
+### Parallel Function Calling
+
+Here's how to pass the result of a function call back to an anthropic model:
+
+```python
+from litellm import completion
+import os
+
+os.environ["ANTHROPIC_API_KEY"] = "sk-ant.."
+
+
+litellm.set_verbose = True
+
+### 1ST FUNCTION CALL ###
+tools = [
+ {
+ "type": "function",
+ "function": {
+ "name": "get_current_weather",
+ "description": "Get the current weather in a given location",
+ "parameters": {
+ "type": "object",
+ "properties": {
+ "location": {
+ "type": "string",
+ "description": "The city and state, e.g. San Francisco, CA",
+ },
+ "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
+ },
+ "required": ["location"],
+ },
+ },
+ }
+]
+messages = [
+ {
+ "role": "user",
+ "content": "What's the weather like in Boston today in Fahrenheit?",
+ }
+]
+try:
+ # test without max tokens
+ response = completion(
+ model="anthropic/claude-3-opus-20240229",
+ messages=messages,
+ tools=tools,
+ tool_choice="auto",
+ )
+ # Add any assertions, here to check response args
+ print(response)
+ assert isinstance(response.choices[0].message.tool_calls[0].function.name, str)
+ assert isinstance(
+ response.choices[0].message.tool_calls[0].function.arguments, str
+ )
+
+ messages.append(
+ response.choices[0].message.model_dump()
+ ) # Add assistant tool invokes
+ tool_result = (
+ '{"location": "Boston", "temperature": "72", "unit": "fahrenheit"}'
+ )
+ # Add user submitted tool results in the OpenAI format
+ messages.append(
+ {
+ "tool_call_id": response.choices[0].message.tool_calls[0].id,
+ "role": "tool",
+ "name": response.choices[0].message.tool_calls[0].function.name,
+ "content": tool_result,
+ }
+ )
+ ### 2ND FUNCTION CALL ###
+ # In the second response, Claude should deduce answer from tool results
+ second_response = completion(
+ model="anthropic/claude-3-opus-20240229",
+ messages=messages,
+ tools=tools,
+ tool_choice="auto",
+ )
+ print(second_response)
+except Exception as e:
+ print(f"An error occurred - {str(e)}")
+```
+
+s/o @[Shekhar Patnaik](https://www.linkedin.com/in/patnaikshekhar) for requesting this!
+
## Usage - Vision
```python
diff --git a/docs/my-website/docs/providers/replicate.md b/docs/my-website/docs/providers/replicate.md
index 3384ba35c28..8e71d3ac999 100644
--- a/docs/my-website/docs/providers/replicate.md
+++ b/docs/my-website/docs/providers/replicate.md
@@ -1,7 +1,16 @@
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
# Replicate
LiteLLM supports all models on Replicate
+
+## Usage
+
+"
+ eos_token: ""
+ max_tokens: 4096
+```
+
+